(* 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[     54612,       1566]
NotebookOptionsPosition[     50124,       1424]
NotebookOutlinePosition[     50901,       1451]
CellTagsIndexPosition[     50858,       1448]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[StyleBox["Use the package IntroToSymmetry.m to work out the \
point group of the second order ODE\n\nYxx-2*Yx^2/Y-(1/X)*Yx-Y^2/X=0 \n\n\
considered in homework exercise 8.10.",
 FontSize->14,
 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.472046975702084*^9, 
  3.4720469762929573`*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell["Enter the input equation as a string, ie, in quotes.", "Text"],

Cell["\<\
inputequation=
\"D[y[x],x,x]-(2/y[x])*D[y[x],x]^2-(1/x)*D[y[x],x]-y[x]^2/x\";\
\>", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
The function y[x] is a solution of the equation and this constraint must be \
applied to the invariance condition. Replace the second derivative wherever \
it appears in the invariance condition.\
\>", "Text"],

Cell["\<\
rulesarray=
{\"D[y[x],x,x]->(2/y[x])*D[y[x],x]^2+(1/x)*D[y[x],x]+y[x]^2/x\"};\
\>", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[BoxData[
 RowBox[{
  RowBox[{"independentvariables", "=", 
   RowBox[{"{", "\"\<x\>\"", "}"}]}], ";"}]], "Input"],

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

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

Cell[TextData[StyleBox["Enter the list of function names and constants that \
need to be protected when the equation is converted to generic (x1,y1) \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"frozennames", "=", 
   RowBox[{"{", "\"\<\>\"", "}"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.469400451653645*^9, 3.4694004518489656`*^9}}],

Cell[TextData[StyleBox["Enter the maximum derivative order of the equation.",
 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 one sets 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 remains 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 r times 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. ",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(25088336\\), the time used = \\!\\(0.828217`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 25088336, 0.828217],
  Editable->False]], "Print",
 CellChangeTimes->{3.469400263164378*^9, 3.469400327355445*^9, 
  3.469400620928383*^9, 3.4715546362990026`*^9, 3.4715770883766623`*^9, 
  3.4836498820854607`*^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.469400263164378*^9, 3.469400327355445*^9, 
  3.469400620928383*^9, 3.4715546362990026`*^9, 3.4715770883766623`*^9, 
  3.4836498821513653`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(4\\), the \
byte count of zdeterminingequations = \\!\\(952\\), the memory in use = \
\\!\\(25206960\\), the time used = \\!\\(0.882455`\\)\"\>",
  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 = ``", 4, 952, 25206960, 0.882455],
  Editable->False]], "Print",
 CellChangeTimes->{3.469400263164378*^9, 3.469400327355445*^9, 
  3.469400620928383*^9, 3.4715546362990026`*^9, 3.4715770883766623`*^9, 
  3.483649882188108*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(25207824\\), the time used = \\!\\(0.882695`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 25207824, 0.882695],
  Editable->False]], "Print",
 CellChangeTimes->{3.469400263164378*^9, 3.469400327355445*^9, 
  3.469400620928383*^9, 3.4715546362990026`*^9, 3.4715770883766623`*^9, 
  3.48364988218917*^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.469400263164378*^9, 3.469400327355445*^9, 
  3.469400620928383*^9, 3.4715546362990026`*^9, 3.4715770883766623`*^9, 
  3.48364988219*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.05520400000000003`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469400263323676*^9, 3.469400327599457*^9, 
  3.4694006209738693`*^9, 3.471554636470783*^9, 3.471577088452117*^9, 
  3.4836498822218924`*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["\<\"D[y1[x1],x1,x1]-(2/y1[x1])*D[y1[x1],x1]^2-(1/x1)*D[y1[x1],\
x1]-y1[x1]^2/x1\"\>"], "Output",
 CellChangeTimes->{3.469400263405108*^9, 3.46940032768046*^9, 
  3.469400621016135*^9, 3.471554636552329*^9, 3.471577088483282*^9, 
  3.4836498822761583`*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    FractionBox[
     SuperscriptBox[
      RowBox[{"y1", "[", "x1", "]"}], "2"], 
     SuperscriptBox["x1", "2"]], "+", 
    FractionBox[
     RowBox[{
      SuperscriptBox["y1", "\[Prime]",
       MultilineFunction->None], "[", "x1", "]"}], 
     SuperscriptBox["x1", "2"]]}], ",", 
   RowBox[{
    RowBox[{"-", 
     FractionBox[
      RowBox[{"2", " ", 
       RowBox[{"y1", "[", "x1", "]"}]}], "x1"]}], "+", 
    FractionBox[
     RowBox[{"2", " ", 
      SuperscriptBox[
       RowBox[{
        SuperscriptBox["y1", "\[Prime]",
         MultilineFunction->None], "[", "x1", "]"}], "2"]}], 
     SuperscriptBox[
      RowBox[{"y1", "[", "x1", "]"}], "2"]]}], ",", 
   RowBox[{
    RowBox[{"-", 
     FractionBox["1", "x1"]}], "-", 
    FractionBox[
     RowBox[{"4", " ", 
      RowBox[{
       SuperscriptBox["y1", "\[Prime]",
        MultilineFunction->None], "[", "x1", "]"}]}], 
     RowBox[{"y1", "[", "x1", "]"}]]}], ",", "1"}], "}"}]], "Output",
 CellChangeTimes->{3.4694002634787283`*^9, 3.4694003277546387`*^9, 
  3.469400621094376*^9, 3.471554636614097*^9, 3.47157708852973*^9, 
  3.483649882322509*^9}]
}, Open  ]],

Cell["Look at the determining equations", "Text"],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"-2*z1^2*z2*Derivative[0, 1][xse1][z1, z2] - \
z1^2*z2^2*Derivative[0, 2][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"2*z1^2*eta1[z1, z2] - 2*z1^2*z2*Derivative[0, 1][eta1][z1, z2] - \
2*z1*z2^2*Derivative[0, 1][xse1][z1, z2] + z1^2*z2^2*Derivative[0, \
2][eta1][z1, z2] - 2*z1^2*z2^2*Derivative[1, 1][xse1][z1, z2] == 0\"\>", 
   ",", "\<\"-2*z1*z2^3*eta1[z1, z2] + z2^4*xse1[z1, z2] + \
z1*z2^4*Derivative[0, 1][eta1][z1, z2] - z1*z2^2*Derivative[1, 0][eta1][z1, \
z2] - 2*z1*z2^4*Derivative[1, 0][xse1][z1, z2] + z1^2*z2^2*Derivative[2, \
0][eta1][z1, z2] == 0\"\>", 
   ",", "\<\"z2^2*xse1[z1, z2] - 3*z1*z2^4*Derivative[0, 1][xse1][z1, z2] - \
4*z1^2*z2*Derivative[1, 0][eta1][z1, z2] - z1*z2^2*Derivative[1, 0][xse1][z1, \
z2] + 2*z1^2*z2^2*Derivative[1, 1][eta1][z1, z2] - z1^2*z2^2*Derivative[2, \
0][xse1][z1, z2] == 0\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469400263561872*^9, 3.469400327837376*^9, 
  3.469400621152663*^9, 3.471554636678117*^9, 3.471577088562748*^9, 
  3.4836498823768387`*^9}]
}, Open  ]],

Cell["\<\
Here are the determining equations in a slightly more readable form as \
expressions rather than strings.\
\>", "Text"],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    RowBox[{
     RowBox[{
      RowBox[{"-", "2"}], " ", 
      SuperscriptBox["z1", "2"], " ", "z2", " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "2"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "2"], " ", 
      RowBox[{"eta1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "2"], " ", "z2", " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", "z1", " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "2"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{
      RowBox[{"-", "2"}], " ", "z1", " ", 
      SuperscriptBox["z2", "3"], " ", 
      RowBox[{"eta1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z2", "4"], " ", 
      RowBox[{"xse1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{"z1", " ", 
      SuperscriptBox["z2", "4"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"z1", " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"2", " ", "z1", " ", 
      SuperscriptBox["z2", "4"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"2", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}], ",", 
   RowBox[{
    RowBox[{
     RowBox[{
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{"xse1", "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"3", " ", "z1", " ", 
      SuperscriptBox["z2", "4"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"0", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"4", " ", 
      SuperscriptBox["z1", "2"], " ", "z2", " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{"z1", " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "+", 
     RowBox[{"2", " ", 
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["eta1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"1", ",", "1"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}], "-", 
     RowBox[{
      SuperscriptBox["z1", "2"], " ", 
      SuperscriptBox["z2", "2"], " ", 
      RowBox[{
       SuperscriptBox["xse1", 
        TagBox[
         RowBox[{"(", 
          RowBox[{"2", ",", "0"}], ")"}],
         Derivative],
        MultilineFunction->None], "[", 
       RowBox[{"z1", ",", "z2"}], "]"}]}]}], "\[Equal]", "0"}]}], 
  "}"}]], "Output",
 CellChangeTimes->{3.4694002636563683`*^9, 3.469400327923938*^9, 
  3.469400621204629*^9, 3.471554636750991*^9, 3.471577088621014*^9, 
  3.4836498824239883`*^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]", 
    RowBox[{"y", "[", "x", "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469400263739146*^9, 3.4694003280278387`*^9, 
  3.4694006212491007`*^9, 3.471554636818758*^9, 3.4715770886629143`*^9, 
  3.483649882477438*^9}]
}, Open  ]],

Cell["\<\
Now solve the determining equations in terms of multivariable polynomials of \
a selected order.\
\>", "Text"],

Cell[CellGroupData[{

Cell["\<\
Timing[SolveDeterminingEquations[
independentvariables,dependentvariables,r,
xseon,zdeterminingequations,order=8]]\
\>", "Input",
 CellChangeTimes->{{3.469400307618002*^9, 3.469400308080061*^9}, {
  3.4694004786781073`*^9, 3.469400480054977*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 InterpretationBox["\<\"The variable powertablelength is the number of terms \
required for each multivariate polynomial used for the infinitesimals. This \
number is determined by the choice of polynomial order and the number of \
zvariables. The time needed to solve the determining equations increases as \
powertable increases. powertablelength = \\!\\(45\\)\"\>",
  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 = ``", 45],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882523428*^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.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.4836498825577717`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25724992\\), The time = \\!\
\\(0.966992`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 25724992, 0.966992],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.4836498825588617`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(90\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 90],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882593515*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(193\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 193],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882594387*^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.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882595153*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25800320\\), The time = \\!\
\\(0.973246`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 25800320, 0.973246],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882596078*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882596858*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882638989*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(25975424\\), The time = \\!\
\\(0.9833879999999999`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 25975424, 0.9833879999999999],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.483649882639845*^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.4694002638119373`*^9, {3.469400309505028*^9, 3.469400328275117*^9}, 
   3.469400621340143*^9, 3.471554636879415*^9, 3.471577088723014*^9, 
   3.4836498826406307`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.09371000000000007`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469400263942177*^9, {3.469400309608609*^9, 3.469400328405347*^9}, 
   3.469400621439694*^9, 3.471554637289876*^9, 3.471577088808505*^9, 
   3.483649882642235*^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[{"{", "\<\"xse1[z1_, z2_]=(-b118 - b19)*z1 + b120*z1^3\"\>", 
  "}"}]], "Output",
 CellChangeTimes->{3.469400264101212*^9, 3.469400328516808*^9, 
  3.469400621500885*^9, 3.471554637464644*^9, 3.4715770888470488`*^9, 
  3.483649882694682*^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_]=b19*z2 - 2*b120*z1^2*z2 + b117*z2^2 + \
b118*z1*z2^2 + b119*z1^2*z2^2 + b120*z1^3*z2^2\"\>", "}"}]], "Output",
 CellChangeTimes->{3.469400264191492*^9, 3.469400328576236*^9, 
  3.469400621561762*^9, 3.4715546375316668`*^9, 3.471577088901032*^9, 
  3.483649882740096*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Express the xse functions in terms of input \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    RowBox[{"(", 
     RowBox[{
      RowBox[{"-", "b118"}], "-", "b19"}], ")"}], " ", "x"}], "+", 
   RowBox[{"b120", " ", 
    SuperscriptBox["x", "3"]}]}], "}"}]], "Output",
 CellChangeTimes->{3.46940026427913*^9, 3.469400328642582*^9, 
  3.46940062162838*^9, 3.471554637581368*^9, 3.471577088947774*^9, 
  3.483649882869112*^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", "]"}], "/.", 
  "ztableofrules"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"b19", " ", 
    RowBox[{"y", "[", "x", "]"}]}], "-", 
   RowBox[{"2", " ", "b120", " ", 
    SuperscriptBox["x", "2"], " ", 
    RowBox[{"y", "[", "x", "]"}]}], "+", 
   RowBox[{"b117", " ", 
    SuperscriptBox[
     RowBox[{"y", "[", "x", "]"}], "2"]}], "+", 
   RowBox[{"b118", " ", "x", " ", 
    SuperscriptBox[
     RowBox[{"y", "[", "x", "]"}], "2"]}], "+", 
   RowBox[{"b119", " ", 
    SuperscriptBox["x", "2"], " ", 
    SuperscriptBox[
     RowBox[{"y", "[", "x", "]"}], "2"]}], "+", 
   RowBox[{"b120", " ", 
    SuperscriptBox["x", "3"], " ", 
    SuperscriptBox[
     RowBox[{"y", "[", "x", "]"}], "2"]}]}], "}"}]], "Output",
 CellChangeTimes->{3.469400264358128*^9, 3.469400328710063*^9, 
  3.469400621779962*^9, 3.471554637632413*^9, 3.471577089001892*^9, 
  3.483649882929935*^9}]
}, Open  ]],

Cell["Here is a list of the various infinitesimal groups.", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"infinitesimalgroupsxy", "=", 
  RowBox[{"infinitesimalgroups", "/.", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"z1", "\[Rule]", "x"}], ",", 
     RowBox[{"z2", "\[Rule]", "y"}]}], "}"}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"-", "x"}], "}"}], ",", 
     RowBox[{"{", "y", "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", "0", "}"}], ",", 
     RowBox[{"{", 
      SuperscriptBox["y", "2"], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"-", "x"}], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{"x", " ", 
       SuperscriptBox["y", "2"]}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", "0", "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       SuperscriptBox["x", "2"], " ", 
       SuperscriptBox["y", "2"]}], "}"}]}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"{", 
      SuperscriptBox["x", "3"], "}"}], ",", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{
        RowBox[{"-", "2"}], " ", 
        SuperscriptBox["x", "2"], " ", "y"}], "+", 
       RowBox[{
        SuperscriptBox["x", "3"], " ", 
        SuperscriptBox["y", "2"]}]}], "}"}]}], "}"}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694002644663363`*^9, 3.4694003287775717`*^9, 
  3.4694006218506804`*^9, 3.4715546376991177`*^9, 3.471577089047894*^9, 
  3.483649882978911*^9}]
}, Open  ]],

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"-", "x"}], "}"}], ",", 
       RowBox[{"{", "y", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", "0", "}"}], ",", 
       RowBox[{"{", 
        SuperscriptBox["y", "2"], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"-", "x"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"x", " ", 
         SuperscriptBox["y", "2"]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", "0", "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         SuperscriptBox["x", "2"], " ", 
         SuperscriptBox["y", "2"]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        SuperscriptBox["x", "3"], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", "2"}], " ", 
          SuperscriptBox["x", "2"], " ", "y"}], "+", 
         RowBox[{
          SuperscriptBox["x", "3"], " ", 
          SuperscriptBox["y", "2"]}]}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.469400264577833*^9, 3.469400328844137*^9, 
  3.469400621912217*^9, 3.4715546377488327`*^9, 3.4715770891771183`*^9, 
  3.483649883023221*^9}],

Cell["\<\
Check that these symmetries satisfy the determining equations.\
\>", "Text",
 CellChangeTimes->{{3.471554522867668*^9, 3.4715545458246326`*^9}}],

Cell[CellGroupData[{

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

 CellChangeTimes->{{3.471554552278927*^9, 3.471554590561404*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"True", ",", "True", ",", "True", ",", "True"}], "}"}]], "Output",
 CellChangeTimes->{3.4715546468011923`*^9, 3.471577089219161*^9, 
  3.48364988305617*^9}]
}, Open  ]],

Cell[TextData[StyleBox["The final result indicates that the equation is \
invariant under a five parameter Lie algebra. Now generate the commutator \
table of the Lie algebra.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MakeCommutatorTable", "[", 
  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.469400266163567*^9, 3.469400328943398*^9, 
  3.4694006219844513`*^9, 3.47155463781604*^9, 3.471577089252637*^9, 
  3.4836498830929327`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Put the commutator table in readable form.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

Cell[BoxData[
 TagBox[
  RowBox[{"(", "\[NoBreak]", GridBox[{
     {
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          SuperscriptBox["y", "2"]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{
           RowBox[{"-", 
            SuperscriptBox["x", "2"]}], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "3"]}]},
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "2"], " ", "y", " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"-", "2"}], "+", 
             RowBox[{"x", " ", "y"}]}], ")"}]}]}
        },
        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]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{"-", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "2"], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "2"], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "3"]}]},
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "2"], " ", "y", " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"-", "2"}], "+", 
             RowBox[{"x", " ", "y"}]}], ")"}]}]}
        },
        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]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{
           SuperscriptBox["x", "2"], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "2"], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "3"]}]},
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "2"], " ", "y", " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"-", "2"}], "+", 
             RowBox[{"x", " ", "y"}]}], ")"}]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {
          RowBox[{
           RowBox[{"-", "2"}], " ", 
           SuperscriptBox["x", "2"], " ", 
           SuperscriptBox["y", "2"]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "3"]}]},
         {
          RowBox[{"2", " ", 
           SuperscriptBox["x", "2"], " ", "y", " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"-", "2"}], "+", 
             RowBox[{"x", " ", "y"}]}], ")"}]}]}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}], 
      RowBox[{"(", "\[NoBreak]", GridBox[{
         {"0"},
         {"0"}
        },
        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]", ")"}]}
    },
    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.469400269735732*^9, 3.469400329013578*^9, 
  3.469400622053537*^9, 3.471554637885049*^9, 3.4715770893094063`*^9, 
  3.483649883159483*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["26344736"], "Output",
 CellChangeTimes->{3.4694002698619757`*^9, 3.469400329075774*^9, 
  3.469400622119031*^9, 3.4715546379331427`*^9, 3.471577089347733*^9, 
  3.483649883191081*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{996, 1034},
WindowMargins->{{48, Automatic}, {Automatic, 47}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"0080001804P000000_82@?okonh34`9B;@<5:0?l00;m009H0UP0000068dB`0B`\n\
02d5X5k/02H80@4101P00BL?00400@00000000000000P0010000020D00000000\n\
0000000000000000000004T400002004",
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, 269, 5, 117, "Text"],
Cell[817, 27, 124, 1, 32, "Text"],
Cell[944, 30, 160, 4, 33, "Input"],
Cell[1107, 36, 476, 13, 32, "Text"],
Cell[1586, 51, 93, 1, 33, "Input"],
Cell[1682, 54, 68, 0, 32, "Text"],
Cell[1753, 56, 134, 4, 50, "Input"],
Cell[1890, 62, 219, 4, 51, "Text"],
Cell[2112, 68, 134, 4, 50, "Input"],
Cell[2249, 74, 130, 2, 32, "Text"],
Cell[2382, 78, 118, 3, 33, "Input"],
Cell[2503, 83, 128, 2, 32, "Text"],
Cell[2634, 87, 116, 3, 33, "Input"],
Cell[2753, 92, 227, 4, 32, "Text"],
Cell[2983, 98, 176, 4, 33, "Input"],
Cell[3162, 104, 141, 2, 32, "Text"],
Cell[3306, 108, 67, 2, 33, "Input"],
Cell[3376, 112, 390, 6, 70, "Text"],
Cell[3769, 120, 67, 2, 33, "Input"],
Cell[3839, 124, 509, 7, 70, "Text"],
Cell[4351, 133, 71, 2, 33, "Input"],
Cell[4425, 137, 535, 8, 89, "Text"],
Cell[4963, 147, 79, 2, 33, "Input"],
Cell[5045, 151, 190, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[5260, 158, 193, 5, 66, "Input"],
Cell[5456, 165, 498, 9, 45, "Print"],
Cell[5957, 176, 1081, 15, 197, "Print"],
Cell[7041, 193, 746, 12, 64, "Print"],
Cell[7790, 207, 463, 9, 25, "Print"],
Cell[8256, 218, 1077, 15, 197, "Print"],
Cell[9336, 235, 257, 5, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9630, 245, 50, 0, 33, "Input"],
Cell[9683, 247, 269, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9989, 256, 45, 0, 33, "Input"],
Cell[10037, 258, 1170, 37, 62, "Output"]
}, Open  ]],
Cell[11222, 298, 49, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[11296, 302, 70, 1, 33, "Input"],
Cell[11369, 305, 1051, 17, 205, "Output"]
}, Open  ]],
Cell[12435, 325, 129, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[12589, 332, 93, 1, 33, "Input"],
Cell[12685, 335, 5775, 188, 190, "Output"]
}, Open  ]],
Cell[18475, 526, 98, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[18598, 532, 62, 1, 33, "Input"],
Cell[18663, 535, 329, 8, 33, "Output"]
}, Open  ]],
Cell[19007, 546, 120, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[19152, 553, 288, 7, 66, "Input"],
Cell[19443, 562, 955, 16, 83, "Print"],
Cell[20401, 580, 519, 8, 83, "Print"],
Cell[20923, 590, 410, 8, 25, "Print"],
Cell[21336, 600, 396, 8, 25, "Print"],
Cell[21735, 610, 421, 9, 25, "Print"],
Cell[22159, 621, 397, 6, 45, "Print"],
Cell[22559, 629, 408, 8, 25, "Print"],
Cell[22970, 639, 242, 4, 25, "Print"],
Cell[23215, 645, 286, 5, 25, "Print"],
Cell[23504, 652, 431, 9, 25, "Print"],
Cell[23938, 663, 1165, 16, 235, "Print"],
Cell[25106, 681, 282, 6, 33, "Output"]
}, Open  ]],
Cell[25403, 690, 108, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[25536, 697, 61, 1, 33, "Input"],
Cell[25600, 700, 263, 5, 33, "Output"]
}, Open  ]],
Cell[25878, 708, 48, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[25951, 712, 61, 1, 33, "Input"],
Cell[26015, 715, 318, 5, 53, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[26370, 725, 146, 3, 32, "Text"],
Cell[26519, 730, 115, 3, 33, "Input"],
Cell[26637, 735, 384, 11, 42, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[27058, 751, 143, 2, 32, "Text"],
Cell[27204, 755, 115, 3, 33, "Input"],
Cell[27322, 760, 848, 24, 42, "Output"]
}, Open  ]],
Cell[28185, 787, 67, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[28277, 791, 226, 6, 33, "Input"],
Cell[28506, 799, 1222, 41, 42, "Output"]
}, Open  ]],
Cell[29743, 843, 79, 1, 33, "Input"],
Cell[29825, 846, 1424, 49, 141, "Output"],
Cell[31252, 897, 154, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[31431, 904, 188, 4, 33, "Input"],
Cell[31622, 910, 195, 4, 33, "Output"]
}, Open  ]],
Cell[31832, 917, 241, 4, 32, "Text"],
Cell[CellGroupData[{
Cell[32098, 925, 168, 4, 33, "Input"],
Cell[32269, 931, 576, 8, 102, "Print"]
}, Open  ]],
Cell[32860, 942, 132, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[33017, 948, 112, 2, 33, "Input"],
Cell[33132, 952, 16678, 458, 259, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[49847, 1415, 61, 1, 33, "Input"],
Cell[49911, 1418, 197, 3, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
