(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       145,          7]
NotebookDataLength[     45346,       1198]
NotebookOptionsPosition[     41747,       1088]
NotebookOutlinePosition[     42525,       1115]
CellTagsIndexPosition[     42482,       1112]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[{
 StyleBox["In this example we use the package IntroToSymmetry.m to work out \
the point group of the nonlinear Schr\[ODoubleDot]edinger equation\n\n",
  FontSize->18,
  FontWeight->"Plain"],
 "\[CapitalPsi]",
 StyleBox["t-i(h/(2Pi))/(2m))(",
  FontSize->18,
  FontWeight->"Plain"],
 "\[CapitalPsi]",
 StyleBox["xx+",
  FontSize->18,
  FontWeight->"Plain"],
 "\[CapitalPsi]",
 StyleBox["yy+",
  FontSize->18,
  FontWeight->"Plain"],
 "\[CapitalPsi]",
 StyleBox["zz)-i(2Pi/h)",
  FontSize->18,
  FontWeight->"Plain"],
 "V",
 StyleBox["(r)",
  FontSize->18,
  FontWeight->"Plain"],
 "\[CapitalPsi]",
 StyleBox["=0. \n \nwhere i=Sqrt[-1]. ",
  FontSize->18,
  FontWeight->"Plain"]
}], "Text",
 CellChangeTimes->{{3.483718600675295*^9, 3.483718633066815*^9}, {
   3.4837187168465643`*^9, 3.483718822218581*^9}, 3.483718960558926*^9, {
   3.483719024166946*^9, 3.483719080215481*^9}, {3.4837191631193438`*^9, 
   3.4837192058728743`*^9}},
 ImageRegion->{{0, 1}, {0, 1}},
 FontSize->14],

Cell["Clear all symbols in the current context.", "Text",
 CellChangeTimes->{{3.4715644485587473`*^9, 3.47156448605101*^9}}],

Cell[BoxData[
 RowBox[{"ClearAll", "[", 
  RowBox[{"Evaluate", "[", 
   RowBox[{
    RowBox[{"Context", "[", "]"}], "<>", "\"\<*\>\""}], "]"}], "]"}]], "Input"],

Cell["First read in the package.", "Text"],

Cell["Needs[\"SymmetryAnalysis`IntroToSymmetry`\"]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["Enter the list of independent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"independentvariables", "=", 
   RowBox[{"{", 
    RowBox[{
    "\"\<x\>\"", ",", "\"\<y\>\"", ",", "\"\<z\>\"", ",", "\"\<t\>\""}], 
    "}"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.483718837445363*^9, 3.483718847843583*^9}}],

Cell[TextData[StyleBox["Enter the list of dependent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"dependentvariables", "=", 
   RowBox[{"{", "\"\<\[CapitalPsi]\>\"", "}"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.4837188609795923`*^9, 3.483718867467434*^9}, {
  3.483719094197464*^9, 3.4837190970093822`*^9}}],

Cell[TextData[StyleBox["Enter the list of function and/or constant names that \
need to be preserved when the equations are expressed in terms of generic \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"frozennames", "=", 
   RowBox[{"{", 
    RowBox[{"\"\<h\>\"", ",", "\"\<m\>\"", ",", "\"\<V\>\""}], "}"}]}], 
  ";"}]], "Input",
 CellChangeTimes->{{3.483718899592676*^9, 3.483718922526499*^9}}],

Cell[TextData[StyleBox["Enter the maximum derivative order of the \ninput \
equation(s).",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"p", "=", "2"}], ";"}]], "Input"],

Cell[TextData[StyleBox["The maximum derivative order that the infinitesimals \
are assumed to depend on is specified by the input parameter r. This \
parameter is only nonzero when the user is looking for Lie contact groups or \
Lie-Backlund groups. For the usual case where one is searching for point \
groups set r=0.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"r", "=", "0"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups ie. r=1 or \
greater one can, without loss of generality, leave the independent variables \
untransformed. The corresponding infinitesimals (the xse's) are set to zero \
by setting xseon=0. If one is searching for point groups then set xseon=1. \
The choice xseon=1 is also an option when looking for Lie-Backlund groups and \
this can be useful when looking for contact symmetries.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xseon", "=", "1"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups it is \
necessary to differentiate the input equations with respect to all \
independent variables producing derivatives of order p+r. \nThese higher \
order differential consequences are appended to the set of rules applied to \
the invariance condition. This process is carried out automatically when \
internalrules=1. For point groups the equation or equation system is the only \
rule or set of rules needed and one sets internalrules=0.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"internalrules", "=", "0"}], ";"}]], "Input"],

Cell["\<\
Construct the array of rules to be applied to the invariance condition.\
\>", "Text"],

Cell["\<\
rulesarray=
{\"D[\[CapitalPsi][x,y,z,t],t]->I*(h/(4*m*Pi))*(D[\[CapitalPsi][x,y,z,t],x,x]+\
D[\[CapitalPsi][x,y,z,t],y,y]+D[\[CapitalPsi][x,y,z,t],z,z])+I*(2*Pi/h)*V[x^2+\
y^2+z^2]*\[CapitalPsi][x,y,z,t]\"};\
\>", "Input",
 CellChangeTimes->{{3.4837191050620613`*^9, 3.48371910766502*^9}, {
  3.483719500070503*^9, 3.48371955110713*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
Enter the momentum equation as a string. The variables are as follows\
\>", "Text"],

Cell["\<\
inputequation=
\"D[\[CapitalPsi][x,y,z,t],t]-I*(h/(4*m*Pi))*(D[\[CapitalPsi][x,y,z,t],x,x]+D[\
\[CapitalPsi][x,y,z,t],y,y]+D[\[CapitalPsi][x,y,z,t],z,z])-I*(2*Pi/h)*V[x^2+y^\
2+z^2]*\[CapitalPsi][x,y,z,t]\";\
\>", "Input",
 CellChangeTimes->{{3.4837189499662333`*^9, 3.483718951086389*^9}, {
  3.483719115942284*^9, 3.483719129477581*^9}, {3.483719218825427*^9, 
  3.483719281148349*^9}, {3.48371931398206*^9, 3.4837194780949907`*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
Now work out the determining equations of the Lie point group which leaves \
equation1 invariant.  The Mathematica function Timing outputs the time \
required for the FindDeterminingEquations function to execute.\
\>", "Text"],

Cell[CellGroupData[{

Cell["\<\
Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation,rulesarray,internalrules]]\
\>", "Input",
 CellChangeTimes->{3.48371956637055*^9},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(47878872\\), the time used = \
\\!\\(248.86503700000003`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 47878872, 248.86503700000003`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473014861601*^9, 3.471566767346225*^9, 
  3.483719579872343*^9, 3.483719766502987*^9, 3.483748288344775*^9}],

Cell[BoxData["\<\"The function FindDeterminingEquations is nearly complete. \
The invariance condition has been created with all rules applied. The final \
step in the generation of the determining equations is to sum together terms \
in the table of invariance condition terms (called infinitesimaltable) that \
are multiplied by the same combination of products of free y derivatives. The \
result is the table infinitesimaltablesums corresponding to matching \
y-derivative expressions. If the invariance condition is long as it often is \
this process could take a long time since it requires sorting through the \
table infinitesimaltable once for each possible combination of y derivative \
products. This is the rate limiting step in the function \
FindDeterminingEquations.Virtually all other steps are quite fast including \
the generation of the extended derivatives of the infinitesimals.\"\>"], \
"Print",
 CellChangeTimes->{3.469473014861601*^9, 3.471566767346225*^9, 
  3.483719579872343*^9, 3.483719766502987*^9, 3.4837482888153467`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(33\\), the \
byte count of zdeterminingequations = \\!\\(8408\\), the memory in use = \
\\!\\(48319544\\), the time used = \\!\\(249.34777000000003`\\)\"\>",
  StringForm[
  "The determining equations have been expressed in terms of z-variables, the \
length of zdeterminingequations = ``, the byte count of zdeterminingequations \
= ``, the memory in use = ``, the time used = ``", 33, 8408, 48319544, 
   249.34777000000003`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473014861601*^9, 3.471566767346225*^9, 
  3.483719579872343*^9, 3.483719766502987*^9, 3.483748288865595*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(48320904\\), the time used = \\!\\(249.348085`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 48320904, 249.348085],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473014861601*^9, 3.471566767346225*^9, 
  3.483719579872343*^9, 3.483719766502987*^9, 3.483748288867614*^9}],

Cell[BoxData["\<\"FindDeterminingEquations has finished executing. You can \
look at the output in the table zdeterminingequations. Each entry in this \
table is a determining equation in string format expressed in terms of \
z-variables. Rules for converting between z-variables and conventional \
variables are contained in the table ztableofrules. To view the determining \
equations in terms of conventional variables use the command \
ToExpression[zdeterminingequations]/.ztableofrules. There are two other items \
the user may wish to look at; the equation converted to generic \
(x1,x2,...,y1,y2,...) variables is designated equationgenericvariables and \
the various derivatives of the equation that appear in the invariance \
condition can be viewed in the table invarconditiontable. Rules for \
converting between z-variables and generic variables are contained in the \
table ztableofrulesxy.\"\>"], "Print",
 CellChangeTimes->{3.469473014861601*^9, 3.471566767346225*^9, 
  3.483719579872343*^9, 3.483719766502987*^9, 3.483748288869282*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.4839159999999936`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.4694730150221853`*^9, 3.4715667674879*^9, 
  3.4837195804692583`*^9, 3.4837197670505867`*^9, 3.483748288871904*^9}]
}, Open  ]],

Cell["The determining equations of equation.", "Text",
 CellChangeTimes->{3.4837195942601013`*^9}],

Cell["zdeterminingequations;", "Input",
 CellChangeTimes->{{3.4837196229001427`*^9, 3.48371962750811*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["How many determining equations are there altogether?", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", "zdeterminingequations", "]"}]], "Input",
 CellChangeTimes->{3.4837196328133993`*^9}],

Cell[BoxData["33"], "Output",
 CellChangeTimes->{3.469473015346386*^9, 3.471566767812215*^9, 
  3.483719637429998*^9, 3.483719767137594*^9, 3.483748288944566*^9}]
}, Open  ]],

Cell["\<\
Now solve the determining equations in terms of multivariable polynomials. \
The Mathematica function Solve uses Gaussian elimination to solve a large \
number of linear equations for the polynomial coefficients. The time roughly \
follows

time/timeref=((number of equations)/(number of equationsref))^n

where the exponent is between 2.4 and 2.7. The Mathematica  function Timing \
outputs the time required for the SolveDeterminingEquations function to \
execute.\
\>", "Text"],

Cell[CellGroupData[{

Cell["\<\
Timing[SolveDeterminingEquations[
independentvariables,dependentvariables,r,xseon,zdeterminingequations,order=3]\
]\
\>", "Input",
 CellChangeTimes->{3.483719648070169*^9},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 InterpretationBox["\<\"The variable powertablelength is the number of terms \
required for each multivariate polynomial used for the infinitesimals. This \
number is determined by the choice of polynomial order and the number of \
zvariables. The time needed to solve the determining equations increases as \
powertable increases. powertablelength = \\!\\(56\\)\"\>",
  StringForm[
  "The variable powertablelength is the number of terms required for each \
multivariate polynomial used for the infinitesimals. This number is \
determined by the choice of polynomial order and the number of zvariables. \
The time needed to solve the determining equations increases as powertable \
increases. powertablelength = ``", 56],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.48374828900062*^9}],

Cell[BoxData["\<\"The polynomial expansions have been substituted into the \
determining equations. It is now time to collect the coefficients of various \
powers of zvariables into a table called table of coefficientsall. This step \
uses the function CoefficientList and is a fairly time consuming procedure.\"\
\>"], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289106883*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(48842440\\), The time = \\!\
\\(249.48177`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 48842440, 249.48177],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289108182*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(280\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 280],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289183766*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(611\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 611],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289186651*^9}],

Cell[BoxData["\<\"Now it we are ready to use the function Solve to find the \
nonzero polynomial coefficients corresponding to the symmetries of the input \
equation(s). This can take a while.\"\>"], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.48374828918894*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(49364520\\), The time = \\!\
\\(249.54789`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 49364520, 249.54789],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289190241*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289464881*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.4837482895007887`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(49701216\\), The time = \\!\
\\(249.82704`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 49701216, 249.82704],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289501997*^9}],

Cell[BoxData["\<\"You can look at the output in the tables xsefunctions and \
etafunctions. Each entry in these tables is an infinitesimal function in \
string format expressed in terms of z-variables and the group parameters. The \
output can also be viewed with the group parameters stripped away by looking \
at the table infinitesimalgroups. In either case you may wish to convert the \
z-variables to conventional variables using the table ztableofrules. \
\\n\\nKeep in mind that this function only finds solutions of the determining \
equations that are of polynomial form. The determining equations may admit \
solutions that involve transcendental functions and/or integrals. Note that \
arbitrary functions may appear in the infinitesimals and that these can be \
detected by running the package function SolveDeterminingEquations for \
several polynomial orders. If terms of ever increasing order appear, then an \
arbitrary function is indicated.\"\>"], "Print",
 CellChangeTimes->{3.469473015523747*^9, 3.4715667678498898`*^9, 
  3.483719656484531*^9, 3.483719767197167*^9, 3.483748289503996*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.4801429999999982`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.4694730155548267`*^9, 3.471566768303936*^9, 
  3.483719657100033*^9, 3.483719767738221*^9, 3.48374828950537*^9}]
}, Open  ]],

Cell["\<\
Here are the infinitesimal transformation functions for the independent \
variables.\
\>", "Text"],

Cell[CellGroupData[{

Cell["xsefunctions", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"xse1[z1_, z2_, z3_, z4_, z5_]=-(a21*z2) - a31*z3\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_, z4_, z5_]=a21*z1 - a34*z3\"\>", 
   ",", "\<\"xse3[z1_, z2_, z3_, z4_, z5_]=a31*z1 + a34*z2\"\>", 
   ",", "\<\"xse4[z1_, z2_, z3_, z4_, z5_]=a40\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.4694730156648207`*^9, 3.4715667684469643`*^9, 
  3.483719663342676*^9, 3.483719767890233*^9, 3.483748289630563*^9}]
}, Open  ]],

Cell["and for the dependent variables.", "Text"],

Cell[CellGroupData[{

Cell["etafunctions", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"{", "\<\"eta1[z1_, z2_, z3_, z4_, z5_]=b135*z5\"\>", 
  "}"}]], "Output",
 CellChangeTimes->{3.4694730157039137`*^9, 3.471566768497814*^9, 
  3.483719668694867*^9, 3.483719767947975*^9, 3.483748289684078*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{
  RowBox[{"infinitesimalgroupsxy", "=", 
   RowBox[{"infinitesimalgroups", "/.", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"z1", "\[Rule]", "x"}], ",", 
      RowBox[{"z2", "\[Rule]", "y"}], ",", 
      RowBox[{"z3", "\[Rule]", "w"}], ",", 
      RowBox[{"z4", "\[Rule]", "t"}], ",", 
      RowBox[{"z5", "\[Rule]", "\[CapitalPsi]"}]}], "}"}]}]}], ";"}]], "Input",\

 CellChangeTimes->{{3.483719676178247*^9, 3.4837196961289454`*^9}}],

Cell["\<\
Check the groups. xse's are on the left, eta's are on the right.\
\>", "Text"],

Cell[BoxData[
 RowBox[{"Column", "[", "infinitesimalgroupsxy", "]"}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "y"}], ",", "x", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "w"}], ",", "0", ",", "x", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{"-", "w"}], ",", "y", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "\[CapitalPsi]", "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4694730157818623`*^9, 3.47156676859687*^9, 
  3.483719703676008*^9, 3.483719768024272*^9, 3.483748289764126*^9}],

Cell["Check the infinitesimals in the determining equations.", "Text",
 CellChangeTimes->{{3.471145395559845*^9, 3.471145429404257*^9}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Simplify", "[", 
  RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], "]"}]], "Input",\

 CellChangeTimes->{{3.471145481019026*^9, 3.4711455173104143`*^9}, 
   3.471146122753789*^9, {3.47154140257237*^9, 3.471541418863482*^9}, {
   3.4715667761993*^9, 3.4715667786858253`*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True"}], 
  "}"}]], "Output",
 CellChangeTimes->{{3.471566768668359*^9, 3.4715667796222754`*^9}, 
   3.483719735626742*^9, 3.483719768100583*^9, 3.48374828981835*^9}]
}, Open  ]],

Cell["\<\
This is the five-dimensional Lie algebra of the Schr\[ODoubleDot]dinger \
equation. Create the commutator table.\
\>", "Text",
 CellChangeTimes->{{3.483719747603135*^9, 3.483719749361657*^9}}],

Cell[BoxData[
 RowBox[{"MakeCommutatorTable", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "dependentvariables", ",", 
   "infinitesimalgroupsxy"}], "]"}]], "Input"],

Cell[BoxData["\<\"MakeCommutatorTable has finished executing. You can look at \
the output in the table commutatortable. To present the output in the most \
readable form you may want view it as a matrix using \
MatrixForm[commutatortable]. Occasionally the entries in the commutatortable \
will have terms that cancel. To get rid of these terms use the function \
Simplify before viewing the table.\"\>"], "Print",
 CellChangeTimes->{3.469473015821404*^9, 3.4715667687295094`*^9, 
  3.483719735756675*^9, 3.483719768192048*^9, 3.483748289869335*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MatrixForm", "[", "commutatortable", "]"}]], "Input"],

Cell[BoxData[
 TagBox[
  RowBox[{"(", "\[NoBreak]", GridBox[{
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "w", ",", 
             RowBox[{"-", "y"}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "w"}], ",", "0", ",", "x", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", 
             RowBox[{"-", "w"}], ",", "y", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"w", ",", "0", ",", 
             RowBox[{"-", "x"}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> 
           {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]}
    },
    GridBoxAlignment->{
     "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, 
      "RowsIndexed" -> {}},
    GridBoxSpacings->{"Columns" -> {
        Offset[0.27999999999999997`], {
         Offset[0.7]}, 
        Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
        Offset[0.2], {
         Offset[0.4]}, 
        Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}],
  Function[BoxForm`e$, 
   MatrixForm[BoxForm`e$]]]], "Output",
 CellChangeTimes->{3.4694730158587217`*^9, 3.471566768799673*^9, 
  3.483719735825101*^9, 3.4837197682624073`*^9, 3.483748289933647*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MaxMemoryUsed", "[", " ", "]"}]], "Input"],

Cell[BoxData["5681607608"], "Output",
 CellChangeTimes->{
  3.469473015900687*^9, 3.471566768868834*^9, {3.483719760094808*^9, 
   3.483719768341942*^9}, 3.4837482900014267`*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{1199, 1010},
WindowMargins->{{71, Automatic}, {Automatic, 47}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowSelection->True,
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"0080001804P000000_82@?okonh34`9B;@<5:0?l00;m009H0UP0000068dB`0B`\n\
02d5X5k/02H80@4101P00BL?00400@00000000000000P0010000020D00000000\n\
0000000000000000000004T400002004",
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (February 18, 2009)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[545, 20, 995, 35, 116, "Text"],
Cell[1543, 57, 124, 1, 26, "Text"],
Cell[1670, 60, 160, 4, 27, "Input"],
Cell[1833, 66, 42, 0, 26, "Text"],
Cell[1878, 68, 93, 1, 27, "Input"],
Cell[1974, 71, 130, 2, 26, "Text"],
Cell[2107, 75, 263, 7, 27, "Input"],
Cell[2373, 84, 128, 2, 26, "Text"],
Cell[2504, 88, 247, 5, 27, "Input"],
Cell[2754, 95, 232, 4, 26, "Text"],
Cell[2989, 101, 229, 6, 27, "Input"],
Cell[3221, 109, 154, 3, 41, "Text"],
Cell[3378, 114, 67, 2, 27, "Input"],
Cell[3448, 118, 385, 6, 41, "Text"],
Cell[3836, 126, 67, 2, 27, "Input"],
Cell[3906, 130, 511, 7, 41, "Text"],
Cell[4420, 139, 71, 2, 27, "Input"],
Cell[4494, 143, 571, 8, 56, "Text"],
Cell[5068, 153, 79, 2, 27, "Input"],
Cell[5150, 157, 95, 2, 26, "Text"],
Cell[5248, 161, 379, 8, 40, "Input"],
Cell[5630, 171, 93, 2, 26, "Text"],
Cell[5726, 175, 477, 9, 40, "Input"],
Cell[6206, 186, 236, 4, 26, "Text"],
Cell[CellGroupData[{
Cell[6467, 194, 234, 6, 53, "Input"],
Cell[6704, 202, 490, 9, 20, "Print"],
Cell[7197, 213, 1052, 14, 96, "Print"],
Cell[8252, 229, 746, 12, 36, "Print"],
Cell[9001, 243, 439, 8, 20, "Print"],
Cell[9443, 253, 1052, 14, 111, "Print"],
Cell[10498, 269, 231, 4, 27, "Output"]
}, Open  ]],
Cell[10744, 276, 98, 1, 26, "Text"],
Cell[10845, 279, 138, 2, 27, "Input"],
Cell[10986, 283, 68, 0, 26, "Text"],
Cell[CellGroupData[{
Cell[11079, 287, 123, 2, 27, "Input"],
Cell[11205, 291, 162, 2, 27, "Output"]
}, Open  ]],
Cell[11382, 296, 490, 11, 101, "Text"],
Cell[CellGroupData[{
Cell[11897, 311, 214, 6, 40, "Input"],
Cell[12114, 319, 900, 14, 51, "Print"],
Cell[13017, 335, 463, 6, 36, "Print"],
Cell[13483, 343, 356, 6, 20, "Print"],
Cell[13842, 351, 344, 6, 20, "Print"],
Cell[14189, 359, 367, 7, 20, "Print"],
Cell[14559, 368, 342, 4, 36, "Print"],
Cell[14904, 374, 356, 6, 20, "Print"],
Cell[15263, 382, 188, 2, 20, "Print"],
Cell[15454, 386, 234, 3, 20, "Print"],
Cell[15691, 391, 356, 6, 20, "Print"],
Cell[16050, 399, 1109, 14, 126, "Print"],
Cell[17162, 415, 228, 4, 27, "Output"]
}, Open  ]],
Cell[17405, 422, 108, 3, 26, "Text"],
Cell[CellGroupData[{
Cell[17538, 429, 61, 1, 27, "Input"],
Cell[17602, 432, 441, 7, 43, "Output"]
}, Open  ]],
Cell[18058, 442, 48, 0, 26, "Text"],
Cell[CellGroupData[{
Cell[18131, 446, 61, 1, 27, "Input"],
Cell[18195, 449, 232, 4, 27, "Output"]
}, Open  ]],
Cell[18442, 456, 463, 12, 27, "Input"],
Cell[18908, 470, 88, 2, 26, "Text"],
Cell[18999, 474, 79, 1, 27, "Input"],
Cell[19081, 477, 1248, 40, 93, "Output"],
Cell[20332, 519, 136, 1, 26, "Text"],
Cell[CellGroupData[{
Cell[20493, 524, 311, 6, 27, "Input"],
Cell[20807, 532, 645, 11, 43, "Output"]
}, Open  ]],
Cell[21467, 546, 202, 4, 26, "Text"],
Cell[21672, 552, 191, 4, 43, "Input"],
Cell[21866, 558, 550, 7, 51, "Print"],
Cell[CellGroupData[{
Cell[22441, 569, 77, 1, 27, "Input"],
Cell[22521, 572, 18926, 502, 189, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[41484, 1079, 66, 1, 27, "Input"],
Cell[41553, 1082, 178, 3, 27, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
