(* 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[     82160,       2398]
NotebookOptionsPosition[     75627,       2201]
NotebookOutlinePosition[     76401,       2228]
CellTagsIndexPosition[     76358,       2225]
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 forced heat equation, \n\n\
Uxx-Ut+a*U*Log[U]=0.",
 FontSize->18,
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[TextData[{
 StyleBox["The function ",
  FontWeight->"Plain"],
 "u",
 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]->D[u[x,t],t]-a*u[x,t]*Log[u[x,t]]\>\"", "}"}]}], 
  ";"}]], "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 \
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[{"{", 
    RowBox[{"\"\<a\>\"", ",", "\"\<Log\>\""}], "}"}]}], ";"}]], "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[{"p", "=", "2"}], ";"}]], "Input"],

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

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

Cell[TextData[StyleBox["When searching for Lie-Backlund groups (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 each of 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.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(48423008\\), the time used = \
\\!\\(251.35273700000002`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 48423008, 251.35273700000002`],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473152748411*^9, 3.47156685395408*^9, 
  3.4715669276706553`*^9, 3.4715673960287457`*^9, 3.472047848371273*^9, 
  3.483748481341292*^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.469473152748411*^9, 3.47156685395408*^9, 
  3.4715669276706553`*^9, 3.4715673960287457`*^9, 3.472047848371273*^9, 
  3.483748481400824*^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 = \\!\\(1376\\), the memory in use = \
\\!\\(48045984\\), the time used = \\!\\(251.416276`\\)\"\>",
  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, 1376, 48045984, 
   251.416276],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473152748411*^9, 3.47156685395408*^9, 
  3.4715669276706553`*^9, 3.4715673960287457`*^9, 3.472047848371273*^9, 
  3.48374848144694*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(48046264\\), the time used = \\!\\(251.416524`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 48046264, 251.416524],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473152748411*^9, 3.47156685395408*^9, 
  3.4715669276706553`*^9, 3.4715673960287457`*^9, 3.472047848371273*^9, 
  3.4837484814494534`*^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.469473152748411*^9, 3.47156685395408*^9, 
  3.4715669276706553`*^9, 3.4715673960287457`*^9, 3.472047848371273*^9, 
  3.483748481451728*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.06466499999999087`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.4694731528948402`*^9, 3.471566854129772*^9, 
  3.471566927739512*^9, 3.4715673962055264`*^9, 3.47204784868531*^9, 
  3.483748481454815*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Let's look at the partial derivatives of the equation \
that appear in the invariance condition.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0", ",", 
   RowBox[{"a", "+", 
    RowBox[{"a", " ", 
     RowBox[{"Log", "[", 
      RowBox[{"y1", "[", 
       RowBox[{"x1", ",", "x2"}], "]"}], "]"}]}]}], ",", "0", ",", 
   RowBox[{"-", "1"}], ",", "1", ",", "0", ",", "0"}], "}"}]], "Output",
 CellChangeTimes->{3.4694731529855556`*^9, 3.4715668541926003`*^9, 
  3.471566927794063*^9, 3.471567396266672*^9, 3.4720478487860107`*^9, 
  3.4837484814976387`*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["The program expresses the determining equations in \
terms of zvariables. Here is the correspondence between z-variables and \
conventional variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", "t"}], ",", 
   RowBox[{"z3", "\[Rule]", 
    RowBox[{"u", "[", 
     RowBox[{"x", ",", "t"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694731530472307`*^9, 3.471566854255484*^9, 
  3.471566927842535*^9, 3.471567396329739*^9, 3.4720478488522463`*^9, 
  3.483748481551855*^9}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here are the determining equations expressed in terms \
of z-variables. This output may be quite long. The equations in the table can \
be distinguished by the ==0 at the end of each item.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData["zdeterminingequations"], "Input"],

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\"\>", 
   ",", "\<\"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\"\>", 
   ",", "\<\"a*eta1[z1, z2, z3] + a*eta1[z1, z2, z3]*Log[z3] - \
a*z3*Log[z3]*Derivative[0, 0, 1][eta1][z1, z2, z3] - Derivative[0, 1, \
0][eta1][z1, z2, z3] + 2*a*z3*Log[z3]*Derivative[1, 0, 0][xse1][z1, z2, z3] + \
Derivative[2, 0, 0][eta1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"3*a*z3*Log[z3]*Derivative[0, 0, 1][xse1][z1, z2, z3] + \
Derivative[0, 1, 0][xse1][z1, z2, z3] + 2*Derivative[1, 0, 1][eta1][z1, z2, \
z3] - Derivative[2, 0, 0][xse1][z1, z2, z3] == 0\"\>", 
   ",", "\<\"a*z3*Log[z3]*Derivative[0, 0, 1][xse2][z1, z2, z3] + \
Derivative[0, 1, 0][xse2][z1, z2, z3] - 2*Derivative[1, 0, 0][xse1][z1, z2, \
z3] - Derivative[2, 0, 0][xse2][z1, z2, z3] == 0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469473153115136*^9, 3.471566854322074*^9, 
  3.4715669278903303`*^9, 3.471567396394671*^9, 3.472047848918562*^9, 
  3.483748481597925*^9}]
}, Open  ]],

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

Cell[CellGroupData[{

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

Cell[BoxData["9"], "Output",
 CellChangeTimes->{3.4694731531983757`*^9, 3.4715668543937483`*^9, 
  3.471566927944439*^9, 3.4715673964840403`*^9, 3.4720478490038967`*^9, 
  3.483748481647396*^9}]
}, Open  ]],

Cell["\<\
Lets look at the determining equations in a slightly more readable form.\
\>", "Text",
 FontWeight->"Plain",
 FontVariations->{"CompatibilityType"->0}],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{
      RowBox[{
       RowBox[{"-", "2"}], " ", 
       RowBox[{
        SuperscriptBox["xse2", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "0", ",", "1"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{"-", 
       RowBox[{
        SuperscriptBox["xse1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "0", ",", "2"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{"-", 
       RowBox[{
        SuperscriptBox["xse2", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "0", ",", "2"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"-", "2"}], " ", 
       RowBox[{
        SuperscriptBox["xse2", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"1", ",", "0", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{
        SuperscriptBox["eta1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "0", ",", "2"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}], "-", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{
        RowBox[{"-", "2"}], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "-", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["xse2", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"a", " ", 
        RowBox[{"eta1", "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "+", 
       RowBox[{"a", " ", 
        RowBox[{"eta1", "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}], " ", 
        RowBox[{"Log", "[", "z3", "]"}]}], "-", 
       RowBox[{"a", " ", "z3", " ", 
        RowBox[{"Log", "[", "z3", "]"}], " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "-", 
       RowBox[{
        SuperscriptBox["eta1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "1", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}], "+", 
       RowBox[{"2", " ", "a", " ", "z3", " ", 
        RowBox[{"Log", "[", "z3", "]"}], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["eta1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"3", " ", "a", " ", "z3", " ", 
        RowBox[{"Log", "[", "z3", "]"}], " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["xse1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "1", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}], "+", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["eta1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "-", 
       RowBox[{
        SuperscriptBox["xse1", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"a", " ", "z3", " ", 
        RowBox[{"Log", "[", "z3", "]"}], " ", 
        RowBox[{
         SuperscriptBox["xse2", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"0", ",", "0", ",", "1"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["xse2", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"0", ",", "1", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}], "-", 
       RowBox[{"2", " ", 
        RowBox[{
         SuperscriptBox["xse1", 
          TagBox[
           RowBox[{"(", 
            RowBox[{"1", ",", "0", ",", "0"}], ")"}],
           Derivative],
          MultilineFunction->None], "[", 
         RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "-", 
       RowBox[{
        SuperscriptBox["xse2", 
         TagBox[
          RowBox[{"(", 
           RowBox[{"2", ",", "0", ",", "0"}], ")"}],
          Derivative],
         MultilineFunction->None], "[", 
        RowBox[{"z1", ",", "z2", ",", "z3"}], "]"}]}], "\[Equal]", "0"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473153284543*^9, 3.471566854465967*^9, 
  3.471566927992035*^9, 3.471567396546812*^9, 3.472047849171183*^9, 
  3.483748481703261*^9}],

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", "[", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "r", ",", "xseon", 
    ",", "\[IndentingNewLine]", "zdeterminingequations", ",", 
    RowBox[{"order", "=", "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.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.4837484817630997`*^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.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481766184*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(48587928\\), The time = \\!\
\\(251.465458`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 48587928, 251.465458],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481768437*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(105\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 105],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481770461*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(174\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 174],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.48374848177346*^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.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481775382*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(48547544\\), The time = \\!\
\\(251.473553`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 48547544, 251.473553],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481777444*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481779386*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.48374848178122*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(48530120\\), The time = \\!\
\\(251.489686`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 48530120, 251.489686],
  Editable->False]], "Print",
 CellChangeTimes->{3.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.48374848178307*^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.4694731533923883`*^9, 3.471566854527301*^9, 
  3.471566928041407*^9, 3.471567396617317*^9, 3.472047849258368*^9, 
  3.483748481784936*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.06300999999999135`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.4694731535170403`*^9, 3.471566854898899*^9, 
  3.471566928108159*^9, 3.47156739699091*^9, 3.472047849748268*^9, 
  3.48374848178764*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here are the infinitesimals for the independent \
variables expressed in terms of z-variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"xse1[z1_, z2_, z3_]=a10 + a11*z1\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_]=a20 + 2*a11*z2\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469473153699636*^9, 3.4715668550391903`*^9, 
  3.471566928144384*^9, 3.47156739714839*^9, 3.4720478498299227`*^9, 
  3.4837484818324957`*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

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

Cell[BoxData[
 RowBox[{"{", "\<\"eta1[z1_, z2_, z3_]=-2*a11*z3*Log[z3]\"\>", 
  "}"}]], "Output",
 CellChangeTimes->{3.469473153767103*^9, 3.471566855106011*^9, 
  3.471566928191165*^9, 3.471567397214492*^9, 3.472047849929529*^9, 
  3.483748481881715*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Express the xse functions in terms of x,y 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[{"a11", " ", "x"}]}], ",", 
   RowBox[{"a20", "+", 
    RowBox[{"2", " ", "a11", " ", "t"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469473153834055*^9, 3.471566855173623*^9, 
  3.471566928244976*^9, 3.471567397281324*^9, 3.472047849989933*^9, 
  3.4837484819314528`*^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[{
   RowBox[{"-", "2"}], " ", "a11", " ", "u", " ", 
   RowBox[{"Log", "[", "u", "]"}]}], "}"}]], "Output",
 CellChangeTimes->{3.46947315390149*^9, 3.471566855240665*^9, 
  3.4715669282905293`*^9, 3.471567397347747*^9, 3.472047850056685*^9, 
  3.483748481987018*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{
  RowBox[{"Column", "[", "infinitesimalgroups", "]"}], "/.", 
  "\[InvisibleSpace]", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "t"}], ",", 
    RowBox[{"z3", "\[Rule]", "u"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", 
         RowBox[{"2", " ", "t"}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", "2"}], " ", "u", " ", 
         RowBox[{"Log", "[", "u", "]"}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473153968109*^9, 3.471566855307143*^9, 
  3.47156692834517*^9, 3.471567397415759*^9, 3.47204785019067*^9, 
  3.483748482049109*^9}],

Cell[TextData[{
 StyleBox["This process has correctly captured the translation groups \
(xse,eta)=(1,0,0),(0,1,0) corresponding to the parameters a10 and a20. But \
the expressions multiplying a11 do not correspond to any relevant group of \
the equation. The problem here comes from the Logarithmic terms that arise in \
the determining equations. The determining equations themselves are correct \
but the ",
  FontWeight->"Plain"],
 "SolveDeterminingEquations",
 StyleBox[" function is incapable of fully identifying the group of this \
equation which contains transcendental functions.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["To make further progress let's use the following \
ansatz to try to simplify the determining equations.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c1", "+", 
   RowBox[{"f", "[", "z2", "]"}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse2", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", "0"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"eta1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"z1", "*", "z3", "*", 
   RowBox[{"g", "[", "z2", "]"}]}]}]], "Input"],

Cell[TextData[StyleBox["Substitute these functionss into the expression form \
of the determining equations.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn1", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {
     RowBox[{
      RowBox[{
       RowBox[{"a", " ", "z1", " ", "z3", " ", 
        RowBox[{"g", "[", "z2", "]"}]}], "-", 
       RowBox[{"z1", " ", "z3", " ", 
        RowBox[{
         SuperscriptBox["g", "\[Prime]",
          MultilineFunction->None], "[", "z2", "]"}]}]}], "\[Equal]", "0"}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"2", " ", 
        RowBox[{"g", "[", "z2", "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["f", "\[Prime]",
         MultilineFunction->None], "[", "z2", "]"}]}], "\[Equal]", "0"}]},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473154118105*^9, 3.47156685545455*^9, 
  3.4715669285208607`*^9, 3.471567397563195*^9, 3.472047850337335*^9, 
  3.483748482259288*^9}],

Cell[CellGroupData[{

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

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {
     RowBox[{
      RowBox[{"a", " ", "z1", " ", "z3", " ", 
       RowBox[{"g", "[", "z2", "]"}]}], "\[Equal]", 
      RowBox[{"z1", " ", "z3", " ", 
       RowBox[{
        SuperscriptBox["g", "\[Prime]",
         MultilineFunction->None], "[", "z2", "]"}]}]}]},
    {
     RowBox[{
      RowBox[{
       RowBox[{"2", " ", 
        RowBox[{"g", "[", "z2", "]"}]}], "+", 
       RowBox[{
        SuperscriptBox["f", "\[Prime]",
         MultilineFunction->None], "[", "z2", "]"}]}], "\[Equal]", "0"}]},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4694731541750402`*^9, 3.47156685549144*^9, 
  3.4715669285788383`*^9, 3.4715673975995073`*^9, 3.472047850383237*^9, 
  3.4837484823392277`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The first determining equation is uncoupled from the \
second. Mathematica has the capability of solving such equations.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"DSolve", "[", 
  RowBox[{
   RowBox[{
    RowBox[{
     RowBox[{"a", "*", 
      RowBox[{"g", "[", "z2", "]"}]}], "-", 
     RowBox[{
      RowBox[{"g", "'"}], "[", "z2", "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{"g", "[", "z2", "]"}], ",", "z2"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"g", "[", "z2", "]"}], "\[Rule]", 
    RowBox[{
     SuperscriptBox["\[ExponentialE]", 
      RowBox[{"a", " ", "z2"}]], " ", 
     RowBox[{"C", "[", "1", "]"}]}]}], "}"}], "}"}]], "Output",
 CellChangeTimes->{3.469473154277894*^9, 3.471566855644898*^9, 
  3.4715669286290617`*^9, 3.471567397653255*^9, 3.472047850786429*^9, 
  3.483748482521389*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Now try a new ansatz.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c1", "+", 
   RowBox[{"f", "[", "z2", "]"}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse2", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", "0"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"eta1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c2", "*", "z1", "*", "z3", "*", 
   RowBox[{"Exp", "[", 
    RowBox[{"a", "*", "z2"}], "]"}]}]}]], "Input"],

Cell[TextData[StyleBox["Substitute these functions into the expression form \
of the determining equations.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn2", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {
     RowBox[{
      RowBox[{
       RowBox[{"2", " ", "c2", " ", 
        SuperscriptBox["\[ExponentialE]", 
         RowBox[{"a", " ", "z2"}]]}], "+", 
       RowBox[{
        SuperscriptBox["f", "\[Prime]",
         MultilineFunction->None], "[", "z2", "]"}]}], "\[Equal]", "0"}]},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473154385085*^9, 3.471566855772183*^9, 
  3.4715669287543364`*^9, 3.471567397779995*^9, 3.472047850905654*^9, 
  3.4837484826911707`*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"DSolve", "[", 
  RowBox[{
   RowBox[{
    RowBox[{
     RowBox[{"2", "*", "c2", "*", 
      RowBox[{"Exp", "[", 
       RowBox[{"a", "*", "z2"}], "]"}]}], "+", 
     RowBox[{
      RowBox[{"f", "'"}], "[", "z2", "]"}]}], "\[Equal]", "0"}], ",", 
   RowBox[{"f", "[", "z2", "]"}], ",", "z2"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"f", "[", "z2", "]"}], "\[Rule]", 
    RowBox[{
     RowBox[{"-", 
      FractionBox[
       RowBox[{"2", " ", "c2", " ", 
        SuperscriptBox["\[ExponentialE]", 
         RowBox[{"a", " ", "z2"}]]}], "a"]}], "+", 
     RowBox[{"C", "[", "1", "]"}]}]}], "}"}], "}"}]], "Output",
 CellChangeTimes->{3.46947315444235*^9, 3.471566855918051*^9, 
  3.471566928813282*^9, 3.471567397836631*^9, 3.472047850978712*^9, 
  3.483748482773418*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Now try.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c1", "-", 
   RowBox[{"2", "*", 
    RowBox[{"(", 
     RowBox[{"c2", "/", "a"}], ")"}], "*", 
    RowBox[{"Exp", "[", 
     RowBox[{"a", "*", "z2"}], "]"}]}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse2", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", "c3"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"eta1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c2", "*", "z1", "*", "z3", "*", 
   RowBox[{"Exp", "[", 
    RowBox[{"a", "*", "z2"}], "]"}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn3", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473154569263*^9, 3.47156685607246*^9, 
  3.471566928937717*^9, 3.471567397946938*^9, 3.4720478510906067`*^9, 
  3.4837484829914*^9}],

Cell[TextData[StyleBox["The ODE seems to be invariant under the three \
parameter group\n\nxse1[x,t,u]=c1-(2*c2/a)Exp[a*t]\nxse2[x,t,u]=c3\n\
eta[x,t,u]=c2*x*u*Exp[a*t].",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["where c1,c2 and c3 are the group parameters. Let's \
generate a commutator table for the group. First set up an array of the \
groups.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"infinitesimalgroupsxy", "=", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"1", ",", "0"}], "}"}], ",", 
      RowBox[{"{", "0", "}"}]}], "}"}], ",", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"0", ",", "1"}], "}"}], ",", 
      RowBox[{"{", "0", "}"}]}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{
        RowBox[{
         RowBox[{"-", 
          RowBox[{"(", 
           RowBox[{"2", "/", "a"}], ")"}]}], "*", 
         RowBox[{"Exp", "[", 
          RowBox[{"a", "*", "t"}], "]"}]}], ",", "0"}], "}"}], ",", 
      "\[IndentingNewLine]", 
      RowBox[{"{", 
       RowBox[{"x", "*", "u", "*", 
        RowBox[{"Exp", "[", 
         RowBox[{"a", "*", "t"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"1", ",", "0"}], "}"}], ",", 
     RowBox[{"{", "0", "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"0", ",", "1"}], "}"}], ",", 
     RowBox[{"{", "0", "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{
       RowBox[{"-", 
        FractionBox[
         RowBox[{"2", " ", 
          SuperscriptBox["\[ExponentialE]", 
           RowBox[{"a", " ", "t"}]]}], "a"]}], ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       SuperscriptBox["\[ExponentialE]", 
        RowBox[{"a", " ", "t"}]], " ", "u", " ", "x"}], "}"}]}], "}"}]}], 
  "}"}]], "Output",
 CellChangeTimes->{3.469473154626164*^9, 3.471566856129719*^9, 
  3.471566929004593*^9, 3.471567397989645*^9, 3.472047851147272*^9, 
  3.48374848304224*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{"Column", "[", "infinitesimalgroupsxy", "]"}]], "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[{
         RowBox[{"-", 
          FractionBox[
           RowBox[{"2", " ", 
            SuperscriptBox["\[ExponentialE]", 
             RowBox[{"a", " ", "t"}]]}], "a"]}], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["\[ExponentialE]", 
          RowBox[{"a", " ", "t"}]], " ", "u", " ", "x"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473154753502*^9, 3.471566856179833*^9, 
  3.471566929076458*^9, 3.471567398040009*^9, 3.472047851274619*^9, 
  3.483748483194543*^9}],

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

Cell[BoxData["\<\"MakeCommutatorTable has finished executing. You can look at \
the output in the table commutatortable. To present the output in the most \
readable form you may want view it as a matrix using \
MatrixForm[commutatortable]. Occasionally the entries in the commutatortable \
will have terms that cancel. To get rid of these terms use the function \
Simplify before viewing the table.\"\>"], "Print",
 CellChangeTimes->{3.469473154810176*^9, 3.471566856229683*^9, 
  3.471566929137968*^9, 3.471567398164288*^9, 3.472047851330349*^9, 
  3.4837484832449007`*^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[{"{", 
            RowBox[{
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "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[{"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"}], " ", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"a", " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "u", " ", "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[{"{", 
            RowBox[{
             RowBox[{"-", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], " ", "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[{
             RowBox[{"2", " ", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "a"}], " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "u", " ", "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.46947315486264*^9, 3.4715668562821503`*^9, 
  3.471566929222309*^9, 3.471567398222322*^9, 3.47204785138582*^9, 
  3.483748483313566*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The commutator table seems to suggest the existence \
of an additional group, namely (0,0,-u*Exp[a*t]). Now try",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{"c1", "-", 
   RowBox[{"2", "*", 
    RowBox[{"(", 
     RowBox[{"c2", "/", "a"}], ")"}], "*", 
    RowBox[{"Exp", "[", 
     RowBox[{"a", "*", "z2"}], "]"}]}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"xse2", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", "c3"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"eta1", "[", 
   RowBox[{"z1_", ",", "z2_", ",", "z3_"}], "]"}], ":=", 
  RowBox[{
   RowBox[{"c2", "*", "z1", "*", "z3", "*", 
    RowBox[{"Exp", "[", 
     RowBox[{"a", "*", "z2"}], "]"}]}], "-", 
   RowBox[{"c4", "*", "z3", "*", 
    RowBox[{"Exp", "[", 
     RowBox[{"a", "*", "z2"}], "]"}]}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{"zdeterminingequationscolumn3", "=", 
  TagBox[
   FormBox[
    RowBox[{"Column", "[", 
     RowBox[{
      RowBox[{"ToExpression", "[", "zdeterminingequations", "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"Left", ",", "Below"}], "}"}]}], "]"}],
    TraditionalForm],
   TraditionalForm,
   Editable->True]}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {
     RowBox[{
      RowBox[{
       RowBox[{"a", " ", "c4", " ", 
        SuperscriptBox["\[ExponentialE]", 
         RowBox[{"a", " ", "z2"}]], " ", "z3"}], "-", 
       RowBox[{"a", " ", "c2", " ", 
        SuperscriptBox["\[ExponentialE]", 
         RowBox[{"a", " ", "z2"}]], " ", "z1", " ", "z3"}], "+", 
       RowBox[{"a", " ", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{
           RowBox[{"-", "c4"}], " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]], " ", "z3"}], "+", 
          RowBox[{"c2", " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]], " ", "z1", " ", "z3"}]}], ")"}]}], "-", 
       RowBox[{"a", " ", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{
           RowBox[{"-", "c4"}], " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]]}], "+", 
          RowBox[{"c2", " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]], " ", "z1"}]}], ")"}], " ", "z3", " ", 
        RowBox[{"Log", "[", "z3", "]"}]}], "+", 
       RowBox[{"a", " ", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{
           RowBox[{"-", "c4"}], " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]], " ", "z3"}], "+", 
          RowBox[{"c2", " ", 
           SuperscriptBox["\[ExponentialE]", 
            RowBox[{"a", " ", "z2"}]], " ", "z1", " ", "z3"}]}], ")"}], " ", 
        RowBox[{"Log", "[", "z3", "]"}]}]}], "\[Equal]", "0"}]},
    {"True"},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473155004591*^9, 3.4715668564078617`*^9, 
  3.471566929370714*^9, 3.471567398365148*^9, 3.472047851509186*^9, 
  3.4837484834615593`*^9}],

Cell[CellGroupData[{

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

Cell[BoxData[
 TagBox[GridBox[{
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"},
    {"True"}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Below}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4694731550612087`*^9, 3.4715668564638567`*^9, 
  3.471566929488772*^9, 3.471567398421493*^9, 3.472047851564457*^9, 
  3.483748483511549*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Indeed there is an additional group! Finally, the ODE \
is invariant under the four parameter group\n\n\
xse1[x,t,u]=c1-(2*c2/a)Exp[a*t]\nxse2[x,t,u]=c3\n\
eta[x,t,u]=c2*x*u*Exp[a*t]-c4*u*Exp[a*t].",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["Let's generate a commutator table for the group. \
First set up an array of the groups.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"infinitesimalgroupsxy", "=", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"1", ",", "0"}], "}"}], ",", 
      RowBox[{"{", "0", "}"}]}], "}"}], ",", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"0", ",", "1"}], "}"}], ",", 
      RowBox[{"{", "0", "}"}]}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{
        RowBox[{
         RowBox[{"-", 
          RowBox[{"(", 
           RowBox[{"2", "/", "a"}], ")"}]}], "*", 
         RowBox[{"Exp", "[", 
          RowBox[{"a", "*", "t"}], "]"}]}], ",", "0"}], "}"}], ",", 
      "\[IndentingNewLine]", 
      RowBox[{"{", 
       RowBox[{"x", "*", "u", "*", 
        RowBox[{"Exp", "[", 
         RowBox[{"a", "*", "t"}], "]"}]}], "}"}]}], "}"}], ",", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"0", ",", "0"}], "}"}], ",", 
      RowBox[{"{", 
       RowBox[{
        RowBox[{"-", "u"}], "*", 
        RowBox[{"Exp", "[", 
         RowBox[{"a", "*", "t"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"1", ",", "0"}], "}"}], ",", 
     RowBox[{"{", "0", "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"0", ",", "1"}], "}"}], ",", 
     RowBox[{"{", "0", "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{
       RowBox[{"-", 
        FractionBox[
         RowBox[{"2", " ", 
          SuperscriptBox["\[ExponentialE]", 
           RowBox[{"a", " ", "t"}]]}], "a"]}], ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       SuperscriptBox["\[ExponentialE]", 
        RowBox[{"a", " ", "t"}]], " ", "u", " ", "x"}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"0", ",", "0"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"-", 
        SuperscriptBox["\[ExponentialE]", 
         RowBox[{"a", " ", "t"}]]}], " ", "u"}], "}"}]}], "}"}]}], 
  "}"}]], "Output",
 CellChangeTimes->{3.4694731551120443`*^9, 3.471566856514123*^9, 
  3.47156692955589*^9, 3.471567398471998*^9, 3.4720478516147738`*^9, 
  3.483748483578479*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{"Column", "[", "infinitesimalgroupsxy", "]"}]], "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[{
         RowBox[{"-", 
          FractionBox[
           RowBox[{"2", " ", 
            SuperscriptBox["\[ExponentialE]", 
             RowBox[{"a", " ", "t"}]]}], "a"]}], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["\[ExponentialE]", 
          RowBox[{"a", " ", "t"}]], " ", "u", " ", "x"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", 
          SuperscriptBox["\[ExponentialE]", 
           RowBox[{"a", " ", "t"}]]}], " ", "u"}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469473155161274*^9, 3.471566856564909*^9, 
  3.471566929622569*^9, 3.4715673985246077`*^9, 3.472047851665023*^9, 
  3.483748483646035*^9}],

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

Cell[BoxData["\<\"MakeCommutatorTable has finished executing. You can look at \
the output in the table commutatortable. To present the output in the most \
readable form you may want view it as a matrix using \
MatrixForm[commutatortable]. Occasionally the entries in the commutatortable \
will have terms that cancel. To get rid of these terms use the function \
Simplify before viewing the table.\"\>"], "Print",
 CellChangeTimes->{3.469473155212347*^9, 3.471566856764824*^9, 
  3.471566929690262*^9, 3.471567398571555*^9, 3.4720478517141027`*^9, 
  3.48374848371222*^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[{"{", 
            RowBox[{
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "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[{"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[{
              RowBox[{"-", "2"}], " ", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{"a", " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "u", " ", "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[{"{", 
            RowBox[{
             RowBox[{"-", "a"}], " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "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[{"{", 
            RowBox[{
             RowBox[{"-", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], " ", "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[{
             RowBox[{"2", " ", 
              SuperscriptBox["\[ExponentialE]", 
               RowBox[{"a", " ", "t"}]]}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "a"}], " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "u", " ", "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]", ")"}], 
      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[{"{", 
            RowBox[{"a", " ", 
             SuperscriptBox["\[ExponentialE]", 
              RowBox[{"a", " ", "t"}]], " ", "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[{"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.469473155265547*^9, 3.471566856866951*^9, 
  3.471566929758232*^9, 3.471567398624037*^9, 3.472047851773243*^9, 
  3.483748483780755*^9}]
}, Open  ]],

Cell[TextData[StyleBox["This appears to be the complete group.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData["5681607608"], "Output",
 CellChangeTimes->{3.469473155310528*^9, 3.471566856964727*^9, 
  3.4715669298062077`*^9, 3.471567398672265*^9, 3.4720478518144217`*^9, 
  3.483748483845598*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{965, 1082},
WindowMargins->{{74, Automatic}, {Automatic, 18}},
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,
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, 243, 5, 74, "Text"],
Cell[791, 27, 124, 1, 26, "Text"],
Cell[918, 30, 160, 4, 27, "Input"],
Cell[1081, 36, 476, 13, 26, "Text"],
Cell[1560, 51, 101, 2, 27, "Input"],
Cell[1664, 55, 164, 3, 26, "Text"],
Cell[1831, 60, 145, 4, 43, "Input"],
Cell[1979, 66, 299, 8, 26, "Text"],
Cell[2281, 76, 184, 5, 43, "Input"],
Cell[2468, 83, 130, 2, 26, "Text"],
Cell[2601, 87, 151, 4, 27, "Input"],
Cell[2755, 93, 128, 2, 26, "Text"],
Cell[2886, 97, 116, 3, 27, "Input"],
Cell[3005, 102, 227, 4, 26, "Text"],
Cell[3235, 108, 144, 4, 27, "Input"],
Cell[3382, 114, 152, 3, 26, "Text"],
Cell[3537, 119, 67, 2, 27, "Input"],
Cell[3607, 123, 385, 6, 41, "Text"],
Cell[3995, 131, 67, 2, 27, "Input"],
Cell[4065, 135, 509, 7, 56, "Text"],
Cell[4577, 144, 71, 2, 27, "Input"],
Cell[4651, 148, 576, 8, 56, "Text"],
Cell[5230, 158, 79, 2, 27, "Input"],
Cell[5312, 162, 267, 4, 26, "Text"],
Cell[CellGroupData[{
Cell[5604, 170, 301, 6, 43, "Input"],
Cell[5908, 178, 518, 10, 20, "Print"],
Cell[6429, 190, 1078, 15, 126, "Print"],
Cell[7510, 207, 754, 13, 36, "Print"],
Cell[8267, 222, 469, 9, 20, "Print"],
Cell[8739, 233, 1080, 15, 126, "Print"],
Cell[9822, 250, 256, 5, 27, "Output"]
}, Open  ]],
Cell[10093, 258, 186, 3, 26, "Text"],
Cell[CellGroupData[{
Cell[10304, 265, 45, 0, 27, "Input"],
Cell[10352, 267, 463, 11, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10852, 283, 240, 4, 26, "Text"],
Cell[CellGroupData[{
Cell[11117, 291, 39, 0, 27, "Input"],
Cell[11159, 293, 394, 10, 27, "Output"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[11602, 309, 278, 4, 41, "Text"],
Cell[11883, 315, 47, 0, 27, "Input"],
Cell[11933, 317, 1359, 22, 178, "Output"]
}, Open  ]],
Cell[13307, 342, 57, 0, 26, "Text"],
Cell[CellGroupData[{
Cell[13389, 346, 78, 1, 27, "Input"],
Cell[13470, 349, 194, 3, 27, "Output"]
}, Open  ]],
Cell[13679, 355, 161, 4, 26, "Text"],
Cell[13843, 361, 345, 11, 27, "Input"],
Cell[14191, 374, 7079, 218, 201, "Output"],
Cell[21273, 594, 490, 11, 101, "Text"],
Cell[CellGroupData[{
Cell[21788, 609, 296, 6, 43, "Input"],
Cell[22087, 617, 928, 15, 51, "Print"],
Cell[23018, 634, 488, 7, 51, "Print"],
Cell[23509, 643, 383, 7, 20, "Print"],
Cell[23895, 652, 369, 7, 20, "Print"],
Cell[24267, 661, 391, 8, 20, "Print"],
Cell[24661, 671, 368, 5, 36, "Print"],
Cell[25032, 678, 383, 7, 20, "Print"],
Cell[25418, 687, 213, 3, 20, "Print"],
Cell[25634, 692, 256, 4, 20, "Print"],
Cell[25893, 698, 382, 7, 20, "Print"],
Cell[26278, 707, 1134, 15, 156, "Print"],
Cell[27415, 724, 253, 5, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[27705, 734, 184, 3, 26, "Text"],
Cell[27892, 739, 38, 0, 27, "Input"],
Cell[27933, 741, 320, 6, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[28290, 752, 141, 2, 26, "Text"],
Cell[28434, 756, 38, 0, 27, "Input"],
Cell[28475, 758, 255, 5, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[28767, 768, 144, 3, 26, "Text"],
Cell[28914, 773, 253, 7, 27, "Input"],
Cell[29170, 782, 349, 9, 27, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[29556, 796, 143, 2, 26, "Text"],
Cell[29702, 800, 253, 7, 27, "Input"],
Cell[29958, 809, 304, 7, 27, "Output"]
}, Open  ]],
Cell[30277, 819, 278, 8, 27, "Input"],
Cell[30558, 829, 916, 30, 61, "Output"],
Cell[31477, 861, 658, 13, 56, "Text"],
Cell[32138, 876, 193, 3, 26, "Text"],
Cell[32334, 881, 175, 5, 27, "Input"],
Cell[32512, 888, 121, 3, 27, "Input"],
Cell[32636, 893, 186, 5, 27, "Input"],
Cell[32825, 900, 174, 3, 26, "Text"],
Cell[33002, 905, 346, 11, 27, "Input"],
Cell[33351, 918, 1003, 32, 151, "Output"],
Cell[CellGroupData[{
Cell[34379, 954, 61, 1, 27, "Input"],
Cell[34443, 957, 976, 31, 151, "Output"]
}, Open  ]],
Cell[35434, 991, 210, 3, 26, "Text"],
Cell[CellGroupData[{
Cell[35669, 998, 292, 9, 27, "Input"],
Cell[35964, 1009, 419, 11, 33, "Output"]
}, Open  ]],
Cell[36398, 1023, 111, 2, 26, "Text"],
Cell[36512, 1027, 175, 5, 27, "Input"],
Cell[36690, 1034, 121, 3, 27, "Input"],
Cell[36814, 1039, 224, 6, 27, "Input"],
Cell[37041, 1047, 173, 3, 26, "Text"],
Cell[37217, 1052, 346, 11, 27, "Input"],
Cell[37566, 1065, 767, 25, 151, "Output"],
Cell[CellGroupData[{
Cell[38358, 1094, 333, 10, 27, "Input"],
Cell[38694, 1106, 507, 14, 50, "Output"]
}, Open  ]],
Cell[39216, 1123, 98, 2, 26, "Text"],
Cell[39317, 1127, 290, 9, 27, "Input"],
Cell[39610, 1138, 122, 3, 27, "Input"],
Cell[39735, 1143, 224, 6, 27, "Input"],
Cell[39962, 1151, 346, 11, 27, "Input"],
Cell[40311, 1164, 486, 17, 147, "Output"],
Cell[40800, 1183, 235, 4, 86, "Text"],
Cell[41038, 1189, 224, 4, 26, "Text"],
Cell[CellGroupData[{
Cell[41287, 1197, 867, 28, 58, "Input"],
Cell[42157, 1227, 894, 29, 50, "Output"]
}, Open  ]],
Cell[43066, 1259, 79, 1, 27, "Input"],
Cell[43148, 1262, 1070, 34, 75, "Output"],
Cell[44221, 1298, 191, 4, 43, "Input"],
Cell[44415, 1304, 575, 8, 66, "Print"],
Cell[CellGroupData[{
Cell[45015, 1316, 77, 1, 27, "Input"],
Cell[45095, 1319, 7895, 213, 149, "Output"]
}, Open  ]],
Cell[53005, 1535, 201, 3, 26, "Text"],
Cell[53209, 1540, 290, 9, 27, "Input"],
Cell[53502, 1551, 122, 3, 27, "Input"],
Cell[53627, 1556, 345, 10, 27, "Input"],
Cell[53975, 1568, 346, 11, 27, "Input"],
Cell[54324, 1581, 2041, 57, 173, "Output"],
Cell[CellGroupData[{
Cell[56390, 1642, 61, 1, 27, "Input"],
Cell[56454, 1645, 491, 17, 147, "Output"]
}, Open  ]],
Cell[56960, 1665, 287, 5, 86, "Text"],
Cell[57250, 1672, 177, 3, 26, "Text"],
Cell[CellGroupData[{
Cell[57452, 1679, 1128, 37, 58, "Input"],
Cell[58583, 1718, 1160, 38, 50, "Output"]
}, Open  ]],
Cell[59758, 1759, 79, 1, 27, "Input"],
Cell[59840, 1762, 1353, 44, 95, "Output"],
Cell[61196, 1808, 191, 4, 43, "Input"],
Cell[61390, 1814, 574, 8, 66, "Print"],
Cell[CellGroupData[{
Cell[61989, 1826, 77, 1, 27, "Input"],
Cell[62069, 1829, 13106, 354, 187, "Output"]
}, Open  ]],
Cell[75190, 2186, 128, 2, 26, "Text"],
Cell[CellGroupData[{
Cell[75343, 2192, 66, 1, 27, "Input"],
Cell[75412, 2195, 199, 3, 27, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
