(* 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[     80729,       2349]
NotebookOptionsPosition[     74653,       2163]
NotebookOutlinePosition[     75429,       2190]
CellTagsIndexPosition[     75386,       2187]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \
to work out point and Lie-Backlund groups of the Burgers equation,\n \n\
Uxx-UUx-Ut=0.",
 FontSize->14,
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
This next command turns off spurious spelling error warnings.\
\>", "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["Needs[\"SymmetryAnalysis`IntroToSymmetry`\"]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["Enter the input equation as a string. Don't include \
the ==0 at the end.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{
  "inputequation", "=", "\n", 
   "\"\<D[U[x,t],t]+U[x,t]*D[U[x,t],x]-D[U[x,t],x,x]\>\""}], ";"}]], "Input"],

Cell[TextData[{
 StyleBox["The function ",
  FontWeight->"Plain"],
 "U[x,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.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"rulesarray", "=", "\[IndentingNewLine]", 
   RowBox[{
   "{", "\"\<D[U[x,t],x,x]\[Rule]D[U[x,t],t]+U[x,t]*D[U[x,t],x]\>\"", "}"}]}],
   ";"}]], "Input"],

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

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

Cell[BoxData[
 RowBox[{
  RowBox[{"dependentvariables", "=", 
   RowBox[{"{", "\"\<U\>\"", "}"}]}], ";"}]], "Input"],

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

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

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

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

Cell[TextData[StyleBox["The maximum derivative order that the infinitesimals \
are assumed to depend on is specified by the input parameter rorder. 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 rorder=0.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[TextData[StyleBox["When searching for Lie-Backlund groups (rorder=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 to produce derivatives of order \
porder+rorder and append these higher order differential consequences 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.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(25095008\\), the time used = \\!\\(0.722108`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 25095008, 0.722108],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794364595*^9, 3.471572986924387*^9, 
  3.483803909392212*^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.469483794364595*^9, 3.471572986924387*^9, 
  3.483803909478696*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(9\\), the \
byte count of zdeterminingequations = \\!\\(1304\\), the memory in use = \
\\!\\(25228176\\), the time used = \\!\\(0.8114279999999999`\\)\"\>",
  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 = ``", 9, 1304, 25228176, 
   0.8114279999999999],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794364595*^9, 3.471572986924387*^9, 
  3.483803909482408*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(25229232\\), the time used = \\!\\(0.811727`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 25229232, 0.811727],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794364595*^9, 3.471572986924387*^9, 
  3.4838039094852123`*^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.469483794364595*^9, 3.471572986924387*^9, 
  3.483803909487808*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.09044399999999997`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469483794429571*^9, 3.471572987028564*^9, 
  3.483803909492092*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["\<\"D[y1[x1,x2],x2]+y1[x1,x2]*D[y1[x1,x2],x1]-D[y1[x1,x2],x1,x1]\
\"\>"], "Output",
 CellChangeTimes->{3.4694837944706182`*^9, 3.471572987083598*^9, 
  3.48380390955793*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0", ",", 
   RowBox[{
    SuperscriptBox["y1", 
     TagBox[
      RowBox[{"(", 
       RowBox[{"1", ",", "0"}], ")"}],
      Derivative],
     MultilineFunction->None], "[", 
    RowBox[{"x1", ",", "x2"}], "]"}], ",", 
   RowBox[{"y1", "[", 
    RowBox[{"x1", ",", "x2"}], "]"}], ",", "1", ",", 
   RowBox[{"-", "1"}], ",", "0", ",", "0"}], "}"}]], "Output",
 CellChangeTimes->{3.469483794516426*^9, 3.471572987129171*^9, 
  3.483803909594029*^9}]
}, Open  ]],

Cell["Here are the determining equations in terms of z-variables.", "Text"],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"2*Derivative[0, 0, 1][xse2][z1, z2, z3] == 0\"\>", 
   ",", "\<\"Derivative[0, 0, 2][xse1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"Derivative[0, 0, 2][xse2][z1, z2, z3] == 0\"\>", 
   ",", "\<\"2*Derivative[1, 0, 0][xse2][z1, z2, z3] == 0\"\>", 
   ",", "\<\"2*z3*Derivative[0, 0, 1][xse1][z1, z2, z3] - Derivative[0, 0, \
2][eta1][z1, z2, z3] + 2*Derivative[1, 0, 1][xse1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"2*Derivative[0, 0, 1][xse1][z1, z2, z3] + 2*Derivative[1, 0, \
1][xse2][z1, z2, z3] == 0\"\>", 
   ",", "\<\"Derivative[0, 1, 0][eta1][z1, z2, z3] + z3*Derivative[1, 0, \
0][eta1][z1, z2, z3] - Derivative[2, 0, 0][eta1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"eta1[z1, z2, z3] - Derivative[0, 1, 0][xse1][z1, z2, z3] + \
z3*Derivative[1, 0, 0][xse1][z1, z2, z3] - 2*Derivative[1, 0, 1][eta1][z1, \
z2, z3] + Derivative[2, 0, 0][xse1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"-Derivative[0, 1, 0][xse2][z1, z2, z3] + 2*Derivative[1, 0, \
0][xse1][z1, z2, z3] - z3*Derivative[1, 0, 0][xse2][z1, z2, z3] + \
Derivative[2, 0, 0][xse2][z1, z2, z3] == 0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469483794571107*^9, 3.471572987183573*^9, 
  3.4838039096488943`*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["9"], "Output",
 CellChangeTimes->{3.469483794614216*^9, 3.471572987228706*^9, 
  3.483803909694779*^9}]
}, Open  ]],

Cell["\<\
Here is the correspondence between z-variables and conventional variables.\
\>", "Text"],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", "t"}], ",", 
   RowBox[{"z3", "\[Rule]", 
    RowBox[{"U", "[", 
     RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694837946708307`*^9, 3.471572987283515*^9, 
  3.48380390974879*^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", ",", "rorder", ",", 
    "xseon", ",", "zdeterminingequations", ",", 
    RowBox[{"polyorder", "=", "4"}]}], "]"}], "]"}]], "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 = \\!\\(35\\)\"\>",
  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 = ``", 35],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.48380390979606*^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.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909799995*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25623352\\), The time = \\!\
\\(0.8602090000000001`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 25623352, 0.8602090000000001],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.4838039098027353`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(105\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 105],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909805221*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(176\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 176],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.4838039098080893`*^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.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909810595*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25696128\\), The time = \\!\
\\(0.868442`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 25696128, 0.868442],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909813574*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.4838039098487177`*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909851222*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25870768\\), The time = \\!\
\\(0.8824029999999999`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 25870768, 0.8824029999999999],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909853566*^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.469483794722128*^9, 3.471572987329165*^9, 
  3.483803909855921*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.06414500000000001`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469483794823608*^9, 3.471572987353067*^9, 
  3.483803909859399*^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_]=a10 - b115*z1 + b10*z2 - b119*z1*z2\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_]=a20 - 2*b115*z2 - b119*z2^2\"\>"}], 
  "}"}]], "Output",
 CellChangeTimes->{3.469483794902895*^9, 3.471572987383861*^9, 
  3.483803909895198*^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_]=b10 - b119*z1 + b115*z3 + b119*z2*z3\"\
\>", "}"}]], "Output",
 CellChangeTimes->{3.469483795046906*^9, 3.471572987429668*^9, 
  3.4838039099499083`*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Usually Burger's equation is expressed in terms of x, \
t and U.Express the xse functions in terms of these variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "xsefunctions", "]"}], "/.", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "t"}], ",", 
    RowBox[{"z3", "\[Rule]", "U"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"a10", "+", 
    RowBox[{"b10", " ", "t"}], "-", 
    RowBox[{"b115", " ", "x"}], "-", 
    RowBox[{"b119", " ", "t", " ", "x"}]}], ",", 
   RowBox[{"a20", "-", 
    RowBox[{"2", " ", "b115", " ", "t"}], "-", 
    RowBox[{"b119", " ", 
     SuperscriptBox["t", "2"]}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469483795117515*^9, 3.471572987463316*^9, 
  3.48380390999514*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Express the eta function in terms of these variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "etafunctions", "]"}], "/.", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "t"}], ",", 
    RowBox[{"z3", "\[Rule]", "U"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"b10", "+", 
   RowBox[{"b115", " ", "U"}], "+", 
   RowBox[{"b119", " ", "t", " ", "U"}], "-", 
   RowBox[{"b119", " ", "x"}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694837951804132`*^9, 3.4715729875169086`*^9, 
  3.4838039100501413`*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{
  RowBox[{"infinitesimalgroups1", "=", 
   RowBox[{"infinitesimalgroups", "/.", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"z1", "\[Rule]", "x"}], ",", 
      RowBox[{"z2", "\[Rule]", "t"}], ",", 
      RowBox[{"z3", "\[Rule]", "U"}]}], "}"}]}]}], ";"}]], "Input"],

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

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"t", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "1", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "x"}], ",", 
         RowBox[{
          RowBox[{"-", "2"}], " ", "t"}]}], "}"}], ",", 
       RowBox[{"{", "U", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "t"}], " ", "x"}], ",", 
         RowBox[{"-", 
          SuperscriptBox["t", "2"]}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"t", " ", "U"}], "-", "x"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469483795280878*^9, 3.471572987648705*^9, 
  3.483803910210598*^9}],

Cell[TextData[StyleBox["This is the five-parameter point group of Burger's  \
equation.  Let's construct the commutator table.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"MakeCommutatorTable", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "dependentvariables", ",", 
   "infinitesimalgroups1"}], "]"}]], "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.469483795351931*^9, 3.47157298770046*^9, 
  3.483803910245809*^9}],

Cell[CellGroupData[{

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

Cell[BoxData[
 TagBox[
  RowBox[{"(", "\[NoBreak]", GridBox[{
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"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"}], "}"}]},
          {
           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"}], "}"}]},
          {
           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[{"-", "1"}], ",", "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[{"-", "t"}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            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"}], "}"}]},
          {
           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"}], "}"}]},
          {
           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[{"1", ",", "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[{"-", "2"}]}], "}"}]},
          {
           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[{"-", "x"}], ",", 
             RowBox[{
              RowBox[{"-", "2"}], " ", "t"}]}], "}"}]},
          {
           RowBox[{"{", "U", "}"}]}
         },
         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[{"{", "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"}], "}"}]},
          {
           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"}], "}"}]},
          {
           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[{"t", ",", "0"}], "}"}]},
          {
           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"}], "}"}]},
          {
           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[{"1", ",", "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", ",", "2"}], "}"}]},
          {
           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[{"-", "t"}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            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"}], "}"}]},
          {
           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[{"2", " ", "t", " ", "x"}], ",", 
             RowBox[{"2", " ", 
              SuperscriptBox["t", "2"]}]}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{
              RowBox[{"-", "2"}], " ", "t", " ", "U"}], "+", 
             RowBox[{"2", " ", "x"}]}], "}"}]}
         },
         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"}], "}"}]},
          {
           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[{"x", ",", 
             RowBox[{"2", " ", "t"}]}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"-", "U"}], "}"}]}
         },
         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[{"{", "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[{
              RowBox[{"-", "2"}], " ", "t", " ", "x"}], ",", 
             RowBox[{
              RowBox[{"-", "2"}], " ", 
              SuperscriptBox["t", "2"]}]}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"2", " ", "t", " ", "U"}], "-", 
             RowBox[{"2", " ", "x"}]}], "}"}]}
         },
         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[{"{", "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.4694837954241753`*^9, 3.471572987733584*^9, 
  3.4838039103050747`*^9}]
}, Open  ]],

Cell["\<\
Note that the package does not capture the non-local group involving an \
arbitrary solution of the heat equation 
        
        eta1[x,t,U]=(fx+(1/2)*f*U)Exp[Integrate[U[x,t],U]/2. 
        
This is discussed extensively in Chapter 14 and Chapter 16. Let's  check the \
nonlocal group in the invariance condition. \
\>", "Text"],

Cell[BoxData[
 RowBox[{
  RowBox[{"eta1nonlocal", "[", 
   RowBox[{"x_", ",", "t_"}], "]"}], ":=", 
  RowBox[{
   RowBox[{"(", 
    RowBox[{
     RowBox[{"D", "[", 
      RowBox[{
       RowBox[{"f", "[", 
        RowBox[{"x", ",", "t"}], "]"}], ",", "x"}], "]"}], "+", 
     RowBox[{
      RowBox[{"(", 
       RowBox[{"1", "/", "2"}], ")"}], "*", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], "*", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}]}]}], ")"}], "*", 
   RowBox[{"Exp", "[", 
    RowBox[{
     RowBox[{"Integrate", "[", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], ",", "x"}], "]"}], "/", "2"}], 
    "]"}]}]}]], "Input"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"D", "[", 
    RowBox[{
     RowBox[{"eta1nonlocal", "[", 
      RowBox[{"x", ",", "t"}], "]"}], ",", "t"}], "]"}], "+", 
   RowBox[{
    RowBox[{"eta1nonlocal", "[", 
     RowBox[{"x", ",", "t"}], "]"}], "*", 
    RowBox[{"D", "[", 
     RowBox[{
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], ",", "x"}], "]"}]}], "+", 
   "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"U", "[", 
     RowBox[{"x", ",", "t"}], "]"}], "*", 
    RowBox[{"D", "[", 
     RowBox[{
      RowBox[{"eta1nonlocal", "[", 
       RowBox[{"x", ",", "t"}], "]"}], ",", "x"}], "]"}]}], "-", 
   RowBox[{"D", "[", 
    RowBox[{
     RowBox[{"eta1nonlocal", "[", 
      RowBox[{"x", ",", "t"}], "]"}], ",", "x", ",", "x"}], "]"}]}], "/.", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{
     RowBox[{"D", "[", 
      RowBox[{
       RowBox[{"f", "[", 
        RowBox[{"x", ",", "t"}], "]"}], ",", "x", ",", "x"}], "]"}], "->", 
     RowBox[{"D", "[", 
      RowBox[{
       RowBox[{"f", "[", 
        RowBox[{"x", ",", "t"}], "]"}], ",", "t"}], "]"}]}], ",", 
    "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"Integrate", "[", 
      RowBox[{
       RowBox[{"D", "[", 
        RowBox[{
         RowBox[{"U", "[", 
          RowBox[{"x", ",", "t"}], "]"}], ",", "t"}], "]"}], ",", "x"}], 
      "]"}], "\[Rule]", 
     RowBox[{
      RowBox[{
       RowBox[{"-", 
        RowBox[{"(", 
         RowBox[{"1", "/", "2"}], ")"}]}], "*", 
       RowBox[{
        RowBox[{"U", "[", 
         RowBox[{"x", ",", "t"}], "]"}], "^", "2"}]}], "+", 
      RowBox[{"D", "[", 
       RowBox[{
        RowBox[{"U", "[", 
         RowBox[{"x", ",", "t"}], "]"}], ",", "x"}], "]"}]}]}]}], 
   "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"-", 
    FractionBox["1", "4"]}], " ", 
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   SuperscriptBox[
    RowBox[{"U", "[", 
     RowBox[{"x", ",", "t"}], "]"}], "2"], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}], "+", 
  RowBox[{
   FractionBox["1", "2"], " ", 
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}], " ", 
   RowBox[{
    SuperscriptBox["U", 
     TagBox[
      RowBox[{"(", 
       RowBox[{"1", ",", "0"}], ")"}],
      Derivative],
     MultilineFunction->None], "[", 
    RowBox[{"x", ",", "t"}], "]"}]}], "+", 
  RowBox[{
   FractionBox["1", "2"], " ", 
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      RowBox[{"-", 
       FractionBox["1", "2"]}], " ", 
      SuperscriptBox[
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], "2"]}], "+", 
     RowBox[{
      SuperscriptBox["U", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}], "-", 
  RowBox[{
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   RowBox[{"U", "[", 
    RowBox[{"x", ",", "t"}], "]"}], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"0", ",", "1"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}], "+", 
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["f", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["U", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}]}], ")"}]}], "+", 
  RowBox[{
   RowBox[{"U", "[", 
    RowBox[{"x", ",", "t"}], "]"}], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      SuperscriptBox["\[ExponentialE]", 
       RowBox[{
        FractionBox["1", "2"], " ", 
        RowBox[{"\[Integral]", 
         RowBox[{
          RowBox[{"U", "[", 
           RowBox[{"x", ",", "t"}], "]"}], 
          RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{"(", 
       RowBox[{
        RowBox[{
         FractionBox["1", "2"], " ", 
         RowBox[{"f", "[", 
          RowBox[{"x", ",", "t"}], "]"}], " ", 
         RowBox[{"U", "[", 
          RowBox[{"x", ",", "t"}], "]"}]}], "+", 
        RowBox[{
         SuperscriptBox["f", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}], "+", 
     RowBox[{
      SuperscriptBox["\[ExponentialE]", 
       RowBox[{
        FractionBox["1", "2"], " ", 
        RowBox[{"\[Integral]", 
         RowBox[{
          RowBox[{"U", "[", 
           RowBox[{"x", ",", "t"}], "]"}], 
          RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
      RowBox[{"(", 
       RowBox[{
        RowBox[{
         SuperscriptBox["f", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"x", ",", "t"}], "]"}], "+", 
        RowBox[{
         FractionBox["1", "2"], " ", 
         RowBox[{"U", "[", 
          RowBox[{"x", ",", "t"}], "]"}], " ", 
         RowBox[{
          SuperscriptBox["f", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "t"}], "]"}]}], "+", 
        RowBox[{
         FractionBox["1", "2"], " ", 
         RowBox[{"f", "[", 
          RowBox[{"x", ",", "t"}], "]"}], " ", 
         RowBox[{
          SuperscriptBox["U", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "t"}], "]"}]}]}], ")"}]}]}], ")"}]}], "+", 
  RowBox[{
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["f", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["U", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"1", ",", "1"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}], "-", 
  RowBox[{
   SuperscriptBox["\[ExponentialE]", 
    RowBox[{
     FractionBox["1", "2"], " ", 
     RowBox[{"\[Integral]", 
      RowBox[{
       RowBox[{"U", "[", 
        RowBox[{"x", ",", "t"}], "]"}], 
       RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
   RowBox[{"(", 
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["f", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      RowBox[{
       SuperscriptBox["f", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["U", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"f", "[", 
       RowBox[{"x", ",", "t"}], "]"}], " ", 
      RowBox[{
       SuperscriptBox["U", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"2", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"x", ",", "t"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["f", 
       TagBox[
        RowBox[{"(", 
         RowBox[{"3", ",", "0"}], ")"}],
        Derivative],
       MultilineFunction->None], "[", 
      RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}]}]], "Output",
 CellChangeTimes->{3.469483795662272*^9, 3.471572987972764*^9, 
  3.483803910669032*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Simplify", "[", "%", "]"}]], "Input"],

Cell[BoxData[
 RowBox[{
  FractionBox["1", "2"], " ", 
  SuperscriptBox["\[ExponentialE]", 
   RowBox[{
    FractionBox["1", "2"], " ", 
    RowBox[{"\[Integral]", 
     RowBox[{
      RowBox[{"U", "[", 
       RowBox[{"x", ",", "t"}], "]"}], 
      RowBox[{"\[DifferentialD]", "x"}]}]}]}]], " ", 
  RowBox[{"(", 
   RowBox[{
    RowBox[{
     RowBox[{"f", "[", 
      RowBox[{"x", ",", "t"}], "]"}], " ", 
     RowBox[{"(", 
      RowBox[{
       RowBox[{
        SuperscriptBox["U", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "1"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"x", ",", "t"}], "]"}], "+", 
       RowBox[{
        RowBox[{"U", "[", 
         RowBox[{"x", ",", "t"}], "]"}], " ", 
        RowBox[{
         SuperscriptBox["U", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"x", ",", "t"}], "]"}]}], "-", 
       RowBox[{
        SuperscriptBox["U", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}], "+", 
    RowBox[{"2", " ", 
     RowBox[{"(", 
      RowBox[{
       RowBox[{
        SuperscriptBox["f", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"1", ",", "1"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"x", ",", "t"}], "]"}], "-", 
       RowBox[{
        SuperscriptBox["f", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"3", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"x", ",", "t"}], "]"}]}], ")"}]}]}], ")"}]}]], "Output",
 CellChangeTimes->{3.469483795702129*^9, 3.4715729880138283`*^9, 
  3.483803910714985*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The first term above is Burgers equation and the \
second term is the derivative with respect to x of the heat equation. Thus \
the invariance condition is satisfied by the nonlocal group\n\n \
(xse1=0,xse2=0, \
eta1nonlocal[x_,t_]:=(D[f[x,t],x]+(1/2)*f[x,t]*U[x,t])*Exp[Integrate[U[x,t],x]\
/2]).",
 FontWeight->"Plain",
 FontVariations->{"CompatibilityType"->0}]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
*************************************************************\
\>", "Text"],

Cell[TextData[StyleBox["Let's use the package to work out the equivalent \
Lie-Backlund groups.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

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

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

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(30096328\\), the time used = \
\\!\\(1.0133200000000002`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 30096328, 1.0133200000000002`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483795816231*^9, 3.471572988128039*^9, 
  3.4838039108459797`*^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.469483795816231*^9, 3.471572988128039*^9, 
  3.483803910922881*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(3\\), the \
byte count of zdeterminingequations = \\!\\(1328\\), the memory in use = \
\\!\\(30191224\\), the time used = \\!\\(1.1125200000000002`\\)\"\>",
  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 = ``", 3, 1328, 30191224, 
   1.1125200000000002`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483795816231*^9, 3.471572988128039*^9, 
  3.483803910945109*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(30193128\\), the time used = \\!\\(1.112994`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 30193128, 1.112994],
  Editable->False]], "Print",
 CellChangeTimes->{3.469483795816231*^9, 3.471572988128039*^9, 
  3.483803910970261*^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.469483795816231*^9, 3.471572988128039*^9, 
  3.483803911004121*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"SolveDeterminingEquations", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "dependentvariables", ",", "rorder", ",", 
   "xseon", ",", "zdeterminingequations", ",", 
   RowBox[{"polyorder", "=", "4"}]}], "]"}]], "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 = \\!\\(126\\)\"\>",
  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 = ``", 126],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.4838039110873137`*^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.4694837960251427`*^9, 3.471572988252335*^9, 
  3.4838039111381683`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(30865624\\), The time = \\!\
\\(1.193902`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 30865624, 1.193902],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911163972*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(126\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 126],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911187214*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(240\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 240],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911219645*^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.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911252982*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(30967304\\), The time = \\!\
\\(1.2063290000000002`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 30967304, 1.2063290000000002`],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.4838039112864532`*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.4838039113197947`*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911353241*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(31010800\\), The time = \\!\
\\(1.218998`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 31010800, 1.218998],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911386609*^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.4694837960251427`*^9, 3.471572988252335*^9, 
  3.483803911420834*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "xsefunctions", "]"}], "/.", 
  "ztableofrules"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0"}], "}"}]], "Output",
 CellChangeTimes->{3.469483796200309*^9, 3.471572988760762*^9, 
  3.48380391156495*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "etafunctions", "]"}], "/.", 
  "ztableofrules"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"-", "b139"}], "-", 
   RowBox[{"b177", " ", "x"}], "+", 
   RowBox[{
    FractionBox["1", "2"], " ", "b174", " ", 
    RowBox[{"U", "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b177", " ", "t", " ", 
    RowBox[{"U", "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b170", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b174", " ", "t", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b177", " ", 
    SuperscriptBox["t", "2"], " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b135", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b139", " ", "t", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{
    FractionBox["1", "2"], " ", "b174", " ", "x", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}], "+", 
   RowBox[{"b177", " ", "t", " ", "x", " ", 
    RowBox[{
     SuperscriptBox["U", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694837962600822`*^9, 3.4715729888124228`*^9, 
  3.483803911615157*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{
  RowBox[{"Column", "[", "infinitesimalgroups", "]"}], "/.", 
  "\[InvisibleSpace]", "ztableofrules"}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["U", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"x", ",", "t"}], "]"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "1"}], "+", 
         RowBox[{"t", " ", 
          RowBox[{
           SuperscriptBox["U", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"1", ",", "0"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["U", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"x", ",", "t"}], "]"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          FractionBox["1", "2"], " ", 
          RowBox[{"U", "[", 
           RowBox[{"x", ",", "t"}], "]"}]}], "+", 
         RowBox[{"t", " ", 
          RowBox[{
           SuperscriptBox["U", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "t"}], "]"}]}], "+", 
         RowBox[{
          FractionBox["1", "2"], " ", "x", " ", 
          RowBox[{
           SuperscriptBox["U", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"1", ",", "0"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "x"}], "+", 
         RowBox[{"t", " ", 
          RowBox[{"U", "[", 
           RowBox[{"x", ",", "t"}], "]"}]}], "+", 
         RowBox[{
          SuperscriptBox["t", "2"], " ", 
          RowBox[{
           SuperscriptBox["U", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "t"}], "]"}]}], "+", 
         RowBox[{"t", " ", "x", " ", 
          RowBox[{
           SuperscriptBox["U", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"1", ",", "0"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469483796310542*^9, 3.471572988862287*^9, 
  3.483803911666461*^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, 3.4715715735656223`*^9, 3.471572095183077*^9, {
   3.4715726099623337`*^9, 3.471572610792289*^9}, {3.4715729781802893`*^9, 
   3.471572978778569*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"True", ",", "True", ",", "True"}], "}"}]], "Output",
 CellChangeTimes->{3.4715729889119997`*^9, 3.4838039117160397`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["These are the five first order Lie-Backlund groups \
equivalent to point groups.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData["31655832"], "Output",
 CellChangeTimes->{3.469483796355287*^9, 3.4715729889617987`*^9, 
  3.48380391178176*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{970, 877},
WindowMargins->{{41, Automatic}, {Automatic, 30}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"01@0001804P000000_82@?okonh34`9B;@85:0?l0@00009H0UP00P0068dB`001\n\
2@00I00100000@004Q800BL?0040000000000000000004<001000`00000@0?oH\n\
ofXIX1=F8040400000400000000000l1",
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, 246, 5, 97, "Text"],
Cell[794, 27, 85, 2, 32, "Text"],
Cell[882, 31, 90, 2, 33, "Input"],
Cell[975, 35, 124, 1, 32, "Text"],
Cell[1102, 38, 160, 4, 33, "Input"],
Cell[1265, 44, 476, 13, 32, "Text"],
Cell[1744, 59, 93, 1, 33, "Input"],
Cell[1840, 62, 163, 3, 32, "Text"],
Cell[2006, 67, 143, 4, 53, "Input"],
Cell[2152, 73, 304, 8, 51, "Text"],
Cell[2459, 83, 187, 5, 53, "Input"],
Cell[2649, 90, 130, 2, 32, "Text"],
Cell[2782, 94, 151, 4, 33, "Input"],
Cell[2936, 100, 128, 2, 32, "Text"],
Cell[3067, 104, 116, 3, 33, "Input"],
Cell[3186, 109, 216, 3, 32, "Text"],
Cell[3405, 114, 96, 3, 33, "Input"],
Cell[3504, 119, 152, 3, 32, "Text"],
Cell[3659, 124, 72, 2, 33, "Input"],
Cell[3734, 128, 395, 6, 70, "Text"],
Cell[4132, 136, 72, 2, 33, "Input"],
Cell[4207, 140, 514, 7, 89, "Text"],
Cell[4724, 149, 71, 2, 33, "Input"],
Cell[4798, 153, 534, 8, 89, "Text"],
Cell[5335, 163, 79, 2, 33, "Input"],
Cell[5417, 167, 267, 4, 51, "Text"],
Cell[CellGroupData[{
Cell[5709, 175, 334, 6, 72, "Input"],
Cell[6046, 183, 423, 8, 45, "Print"],
Cell[6472, 193, 1006, 14, 197, "Print"],
Cell[7481, 209, 699, 12, 64, "Print"],
Cell[8183, 223, 393, 8, 25, "Print"],
Cell[8579, 233, 1008, 14, 216, "Print"],
Cell[9590, 249, 184, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9811, 258, 50, 0, 33, "Input"],
Cell[9864, 260, 187, 3, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10088, 268, 68, 1, 33, "Input"],
Cell[10159, 271, 498, 15, 42, "Output"]
}, Open  ]],
Cell[10672, 289, 75, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[10772, 293, 70, 1, 33, "Input"],
Cell[10845, 296, 1209, 19, 243, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12091, 320, 78, 1, 33, "Input"],
Cell[12172, 323, 117, 2, 33, "Output"]
}, Open  ]],
Cell[12304, 328, 98, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[12427, 334, 62, 1, 33, "Input"],
Cell[12492, 337, 322, 9, 33, "Output"]
}, Open  ]],
Cell[12829, 349, 490, 11, 145, "Text"],
Cell[CellGroupData[{
Cell[13344, 364, 305, 6, 53, "Input"],
Cell[13652, 372, 854, 14, 83, "Print"],
Cell[14509, 388, 417, 6, 83, "Print"],
Cell[14929, 396, 333, 7, 25, "Print"],
Cell[15265, 405, 298, 6, 25, "Print"],
Cell[15566, 413, 323, 7, 25, "Print"],
Cell[15892, 422, 297, 4, 45, "Print"],
Cell[16192, 428, 308, 6, 25, "Print"],
Cell[16503, 436, 144, 2, 25, "Print"],
Cell[16650, 440, 186, 3, 25, "Print"],
Cell[16839, 445, 331, 7, 25, "Print"],
Cell[17173, 454, 1063, 14, 235, "Print"],
Cell[18239, 470, 184, 4, 33, "Output"]
}, Open  ]],
Cell[18438, 477, 108, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[18571, 484, 61, 1, 33, "Input"],
Cell[18635, 487, 285, 6, 53, "Output"]
}, Open  ]],
Cell[18935, 496, 48, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[19008, 500, 61, 1, 33, "Input"],
Cell[19072, 503, 206, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[19315, 512, 208, 3, 32, "Text"],
Cell[19526, 517, 253, 7, 33, "Input"],
Cell[19782, 526, 429, 12, 42, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[20248, 543, 143, 2, 32, "Text"],
Cell[20394, 547, 253, 7, 33, "Input"],
Cell[20650, 556, 281, 7, 33, "Output"]
}, Open  ]],
Cell[20946, 566, 292, 8, 33, "Input"],
Cell[21241, 576, 86, 2, 32, "Text"],
Cell[21330, 580, 78, 1, 33, "Input"],
Cell[21411, 583, 1269, 46, 117, "Output"],
Cell[22683, 631, 192, 3, 32, "Text"],
Cell[22878, 636, 190, 4, 53, "Input"],
Cell[23071, 642, 503, 7, 102, "Print"],
Cell[CellGroupData[{
Cell[23599, 653, 77, 1, 33, "Input"],
Cell[23679, 656, 19150, 524, 241, "Output"]
}, Open  ]],
Cell[42844, 1183, 342, 8, 107, "Text"],
Cell[43189, 1193, 707, 24, 33, "Input"],
Cell[CellGroupData[{
Cell[43921, 1221, 1728, 58, 91, "Input"],
Cell[45652, 1281, 9724, 333, 371, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[55413, 1619, 61, 1, 33, "Input"],
Cell[55477, 1622, 1921, 65, 85, "Output"]
}, Open  ]],
Cell[57413, 1690, 430, 8, 89, "Text"],
Cell[57846, 1700, 85, 2, 32, "Text"],
Cell[57934, 1704, 161, 3, 32, "Text"],
Cell[58098, 1709, 72, 2, 33, "Input"],
Cell[58173, 1713, 71, 2, 33, "Input"],
Cell[58247, 1717, 79, 2, 33, "Input"],
Cell[CellGroupData[{
Cell[58351, 1723, 320, 5, 72, "Input"],
Cell[58674, 1730, 448, 9, 45, "Print"],
Cell[59125, 1741, 1006, 14, 197, "Print"],
Cell[60134, 1757, 700, 12, 64, "Print"],
Cell[60837, 1771, 391, 8, 25, "Print"],
Cell[61231, 1781, 1008, 14, 216, "Print"]
}, Open  ]],
Cell[CellGroupData[{
Cell[62276, 1800, 268, 5, 72, "Input"],
Cell[62547, 1807, 861, 14, 83, "Print"],
Cell[63411, 1823, 421, 6, 83, "Print"],
Cell[63835, 1831, 310, 6, 25, "Print"],
Cell[64148, 1839, 300, 6, 25, "Print"],
Cell[64451, 1847, 323, 7, 25, "Print"],
Cell[64777, 1856, 299, 4, 45, "Print"],
Cell[65079, 1862, 336, 7, 25, "Print"],
Cell[65418, 1871, 146, 2, 25, "Print"],
Cell[65567, 1875, 188, 3, 25, "Print"],
Cell[65758, 1880, 310, 6, 25, "Print"],
Cell[66071, 1888, 1065, 14, 235, "Print"]
}, Open  ]],
Cell[CellGroupData[{
Cell[67173, 1907, 115, 3, 33, "Input"],
Cell[67291, 1912, 161, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[67489, 1921, 115, 3, 33, "Input"],
Cell[67607, 1926, 2257, 78, 119, "Output"]
}, Open  ]],
Cell[69879, 2007, 137, 3, 33, "Input"],
Cell[70019, 2012, 3378, 112, 155, "Output"],
Cell[73400, 2126, 136, 1, 32, "Text"],
Cell[CellGroupData[{
Cell[73561, 2131, 509, 9, 33, "Input"],
Cell[74073, 2142, 160, 3, 33, "Output"]
}, Open  ]],
Cell[74248, 2148, 170, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[74443, 2155, 66, 1, 33, "Input"],
Cell[74512, 2158, 125, 2, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
