(* 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[     64412,       1792]
NotebookOptionsPosition[     59984,       1651]
NotebookOutlinePosition[     60613,       1676]
CellTagsIndexPosition[     60570,       1673]
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 unsteady boundary layer stream function equation, \n\n",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["yt+",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["y",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["xy-",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["x",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["yy-UeUex-Uet-nu*",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 StyleBox["yyy=0.",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
This next function turns off a bunch of spurious spelling error messages\
\>", "Text"],

Cell[BoxData[
 RowBox[{"Off", "[", 
  RowBox[{"General", "::", "spell"}], "]"}]], "Input"],

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[TextData[{
 StyleBox["First read in the package which is located in User Home \
Folder/Library/",
  FontWeight->"Plain"],
 StyleBox["Mathematica",
  FontWeight->"Plain",
  FontSlant->"Italic"],
 StyleBox["/Applications/SymmetryAnalysis.",
  FontWeight->"Plain"]
}], "Text",
 CellChangeTimes->{{3.472046215957556*^9, 3.472046255573135*^9}, {
  3.472046289795615*^9, 3.472046308115048*^9}, {3.4720466725423717`*^9, 
  3.472046673357225*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<SymmetryAnalysis`IntroToSymmetry`\>\"", 
  "]"}]], "Input"],

Cell[TextData[StyleBox["Enter the input equation as a string.  Don't include \
the ==0 at the end. Notice we are treating Ue as a dependent variable, in \
effect making the system underdetermined.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"inputequation", "=", 
  "\"\<D[psi[x,y,t],y,y,y]+\n(1/nu)*Ue[x,y,t]*D[Ue[x,y,t],x]+\n\
(1/nu)*D[Ue[x,y,t],t]+\n(1/nu)*D[psi[x,y,t],x]*D[psi[x,y,t],y,y]-\n\
(1/nu)*D[psi[x,y,t],y]*D[psi[x,y,t],x,y]-\nD[psi[x,y,t],y,t]\>\""}]], "Input"],

Cell[BoxData["\<\"D[psi[x,y,t],y,y,y]+\\n(1/nu)*Ue[x,y,t]*D[Ue[x,y,t],x]+\\n(\
1/nu)*D[Ue[x,y,t],t]+\\n(1/nu)*D[psi[x,y,t],x]*D[psi[x,y,t],y,y]-\\n(1/nu)*D[\
psi[x,y,t],y]*D[psi[x,y,t],x,y]-\\nD[psi[x,y,t],y,t]\"\>"], "Output",
 CellChangeTimes->{3.469477749416971*^9, 3.469478243717424*^9, 
  3.4715705417136497`*^9, 3.472048535749345*^9, 3.483749251319178*^9}]
}, Open  ]],

Cell[TextData[{
 "Notice that the dependent variable is taken to be psi instead of  ",
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontVariations->{"CompatibilityType"->0}],
 "  that was used in the steady case (see the notebooks just ahead of this \
one). In running this notebook I had the unsettling experience that ",
 StyleBox["Mathematica",
  FontSlant->"Italic"],
 " did not seem to recognize this symbol in this notebook whereas it did in \
the previous one. Further more the symbol sometimes comes out as \
\[CapitalPsi]  which looks slightly different on my system. I am not sure \
what is going on here but it suggests that one may need to shy away from such \
symbols for variable names."
}], "Text"],

Cell[TextData[{
 StyleBox["The function ",
  FontWeight->"Plain"],
 "psi[x,y,t]",
 StyleBox[" is a solution of the equation and this constraint must be applied \
in the form of a rule to the invariance condition. Be careful to check signs. \
Note the additional rule that makes Ue independent of y.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"rulesarray", "=", 
  RowBox[{"{", 
   RowBox[{
   "\"\<D[psi[x,y,t],y,y,y]\[Rule]-\n(1/nu)*Ue[x,y,t]*D[Ue[x,y,t],x]-\n\
(1/nu)*D[Ue[x,y,t],t]-\n(1/nu)*D[psi[x,y,t],x]*D[psi[x,y,t],y,y]+\n\
(1/nu)*D[psi[x,y,t],y]*D[psi[x,y,t],x,y]+\nD[psi[x,y,t],y,t]\>\"", ",", 
    "\"\<D[Ue[x,y,t],y]\[Rule]0\>\""}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"D[psi[x,y,t],y,y,y]\[Rule]-\\n(1/nu)*Ue[x,y,t]*D[Ue[x,y,t],x]-\
\\n(1/nu)*D[Ue[x,y,t],t]-\\n(1/nu)*D[psi[x,y,t],x]*D[psi[x,y,t],y,y]+\\n(1/nu)\
*D[psi[x,y,t],y]*D[psi[x,y,t],x,y]+\\nD[psi[x,y,t],y,t]\"\>", 
   ",", "\<\"D[Ue[x,y,t],y]\[Rule]0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469477749498495*^9, 3.469478243757806*^9, 
  3.471570541751157*^9, 3.472048535786653*^9, 3.483749251353587*^9}]
}, Open  ]],

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\>\"", ",", "\"\<t\>\""}], "}"}]}], 
  ";"}]], "Input"],

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

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"dependentvariables", "=", 
  RowBox[{"{", 
   RowBox[{"\"\<psi\>\"", ",", "\"\<Ue\>\""}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"psi\"\>", ",", "\<\"Ue\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469477749615163*^9, 3.469478243834543*^9, 
  3.471570541829832*^9, 3.47204853588196*^9, 3.483749251420082*^9}]
}, Open  ]],

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

Cell[BoxData[
 RowBox[{
  RowBox[{"frozennames", "=", 
   RowBox[{"{", "\"\<nu\>\"", "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the maximum derivative order.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"p", "=", "3"}], ";"}]], "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 (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 equation with respect to all the \
independent variables producing derivatives of order p+r.  These 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[TextData[{
 StyleBox["Now work out the determining equations of the Lie point group that \
leaves the equation invariant. The output is available as a table of strings \
called zdeterminingequations. The Mathematica function Timing outputs the \
time required for ",
  FontWeight->"Plain"],
 "FindDeterminingEquations",
 StyleBox[" to execute.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"FindDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "frozennames", ",",
     "p", ",", "r", ",", "xseon", ",", "inputequation", ",", "rulesarray", 
    ",", "internalrules"}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(29983936\\), the time used = \\!\\(8.076214`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 29983936, 8.076214],
  Editable->False]], "Print",
 CellChangeTimes->{3.469477749815877*^9, 3.469478244038715*^9, 
  3.47157054199841*^9, 3.4720485360671787`*^9, 3.4837492515691338`*^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.469477749815877*^9, 3.469478244038715*^9, 
  3.47157054199841*^9, 3.4720485360671787`*^9, 3.4837492526080837`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(90\\), the \
byte count of zdeterminingequations = \\!\\(13584\\), the memory in use = \\!\
\\(31317992\\), the time used = \\!\\(9.076651`\\)\"\>",
  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 = ``", 90, 13584, 31317992, 
   9.076651],
  Editable->False]], "Print",
 CellChangeTimes->{3.469477749815877*^9, 3.469478244038715*^9, 
  3.47157054199841*^9, 3.4720485360671787`*^9, 3.483749252656725*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(31320032\\), the time used = \\!\\(9.076964`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 31320032, 9.076964],
  Editable->False]], "Print",
 CellChangeTimes->{3.469477749815877*^9, 3.469478244038715*^9, 
  3.47157054199841*^9, 3.4720485360671787`*^9, 3.483749252658824*^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.469477749815877*^9, 3.469478244038715*^9, 
  3.47157054199841*^9, 3.4720485360671787`*^9, 3.4837492526606293`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"1.0015850000000004`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469477750949552*^9, 3.469478245198659*^9, 
  3.471570542981399*^9, 3.472048537005085*^9, 3.483749252663599*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData["ztableofrules"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", "y"}], ",", 
   RowBox[{"z3", "\[Rule]", "t"}], ",", 
   RowBox[{"z4", "\[Rule]", 
    RowBox[{"psi", "[", 
     RowBox[{"x", ",", "y", ",", "t"}], "]"}]}], ",", 
   RowBox[{"z5", "\[Rule]", 
    RowBox[{"Ue", "[", 
     RowBox[{"x", ",", "y", ",", "t"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469477751086617*^9, 3.4694782453230143`*^9, 
  3.471570543066285*^9, 3.4720485371019773`*^9, 3.4837492527557173`*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData["equationgenericvariables"], "Input"],

Cell[BoxData["\<\"D[y1[x1,x2,x3],x2,x2,x2]+\\n(1/nu)*y2[x1,x2,x3]*D[y2[x1,x2,\
x3],x1]+\\n(1/nu)*D[y2[x1,x2,x3],x3]+\\n(1/nu)*D[y1[x1,x2,x3],x1]*D[y1[x1,x2,\
x3],x2,x2]-\\n(1/nu)*D[y1[x1,x2,x3],x2]*D[y1[x1,x2,x3],x1,x2]-\\nD[y1[x1,x2,\
x3],x2,x3]\"\>"], "Output",
 CellChangeTimes->{3.4694777511453457`*^9, 3.469478245380229*^9, 
  3.471570543103755*^9, 3.472048537139162*^9, 3.483749252789844*^9}]
}, Open  ]],

Cell[BoxData["invarconditiontable"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0", ",", "0", ",", "0", ",", 
   FractionBox[
    RowBox[{
     SuperscriptBox["y2", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"], ",", 
   FractionBox[
    RowBox[{
     SuperscriptBox["y1", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "2", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"], ",", 
   RowBox[{"-", 
    FractionBox[
     RowBox[{
      SuperscriptBox["y1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"]}], ",", "0", ",", 
   "0", ",", 
   RowBox[{"-", 
    FractionBox[
     RowBox[{
      SuperscriptBox["y1", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"0", ",", "1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"]}], ",", 
   FractionBox[
    RowBox[{
     SuperscriptBox["y1", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"], ",", "0", ",", 
   RowBox[{"-", "1"}], ",", "0", ",", "0", ",", "0", ",", "0", ",", "1", ",", 
   "0", ",", "0", ",", "0", ",", "0", ",", "0", ",", "0", ",", 
   FractionBox[
    RowBox[{"y2", "[", 
     RowBox[{"x1", ",", "x2", ",", "x3"}], "]"}], "nu"], ",", "0", ",", 
   FractionBox["1", "nu"], ",", "0", ",", "0", ",", "0", ",", "0", ",", "0", 
   ",", "0", ",", "0", ",", "0", ",", "0", ",", "0", ",", "0", ",", "0", ",", 
   "0", ",", "0", ",", "0", ",", "0"}], "}"}]], "Output",
 CellChangeTimes->{3.4694777511961393`*^9, 3.469478245430647*^9, 
  3.471570543141636*^9, 3.472048537195445*^9, 3.483749252827126*^9}],

Cell[BoxData[
 RowBox[{"zdeterminingequations", ";"}]], "Input"],

Cell[CellGroupData[{

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

Cell[BoxData["90"], "Output",
 CellChangeTimes->{3.4694777512706213`*^9, 3.469478245506568*^9, 
  3.4715705432160797`*^9, 3.472048537268303*^9, 3.4837492529062347`*^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[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"SolveDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "r", ",", "xseon", 
    ",", "\[IndentingNewLine]", "zdeterminingequations", ",", 
    RowBox[{"order", "=", "3"}]}], "]"}], "]"}]], "Input"],

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.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.4837492529408007`*^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.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253086031*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(32440896\\), The time = \\!\
\\(9.246152`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 32440896, 9.246152],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253088377*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(280\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 280],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.48374925314373*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(1124\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 1124],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253145136*^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.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253146531*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(32575280\\), The time = \\!\
\\(9.290397`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 32575280, 9.290397],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253147951*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253304737*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253339077*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(32739496\\), The time = \\!\
\\(9.458261`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 32739496, 9.458261],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253340454*^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.4694777515188627`*^9, 3.469478245756015*^9, 
  3.471570543258572*^9, 3.472048537312757*^9, 3.483749253341682*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.3754109999999997`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469477751719161*^9, 3.469478245953739*^9, 
  3.471570543609264*^9, 3.472048537660007*^9, 3.483749253343876*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here are the infinitesimal transformation functions \
for the independent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData["xsefunctions"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"xse1[z1_, z2_, z3_, z4_, z5_]=a10 + (a24 + b120)*z1 + \
a110*z3\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_, z4_, z5_]=a20 + a21*z1 + a22*z1^2 + a23*z1^3 \
+ a24*z2 + a210*z3 + a211*z1*z3 + a212*z1^2*z3 + a216*z3^2 + a217*z1*z3^2 + \
a219*z3^3\"\>", ",", "\<\"xse3[z1_, z2_, z3_, z4_, z5_]=a30 + 2*a24*z3\"\>"}],
   "}"}]], "Output",
 CellChangeTimes->{3.469477751765168*^9, 3.4694782459951143`*^9, 
  3.4715705436380663`*^9, 3.4720485377116833`*^9, 3.483749253374501*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["etafunctions"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"eta1[z1_, z2_, z3_, z4_, z5_]=b10 - a210*nu*z1 - \
(a211*nu*z1^2)/2 - (a212*nu*z1^3)/3 + a110*nu*z2 + b110*z3 - 2*a216*nu*z1*z3 \
- a217*nu*z1^2*z3 + b116*z3^2 - 3*a219*nu*z1*z3^2 + b119*z3^3 + b120*z4\"\>", 
   ",", "\<\"eta2[z1_, z2_, z3_, z4_, z5_]=a110 + (-a24 + b120)*z5\"\>"}], 
  "}"}]], "Output",
 CellChangeTimes->{3.4694777518149757`*^9, 3.469478246031245*^9, 
  3.471570543675199*^9, 3.472048537757841*^9, 3.483749253407362*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "xsefunctions", "]"}], "/.", 
  "\[IndentingNewLine]", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "y"}], ",", 
    RowBox[{"z3", "\[Rule]", "t"}], ",", 
    RowBox[{"z4", "\[Rule]", " ", "psi"}], ",", 
    RowBox[{"z5", "\[Rule]", "Ue"}], ",", 
    RowBox[{"nu", "->", 
     StyleBox["\[Nu]",
      FontFamily->"Symbol",
      FontSize->14]}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"a10", "+", 
    RowBox[{"a110", " ", "t"}], "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{"a24", "+", "b120"}], ")"}], " ", "x"}]}], ",", 
   RowBox[{"a20", "+", 
    RowBox[{"a210", " ", "t"}], "+", 
    RowBox[{"a216", " ", 
     SuperscriptBox["t", "2"]}], "+", 
    RowBox[{"a219", " ", 
     SuperscriptBox["t", "3"]}], "+", 
    RowBox[{"a21", " ", "x"}], "+", 
    RowBox[{"a211", " ", "t", " ", "x"}], "+", 
    RowBox[{"a217", " ", 
     SuperscriptBox["t", "2"], " ", "x"}], "+", 
    RowBox[{"a22", " ", 
     SuperscriptBox["x", "2"]}], "+", 
    RowBox[{"a212", " ", "t", " ", 
     SuperscriptBox["x", "2"]}], "+", 
    RowBox[{"a23", " ", 
     SuperscriptBox["x", "3"]}], "+", 
    RowBox[{"a24", " ", "y"}]}], ",", 
   RowBox[{"a30", "+", 
    RowBox[{"2", " ", "a24", " ", "t"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469477751865192*^9, 3.469478246078763*^9, 
  3.471570543737794*^9, 3.472048537815363*^9, 3.483749253445063*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "etafunctions", "]"}], "/.", 
  "\[IndentingNewLine]", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "y"}], ",", 
    RowBox[{"z3", "\[Rule]", "t"}], ",", 
    RowBox[{"z4", "\[Rule]", " ", "psi"}], ",", 
    RowBox[{"z5", "\[Rule]", "Ue"}], ",", 
    RowBox[{"nu", "->", 
     StyleBox["\[Nu]",
      FontFamily->"Symbol",
      FontSize->14]}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"b10", "+", 
    RowBox[{"b120", " ", "psi"}], "+", 
    RowBox[{"b110", " ", "t"}], "+", 
    RowBox[{"b116", " ", 
     SuperscriptBox["t", "2"]}], "+", 
    RowBox[{"b119", " ", 
     SuperscriptBox["t", "3"]}], "-", 
    RowBox[{"a210", " ", "x", " ", "\[Nu]"}], "-", 
    RowBox[{"2", " ", "a216", " ", "t", " ", "x", " ", "\[Nu]"}], "-", 
    RowBox[{"3", " ", "a219", " ", 
     SuperscriptBox["t", "2"], " ", "x", " ", "\[Nu]"}], "-", 
    RowBox[{
     FractionBox["1", "2"], " ", "a211", " ", 
     SuperscriptBox["x", "2"], " ", "\[Nu]"}], "-", 
    RowBox[{"a217", " ", "t", " ", 
     SuperscriptBox["x", "2"], " ", "\[Nu]"}], "-", 
    RowBox[{
     FractionBox["1", "3"], " ", "a212", " ", 
     SuperscriptBox["x", "3"], " ", "\[Nu]"}], "+", 
    RowBox[{"a110", " ", "y", " ", "\[Nu]"}]}], ",", 
   RowBox[{"a110", "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{
       RowBox[{"-", "a24"}], "+", "b120"}], ")"}], " ", "Ue"}]}]}], 
  "}"}]], "Output",
 CellChangeTimes->{3.46947775191623*^9, 3.4694782461423597`*^9, 
  3.471570543799822*^9, 3.4720485378595133`*^9, 3.483749253496291*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{
  RowBox[{"infinitesimalgroupsxy", "=", 
   RowBox[{"infinitesimalgroups", "/.", "\[IndentingNewLine]", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"z1", "\[Rule]", "x"}], ",", 
      RowBox[{"z2", "\[Rule]", "y"}], ",", 
      RowBox[{"z3", "\[Rule]", "t"}], ",", 
      RowBox[{"z4", "\[Rule]", " ", "psi"}], ",", 
      RowBox[{"z5", "\[Rule]", "Ue"}], ",", 
      RowBox[{"nu", "->", 
       StyleBox["\[Nu]",
        FontFamily->"Symbol",
        FontSize->14]}]}], "}"}]}]}], ";"}]], "Input"],

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"t", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"y", " ", "\[Nu]"}], ",", "1"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "x", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         SuperscriptBox["x", "2"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         SuperscriptBox["x", "3"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "y", ",", 
         RowBox[{"2", " ", "t"}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{"-", "Ue"}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "t", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "x"}], " ", "\[Nu]"}], ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{"t", " ", "x"}], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", 
          FractionBox[
           RowBox[{
            SuperscriptBox["x", "2"], " ", "\[Nu]"}], "2"]}], ",", "0"}], 
        "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{"t", " ", 
          SuperscriptBox["x", "2"]}], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", 
          FractionBox[
           RowBox[{
            SuperscriptBox["x", "3"], " ", "\[Nu]"}], "3"]}], ",", "0"}], 
        "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         SuperscriptBox["t", "2"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "2"}], " ", "t", " ", "x", " ", "\[Nu]"}], ",", "0"}], 
        "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{
          SuperscriptBox["t", "2"], " ", "x"}], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "t"}], " ", 
          SuperscriptBox["x", "2"], " ", "\[Nu]"}], ",", "0"}], "}"}]}], 
      "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", 
         SuperscriptBox["t", "3"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "3"}], " ", 
          SuperscriptBox["t", "2"], " ", "x", " ", "\[Nu]"}], ",", "0"}], 
        "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"t", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["t", "2"], ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["t", "3"], ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"psi", ",", "Ue"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4694777519920187`*^9, 3.4694782463279133`*^9, 
  3.471570543901165*^9, 3.4720485379234*^9, 3.483749253576426*^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}, 3.471567789726531*^9, 
   3.471568099275279*^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", ",", 
   "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", ",", 
   "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.4715705439542217`*^9, 3.472048537979475*^9, 
  3.483749253612926*^9}]
}, Open  ]],

Cell["\<\
Note the higher powers of x and t that appear in the transformation of the \
wall normal coordinate and the stream function. This suggests the existence \
of an arbitrary function of x and t in the transformations of y and \
\[CapitalPsi]. Let's remove these terms and look at the commutator table for \
the simple groups.\
\>", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"infinitesimalgroupsxy1", "=", 
  RowBox[{"Extract", "[", "\[IndentingNewLine]", 
   RowBox[{"infinitesimalgroupsxy", ",", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", "1", "}"}], ",", 
      RowBox[{"{", "2", "}"}], ",", 
      RowBox[{"{", "7", "}"}], ",", 
      RowBox[{"{", "14", "}"}], ",", 
      RowBox[{"{", "19", "}"}]}], "}"}]}], "]"}]}]], "Input",
 CellChangeTimes->{{3.469478230979124*^9, 3.469478231977117*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"1", ",", "0", ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{"0", ",", "0"}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"t", ",", "0", ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"y", " ", "\[Nu]"}], ",", "1"}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"x", ",", "y", ",", 
       RowBox[{"2", " ", "t"}]}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{"0", ",", 
       RowBox[{"-", "Ue"}]}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"0", ",", "0", ",", "1"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{"0", ",", "0"}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"x", ",", "0", ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{"psi", ",", "Ue"}], "}"}]}], "}"}]}], "}"}]], "Output",
 CellChangeTimes->{3.469477752124226*^9, 3.469478246396483*^9, 
  3.471570544001667*^9, 3.472048538030335*^9, 3.4837492536590633`*^9}]
}, Open  ]],

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"t", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"y", " ", "\[Nu]"}], ",", "1"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "y", ",", 
         RowBox[{"2", " ", "t"}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", 
         RowBox[{"-", "Ue"}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"psi", ",", "Ue"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469477752183717*^9, 3.469478246459717*^9, 
  3.4715705441516542`*^9, 3.4720485381545353`*^9, 3.483749253757875*^9}],

Cell[BoxData[
 RowBox[{"MakeCommutatorTable", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "dependentvariables", ",", 
   "infinitesimalgroupsxy1"}], "]"}]], "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.469477752233832*^9, 3.4694782465273647`*^9, 
  3.471570544202248*^9, 3.472048538192113*^9, 3.483749253808069*^9}],

Cell[CellGroupData[{

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

Cell[BoxData[
 TagBox[
  RowBox[{"(", "\[NoBreak]", GridBox[{
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"1", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"1", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"-", "t"}], ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{
              RowBox[{"-", "y"}], " ", "\[Nu]"}], ",", 
             RowBox[{"-", "1"}]}], "}"}]}
         },
         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[{"-", "1"}], ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"t", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"y", " ", "\[Nu]"}], ",", "1"}], "}"}]}
         },
         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[{"-", "1"}], ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"t", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"y", " ", "\[Nu]"}], ",", "1"}], "}"}]}
         },
         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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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", ",", 
             RowBox[{"-", "2"}]}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"1", ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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", ",", "2"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"-", "1"}], ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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[{"-", "t"}], ",", "0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{
              RowBox[{"-", "y"}], " ", "\[Nu]"}], ",", 
             RowBox[{"-", "1"}]}], "}"}]}
         },
         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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "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.46947775228881*^9, 3.469478246598823*^9, 
  3.471570544277766*^9, 3.4720485382571087`*^9, 3.483749253861907*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["37968208"], "Output",
 CellChangeTimes->{3.469477752350192*^9, 3.4694782466818447`*^9, 
  3.471570544337922*^9, 3.472048538292238*^9, 3.4837492539085827`*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{907, 926},
WindowMargins->{{113, Automatic}, {Automatic, 31}},
PrintingCopies->1,
PrintingPageRange->{1, Automatic},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
Magnification->1.25,
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, 1408, 48, 102, "Text"],
Cell[1956, 70, 96, 2, 32, "Text"],
Cell[2055, 74, 90, 2, 33, "Input"],
Cell[2148, 78, 124, 1, 32, "Text"],
Cell[2275, 81, 160, 4, 33, "Input"],
Cell[2438, 87, 476, 13, 32, "Text"],
Cell[2917, 102, 101, 2, 33, "Input"],
Cell[3021, 106, 262, 4, 51, "Text"],
Cell[CellGroupData[{
Cell[3308, 114, 258, 4, 129, "Input"],
Cell[3569, 120, 362, 4, 129, "Output"]
}, Open  ]],
Cell[3946, 127, 737, 15, 114, "Text"],
Cell[4686, 144, 367, 9, 51, "Text"],
Cell[CellGroupData[{
Cell[5078, 157, 344, 7, 129, "Input"],
Cell[5425, 166, 445, 7, 129, "Output"]
}, Open  ]],
Cell[5885, 176, 130, 2, 32, "Text"],
Cell[6018, 180, 172, 5, 33, "Input"],
Cell[6193, 187, 128, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[6346, 193, 132, 3, 33, "Input"],
Cell[6481, 198, 224, 4, 33, "Output"]
}, Open  ]],
Cell[6720, 205, 224, 4, 32, "Text"],
Cell[6947, 211, 110, 3, 33, "Input"],
Cell[7060, 216, 125, 2, 32, "Text"],
Cell[7188, 220, 67, 2, 33, "Input"],
Cell[7258, 224, 385, 6, 70, "Text"],
Cell[7646, 232, 67, 2, 33, "Input"],
Cell[7716, 236, 509, 7, 89, "Text"],
Cell[8228, 245, 71, 2, 33, "Input"],
Cell[8302, 249, 575, 8, 89, "Text"],
Cell[8880, 259, 79, 2, 33, "Input"],
Cell[8962, 263, 417, 10, 70, "Text"],
Cell[CellGroupData[{
Cell[9404, 277, 324, 6, 72, "Input"],
Cell[9731, 285, 470, 8, 45, "Print"],
Cell[10204, 295, 1053, 14, 216, "Print"],
Cell[11260, 311, 728, 12, 64, "Print"],
Cell[11991, 325, 436, 8, 45, "Print"],
Cell[12430, 335, 1055, 14, 216, "Print"],
Cell[13488, 351, 227, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[13752, 360, 39, 0, 33, "Input"],
Cell[13794, 362, 532, 13, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[14363, 380, 50, 0, 33, "Input"],
Cell[14416, 382, 398, 5, 129, "Output"]
}, Open  ]],
Cell[14829, 390, 45, 0, 33, "Input"],
Cell[14877, 392, 2085, 60, 149, "Output"],
Cell[16965, 454, 64, 1, 33, "Input"],
Cell[CellGroupData[{
Cell[17054, 459, 78, 1, 33, "Input"],
Cell[17135, 462, 168, 2, 33, "Output"]
}, Open  ]],
Cell[17318, 467, 489, 11, 145, "Text"],
Cell[CellGroupData[{
Cell[17832, 482, 319, 6, 72, "Input"],
Cell[18154, 490, 903, 14, 83, "Print"],
Cell[19060, 506, 463, 6, 83, "Print"],
Cell[19526, 514, 354, 6, 25, "Print"],
Cell[19883, 522, 343, 6, 25, "Print"],
Cell[20229, 530, 369, 7, 25, "Print"],
Cell[20601, 539, 343, 4, 64, "Print"],
Cell[20947, 545, 354, 6, 25, "Print"],
Cell[21304, 553, 188, 2, 25, "Print"],
Cell[21495, 557, 232, 3, 25, "Print"],
Cell[21730, 562, 354, 6, 25, "Print"],
Cell[22087, 570, 1109, 14, 254, "Print"],
Cell[23199, 586, 227, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[23463, 595, 174, 3, 32, "Text"],
Cell[23640, 600, 38, 0, 33, "Input"],
Cell[23681, 602, 511, 9, 91, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24229, 616, 122, 2, 32, "Text"],
Cell[24354, 620, 38, 0, 33, "Input"],
Cell[24395, 622, 483, 8, 91, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24915, 635, 476, 14, 53, "Input"],
Cell[25394, 651, 1010, 28, 69, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[26441, 684, 476, 14, 53, "Input"],
Cell[26920, 700, 1160, 30, 88, "Output"]
}, Open  ]],
Cell[28095, 733, 525, 14, 53, "Input"],
Cell[28623, 749, 79, 1, 33, "Input"],
Cell[28705, 752, 4967, 177, 467, "Output"],
Cell[33675, 931, 136, 1, 32, "Text"],
Cell[CellGroupData[{
Cell[33836, 936, 359, 7, 33, "Input"],
Cell[34198, 945, 1381, 21, 148, "Output"]
}, Open  ]],
Cell[35594, 969, 346, 6, 70, "Text"],
Cell[CellGroupData[{
Cell[35965, 979, 455, 11, 53, "Input"],
Cell[36423, 992, 1150, 37, 53, "Output"]
}, Open  ]],
Cell[37588, 1032, 80, 1, 33, "Input"],
Cell[37671, 1035, 1352, 45, 111, "Output"],
Cell[39026, 1082, 192, 4, 53, "Input"],
Cell[39221, 1088, 550, 7, 102, "Print"],
Cell[CellGroupData[{
Cell[39796, 1099, 77, 1, 33, "Input"],
Cell[39876, 1102, 19814, 536, 223, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[59727, 1643, 66, 1, 33, "Input"],
Cell[59796, 1646, 172, 2, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
