(* 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[    105851,       2885]
NotebookOptionsPosition[     97965,       2644]
NotebookOutlinePosition[     98742,       2671]
CellTagsIndexPosition[     98699,       2668]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[StyleBox["In this example we use the package IntroToSymmetry.m \
to work out the four dimensional Lie algebra of the equation \n\n\
Uyy+Ux^2+UUxx=0. \n\nThis equation is equivalent to the system\n\n        \
Vx-Uy=0\n        Vy+UUx=0\n\nForming the mixed derivative Vxy and eliminating \
terms leads to the original equation. This system is found to admit a six \
dimensional Lie algebra of simple groups plus an infinite dimensional group. \
This is a fairly common occurence when a single equation is replaced by \
several equivalent equations. The additional symmetries that are revealed \
when the equation is broken into an equivalent system are called hidden \
symmetries.",
 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.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,y],y,y]+D[u[x,y],x]^2+u[x,y]*D[u[x,y],x,x]\>\""}], 
  ";"}]], "Input"],

Cell[TextData[{
 StyleBox["The function ",
  FontWeight->"Plain"],
 "u[x,y]",
 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,y],y,y]\[Rule]-D[u[x,y],x]^2-u[x,y]*D[u[x,y],x,x]\>\"", 
    "}"}]}], ";"}]], "Input"],

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

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

Cell[TextData[StyleBox["Enter the number 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 constant names that \
must be protected when the equation is converted to generic y1[x1,x2] \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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

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

Cell[BoxData[
 RowBox[{
  RowBox[{"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", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "frozennames", ",",
     "p", ",", "r", ",", "xseon", ",", "inputequation", ",", "rulesarray", 
    ",", "internalrules"}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(38084440\\), the time used = \\!\\(12.886719`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 38084440, 12.886719],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710148017*^9, 3.469404895542506*^9, 3.471560870386739*^9, {
   3.471578988418119*^9, 3.471578999847498*^9}, 3.471579070900926*^9, 
   3.483746194363749*^9, 3.483746288020033*^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.469404710148017*^9, 3.469404895542506*^9, 3.471560870386739*^9, {
   3.471578988418119*^9, 3.471578999847498*^9}, 3.471579070900926*^9, 
   3.483746194363749*^9, 3.483746288080256*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(16\\), the \
byte count of zdeterminingequations = \\!\\(2192\\), the memory in use = \
\\!\\(38167720\\), the time used = \\!\\(12.981772999999999`\\)\"\>",
  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 = ``", 16, 2192, 38167720, 
   12.981772999999999`],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710148017*^9, 3.469404895542506*^9, 3.471560870386739*^9, {
   3.471578988418119*^9, 3.471578999847498*^9}, 3.471579070900926*^9, 
   3.483746194363749*^9, 3.483746288097196*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(38168104\\), the time used = \\!\\(12.982033`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 38168104, 12.982033],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710148017*^9, 3.469404895542506*^9, 3.471560870386739*^9, {
   3.471578988418119*^9, 3.471578999847498*^9}, 3.471579070900926*^9, 
   3.483746194363749*^9, 3.483746288127878*^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.469404710148017*^9, 3.469404895542506*^9, 3.471560870386739*^9, {
   3.471578988418119*^9, 3.471578999847498*^9}, 3.471579070900926*^9, 
   3.483746194363749*^9, 3.483746288157259*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.09625000000000128`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710274352*^9, 3.4694048956800213`*^9, 3.471560870481749*^9, {
   3.471578988527438*^9, 3.47157899996891*^9}, 3.471579070997674*^9, 
   3.483746194474237*^9, 3.483746288192214*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["\<\"D[y1[x1,x2],x2,x2]+D[y1[x1,x2],x1]^2+y1[x1,x2]*D[y1[x1,x2],\
x1,x1]\"\>"], "Output",
 CellChangeTimes->{
  3.469404710315674*^9, 3.4694048957351217`*^9, 3.471560870523354*^9, {
   3.471578988556829*^9, 3.471579000003373*^9}, 3.47157907103598*^9, 
   3.483746194505517*^9, 3.483746288277032*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0", ",", 
   RowBox[{
    SuperscriptBox["y1", 
     TagBox[
      RowBox[{"(", 
       RowBox[{"2", ",", "0"}], ")"}],
      Derivative],
     MultilineFunction->None], "[", 
    RowBox[{"x1", ",", "x2"}], "]"}], ",", 
   RowBox[{"2", " ", 
    RowBox[{
     SuperscriptBox["y1", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x1", ",", "x2"}], "]"}]}], ",", "0", ",", 
   RowBox[{"y1", "[", 
    RowBox[{"x1", ",", "x2"}], "]"}], ",", "0", ",", "1"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710371324*^9, 3.469404895768461*^9, 3.4715608705784388`*^9, {
   3.471578988590913*^9, 3.47157900004943*^9}, 3.47157907109081*^9, 
   3.48374619453859*^9, 3.4837462883386593`*^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]", "y"}], ",", 
   RowBox[{"z3", "\[Rule]", 
    RowBox[{"u", "[", 
     RowBox[{"x", ",", "y"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710416141*^9, 3.469404895814025*^9, 3.471560870611134*^9, {
   3.4715789886198883`*^9, 3.47157900010289*^9}, 3.47157907114082*^9, 
   3.483746194584957*^9, 3.4837462884059896`*^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[
 RowBox[{"zdeterminingequations", ";"}]], "Input",
 CellChangeTimes->{3.4715608508719463`*^9}]
}, Open  ]],

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

Cell[CellGroupData[{

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

Cell[BoxData["16"], "Output",
 CellChangeTimes->{
  3.469404710516515*^9, 3.469404895914557*^9, 3.4715608707120953`*^9, {
   3.471578988668523*^9, 3.471579000320258*^9}, 3.4715790712170553`*^9, 
   3.483746194663395*^9, 3.483746288505538*^9}]
}, Open  ]],

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

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

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

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"SolveDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "r", ",", "xseon", 
    ",", "zdeterminingequations", ",", 
    RowBox[{"order", "=", "3"}]}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The variable powertablelength is the number of terms \
required for each multivariate polynomial used for the infinitesimals. This \
number is determined by the choice of polynomial order and the number of \
zvariables. The time needed to solve the determining equations increases as \
powertable increases. powertablelength = \\!\\(20\\)\"\>",
  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 = ``", 20],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288572983*^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.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288574543*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38194304\\), The time = \\!\
\\(13.018904`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 38194304, 13.018904],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288575677*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(60\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 60],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288610066*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(116\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 116],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288611038*^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.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288611937*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38159288\\), The time = \\!\
\\(13.022919`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 38159288, 13.022919],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288612987*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288613884*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288614732*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38145376\\), The time = \\!\
\\(13.025879999999999`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 38145376, 13.025879999999999`],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.4837462886156588`*^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.469404710571137*^9, 3.469404895968937*^9, 3.4715608707627907`*^9, {
   3.4715789887227077`*^9, 3.471579000453725*^9}, 3.4715790712568274`*^9, 
   3.483746194705312*^9, 3.483746288616598*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.038395999999998764`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710575158*^9, 3.4694048959770803`*^9, 3.471560870793981*^9, {
   3.471578988734215*^9, 3.471579000465523*^9}, 3.471579071284071*^9, 
   3.483746194722474*^9, 3.483746288618298*^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 + (a24 + b110/2)*z1\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_]=a20 + a24*z2\"\>"}], "}"}]], "Output",
 CellChangeTimes->{
  3.4694047106168823`*^9, 3.469404896014113*^9, 3.471560870877225*^9, {
   3.471578988770176*^9, 3.471579000554153*^9}, 3.471579071320095*^9, 
   3.4837461947569103`*^9, 3.483746288658206*^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_]=b110*z3\"\>", "}"}]], "Output",
 CellChangeTimes->{
  3.469404710671486*^9, 3.4694048960684643`*^9, 3.471560870936535*^9, {
   3.47157898880759*^9, 3.47157900067864*^9}, 3.471579071356291*^9, 
   3.483746194814444*^9, 3.4837462886946487`*^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[CellGroupData[{

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

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"a10", "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{"a24", "+", 
       FractionBox["b110", "2"]}], ")"}], " ", "x"}]}], ",", 
   RowBox[{"a20", "+", 
    RowBox[{"a24", " ", "y"}]}]}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710723566*^9, 3.469404896114625*^9, 3.471560871003805*^9, {
   3.471578988840889*^9, 3.471579000716084*^9}, 3.471579071408499*^9, 
   3.48374619488169*^9, 3.483746288771007*^9}]
}, Open  ]]
}, 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[{"b110", " ", 
   RowBox[{"u", "[", 
    RowBox[{"x", ",", "y"}], "]"}]}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404710766787*^9, 3.4694048961686487`*^9, 3.471560871069686*^9, {
   3.47157898887475*^9, 3.471579000748684*^9}, 3.471579071440476*^9, 
   3.483746194952277*^9, 3.483746288827609*^9}]
}, Open  ]],

Cell["List the groups.", "Text"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Column", "[", "infinitesimalgroups", "]"}], "/.", 
  "\[InvisibleSpace]", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "y"}], ",", 
    RowBox[{"z3", "\[Rule]", "u"}]}], "}"}]}]], "Input",
 CellChangeTimes->{3.483746186778157*^9}],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "y"}], "}"}], ",", 
       RowBox[{"{", "0", "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         FractionBox["x", "2"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", "u", "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{
  3.469404710822083*^9, 3.4694048962149153`*^9, 3.4715608711371717`*^9, {
   3.471578988908708*^9, 3.4715790008385468`*^9}, 3.471579071474361*^9, 
   3.4837461950130367`*^9, 3.483746288857239*^9}],

Cell[TextData[StyleBox["Check the solution in the determining equations.",
 FontWeight->"Plain"]], "Text",
 CellChangeTimes->{{3.471560687887658*^9, 3.471560717268311*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

 CellChangeTimes->{{3.471560722979608*^9, 3.4715607756901417`*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True"}], 
  "}"}]], "Output",
 CellChangeTimes->{
  3.471560871287808*^9, {3.471578988941463*^9, 3.47157900092037*^9}, 
   3.4715790715027523`*^9, 3.4837461951647873`*^9, 3.483746288911593*^9}]
}, Open  ]],

Cell["\<\
The equation admits a four dimensional Lie algebra. Let's work out the \
commutator table of the group.\
\>", "Text"],

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

Cell[TextData[StyleBox["Now generate the commutator table.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

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.469404710948559*^9, 3.469404896327312*^9, 3.471560871372151*^9, {
   3.471578989017544*^9, 3.47157900113008*^9}, 3.471579071568074*^9, 
   3.4837461952488527`*^9, 3.483746288970607*^9}],

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

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[{"1", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{
             FractionBox["1", "2"], ",", "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", ",", "1"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}]},
     {
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "1"}], ",", "0"}], "}"}]},
          {
           RowBox[{"{", "0", "}"}]}
         },
         GridBoxAlignment->{
          "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, 
           "Rows" -> {{Baseline}}, "RowsIndexed" -> {}},
         GridBoxSpacings->{"Columns" -> {
             Offset[0.27999999999999997`], {
              Offset[0.5599999999999999]}, 
             Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
             Offset[0.2], {
              Offset[0.4]}, 
             Offset[0.2]}, "RowsIndexed" -> {}}],
        Column], "\[NoBreak]", ")"}], 
      RowBox[{"(", "\[NoBreak]", 
       TagBox[GridBox[{
          {
           RowBox[{"{", 
            RowBox[{"0", ",", 
             RowBox[{"-", "1"}]}], "}"}]},
          {
           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[{"-", 
              FractionBox["1", "2"]}], ",", "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[{"{", "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.469404711008181*^9, 3.469404896388489*^9, 3.4715608714403667`*^9, {
   3.471578989064106*^9, 3.471579001202964*^9}, 3.4715790716093073`*^9, 
   3.483746195299735*^9, 3.4837462890092*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["40655472"], "Output",
 CellChangeTimes->{
  3.4694047110510197`*^9, 3.4694048964318666`*^9, 3.471560871508953*^9, {
   3.471578989091757*^9, 3.4715790012331877`*^9}, 3.471579071718741*^9, 
   3.483746195369903*^9, 3.4837462890448723`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Now let's work out the symmetries of the equivalent \
system\n\n           Vx-Uy=0\n           Vy+UUx=0",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"inputequation1", "=", "\n", "\"\<D[v[x,y],x]-D[u[x,y],y]\>\""}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
  "inputequation2", "=", "\n", "\"\<D[v[x,y],y]+u[x,y]*D[u[x,y],x]\>\""}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"rulesarray", "=", "\[IndentingNewLine]", 
   RowBox[{"{", 
    RowBox[{
    "\"\<D[v[x,y],x]->D[u[x,y],y]\>\"", ",", " ", 
     "\"\<D[v[x,y],y]\[Rule]-u[x,y]*D[u[x,y],x]\>\""}], "}"}]}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"newdependentvariables", "=", 
   RowBox[{"{", 
    RowBox[{"u", ",", "v"}], "}"}]}], ";"}]], "Input"],

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

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

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

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

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(38082488\\), the time used = \\!\\(13.044342`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 38082488, 13.044342],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711317503*^9, 3.469404896694558*^9, 3.4715608717831984`*^9, {
   3.471578989389076*^9, 3.4715790014787807`*^9}, 3.47157907197036*^9, 
   3.483746195649662*^9, 3.48374628928828*^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.469404711317503*^9, 3.469404896694558*^9, 3.4715608717831984`*^9, {
   3.471578989389076*^9, 3.4715790014787807`*^9}, 3.47157907197036*^9, 
   3.483746195649662*^9, 3.483746289305272*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(5\\), the \
byte count of zdeterminingequations = \\!\\(944\\), the memory in use = \
\\!\\(38026632\\), the time used = \\!\\(13.088492`\\)\"\>",
  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 = ``", 5, 944, 38026632, 
   13.088492],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711317503*^9, 3.469404896694558*^9, 3.4715608717831984`*^9, {
   3.471578989389076*^9, 3.4715790014787807`*^9}, 3.47157907197036*^9, 
   3.483746195649662*^9, 3.483746289307007*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(38028040\\), the time used = \\!\\(13.088732`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 38028040, 13.088732],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711317503*^9, 3.469404896694558*^9, 3.4715608717831984`*^9, {
   3.471578989389076*^9, 3.4715790014787807`*^9}, 3.47157907197036*^9, 
   3.483746195649662*^9, 3.483746289308041*^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.469404711317503*^9, 3.469404896694558*^9, 3.4715608717831984`*^9, {
   3.471578989389076*^9, 3.4715790014787807`*^9}, 3.47157907197036*^9, 
   3.483746195649662*^9, 3.4837462893089323`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.04505900000000018`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404711338962*^9, 3.469404896878808*^9, 3.4715608718408937`*^9, {
   3.471578989456018*^9, 3.471579001517291*^9}, 3.471579072012203*^9, 
   3.483746195684218*^9, 3.4837462893105373`*^9}]
}, Open  ]],

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

Cell[CellGroupData[{

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

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(38022576\\), the time used = \\!\\(13.090145`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 38022576, 13.090145],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711405081*^9, 3.4694048969617157`*^9, 3.471560871905017*^9, {
   3.471578989520727*^9, 3.471579001579618*^9}, 3.471579072087493*^9, 
   3.483746195758649*^9, 3.483746289355741*^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.469404711405081*^9, 3.4694048969617157`*^9, 3.471560871905017*^9, {
   3.471578989520727*^9, 3.471579001579618*^9}, 3.471579072087493*^9, 
   3.483746195758649*^9, 3.483746289388134*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(5\\), the \
byte count of zdeterminingequations = \\!\\(984\\), the memory in use = \
\\!\\(38039712\\), the time used = \\!\\(13.136612`\\)\"\>",
  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 = ``", 5, 984, 38039712, 
   13.136612],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711405081*^9, 3.4694048969617157`*^9, 3.471560871905017*^9, {
   3.471578989520727*^9, 3.471579001579618*^9}, 3.471579072087493*^9, 
   3.483746195758649*^9, 3.483746289389926*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(38040448\\), the time used = \\!\\(13.136868`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 38040448, 13.136868],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.469404711405081*^9, 3.4694048969617157`*^9, 3.471560871905017*^9, {
   3.471578989520727*^9, 3.471579001579618*^9}, 3.471579072087493*^9, 
   3.483746195758649*^9, 3.4837462893909597`*^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.469404711405081*^9, 3.4694048969617157`*^9, 3.471560871905017*^9, {
   3.471578989520727*^9, 3.471579001579618*^9}, 3.471579072087493*^9, 
   3.483746195758649*^9, 3.48374628939193*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.04741799999999685`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404711451075*^9, 3.469404897079949*^9, 3.471560871930048*^9, {
   3.471578989557475*^9, 3.471579001617715*^9}, 3.4715790721330633`*^9, 
   3.483746195788117*^9, 3.483746289393591*^9}]
}, Open  ]],

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

Cell[BoxData[
 RowBox[{
  RowBox[{"zdeterminingequations3", "=", 
   RowBox[{"Join", "[", 
    RowBox[{"zdeterminingequations1", ",", "zdeterminingequations2"}], 
    "]"}]}], ";"}]], "Input"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", "zdeterminingequations3", "]"}]], "Input"],

Cell[BoxData["10"], "Output",
 CellChangeTimes->{
  3.469404711532878*^9, 3.4694048971950083`*^9, 3.471560872003722*^9, {
   3.471578989636318*^9, 3.4715790019625196`*^9}, 3.471579072237797*^9, 
   3.4837461959650087`*^9, 3.48374628947184*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"SolveDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "newdependentvariables", ",", "r", ",", 
    "xseon", ",", "zdeterminingequations3", ",", 
    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 = \\!\\(70\\)\"\>",
  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 = ``", 70],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.48374628951307*^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.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.4837462895714207`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38447400\\), The time = \\!\
\\(13.235214`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 38447400, 13.235214],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.4837462895725937`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(280\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 280],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289595377*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(391\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 391],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289596326*^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.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289597159*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38605904\\), The time = \\!\
\\(13.252074999999998`\\)\"\>",
  StringForm[
  "The memory in use = ``, The time = ``", 38605904, 13.252074999999998`],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289598143*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289625164*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.4837462896611958`*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(38711176\\), The time = \\!\
\\(13.29483`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 38711176, 13.29483],
  Editable->False]], "Print",
 CellChangeTimes->{
  3.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.483746289662107*^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.4694047116715527`*^9, 3.46940489734455*^9, 3.471560872042025*^9, {
   3.471578989698448*^9, 3.471579002037983*^9}, 3.4715790722888527`*^9, 
   3.483746196007481*^9, 3.4837462896629543`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.15696400000000033`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{
  3.469404711724934*^9, 3.469404897433217*^9, 3.471560872179167*^9, {
   3.4715789898271*^9, 3.471579002152442*^9}, 3.4715790726931562`*^9, 
   3.483746196193141*^9, 3.4837462896646442`*^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_, z4_]=a10 + (a25 + b235/3)*z1 - \
(a235*z3^2)/2 + (2*b255*z2*z3^2)/3 - (a245*z3^3)/3 + a215*z4 - \
(2*b255*z1*z4)/3 - a255*z3^2*z4 - (2*a261*z3^3*z4)/3 + (a245*z4^2)/2 + \
(a261*z4^3)/3\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_, z4_]=a20 + a25*z2 + a215*z3 - \
(2*b255*z1*z3)/3 - (a255*z3^3)/3 - (a261*z3^4)/6 + a235*z4 - (4*b255*z2*z4)/3 \
+ a245*z3*z4 + a255*z4^2 + a261*z3*z4^2\"\>"}], "}"}]], "Output",
 CellChangeTimes->{
  3.4694047117732363`*^9, 3.4694048975792522`*^9, 3.471560872209996*^9, {
   3.47157898986001*^9, 3.471579002186932*^9}, 3.471579072838477*^9, 
   3.483746196315308*^9, 3.4837462896959867`*^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[{"{", 
  RowBox[{"\<\"eta1[z1_, z2_, z3_, z4_]=(2*b235*z3)/3 + (4*b255*z3*z4)/3\"\>",
    ",", "\<\"eta2[z1_, z2_, z3_, z4_]=b20 - (4*b255*z3^3)/9 + b235*z4 + \
b255*z4^2\"\>"}], "}"}]], "Output",
 CellChangeTimes->{
  3.4694047118234577`*^9, 3.469404897630293*^9, 3.471560872305316*^9, {
   3.471578989893577*^9, 3.4715790022200727`*^9}, 3.471579072890565*^9, 
   3.483746196355743*^9, 3.483746289730027*^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[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToExpression", "[", "xsefunctions", "]"}], "/.", 
  RowBox[{"{", 
   RowBox[{
    RowBox[{"z1", "\[Rule]", "x"}], ",", 
    RowBox[{"z2", "\[Rule]", "y"}], ",", 
    RowBox[{"z3", "\[Rule]", "u"}], ",", " ", 
    RowBox[{"z4", "\[Rule]", "v"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"a10", "-", 
    FractionBox[
     RowBox[{"a235", " ", 
      SuperscriptBox["u", "2"]}], "2"], "-", 
    FractionBox[
     RowBox[{"a245", " ", 
      SuperscriptBox["u", "3"]}], "3"], "+", 
    RowBox[{"a215", " ", "v"}], "-", 
    RowBox[{"a255", " ", 
     SuperscriptBox["u", "2"], " ", "v"}], "-", 
    RowBox[{
     FractionBox["2", "3"], " ", "a261", " ", 
     SuperscriptBox["u", "3"], " ", "v"}], "+", 
    FractionBox[
     RowBox[{"a245", " ", 
      SuperscriptBox["v", "2"]}], "2"], "+", 
    FractionBox[
     RowBox[{"a261", " ", 
      SuperscriptBox["v", "3"]}], "3"], "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{"a25", "+", 
       FractionBox["b235", "3"]}], ")"}], " ", "x"}], "-", 
    FractionBox[
     RowBox[{"2", " ", "b255", " ", "v", " ", "x"}], "3"], "+", 
    RowBox[{
     FractionBox["2", "3"], " ", "b255", " ", 
     SuperscriptBox["u", "2"], " ", "y"}]}], ",", 
   RowBox[{"a20", "+", 
    RowBox[{"a215", " ", "u"}], "-", 
    FractionBox[
     RowBox[{"a255", " ", 
      SuperscriptBox["u", "3"]}], "3"], "-", 
    FractionBox[
     RowBox[{"a261", " ", 
      SuperscriptBox["u", "4"]}], "6"], "+", 
    RowBox[{"a235", " ", "v"}], "+", 
    RowBox[{"a245", " ", "u", " ", "v"}], "+", 
    RowBox[{"a255", " ", 
     SuperscriptBox["v", "2"]}], "+", 
    RowBox[{"a261", " ", "u", " ", 
     SuperscriptBox["v", "2"]}], "-", 
    FractionBox[
     RowBox[{"2", " ", "b255", " ", "u", " ", "x"}], "3"], "+", 
    RowBox[{"a25", " ", "y"}], "-", 
    FractionBox[
     RowBox[{"4", " ", "b255", " ", "v", " ", "y"}], "3"]}]}], 
  "}"}]], "Output",
 CellChangeTimes->{
  3.469404711875416*^9, 3.469404897680479*^9, 3.471560872341558*^9, {
   3.471578989928294*^9, 3.471579002254249*^9}, 3.4715790729559813`*^9, 
   3.483746196384776*^9, 3.483746289823203*^9}]
}, Open  ]]
}, 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]", "y"}], ",", 
    RowBox[{"z3", "\[Rule]", "u"}], ",", " ", 
    RowBox[{"z4", "\[Rule]", "v"}]}], "}"}]}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{
    FractionBox[
     RowBox[{"2", " ", "b235", " ", "u"}], "3"], "+", 
    FractionBox[
     RowBox[{"4", " ", "b255", " ", "u", " ", "v"}], "3"]}], ",", 
   RowBox[{"b20", "-", 
    FractionBox[
     RowBox[{"4", " ", "b255", " ", 
      SuperscriptBox["u", "3"]}], "9"], "+", 
    RowBox[{"b235", " ", "v"}], "+", 
    RowBox[{"b255", " ", 
     SuperscriptBox["v", "2"]}]}]}], "}"}]], "Output",
 CellChangeTimes->{
  3.4694047119200773`*^9, 3.469404897731228*^9, 3.4715608723778353`*^9, {
   3.471578989972451*^9, 3.471579002283366*^9}, 3.471579073006513*^9, 
   3.483746196421632*^9, 3.483746289858309*^9}]
}, Open  ]],

Cell["List the groups.", "Text"],

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "y"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"v", ",", "u"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{"-", 
          FractionBox[
           SuperscriptBox["u", "2"], "2"]}], ",", "v"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            SuperscriptBox["u", "3"], "3"]}], "+", 
          FractionBox[
           SuperscriptBox["v", "2"], "2"]}], ",", 
         RowBox[{"u", " ", "v"}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           SuperscriptBox["u", "2"]}], " ", "v"}], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            SuperscriptBox["u", "3"], "3"]}], "+", 
          SuperscriptBox["v", "2"]}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", 
             SuperscriptBox["u", "3"], " ", "v"}], "3"]}], "+", 
          FractionBox[
           SuperscriptBox["v", "3"], "3"]}], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            SuperscriptBox["u", "4"], "6"]}], "+", 
          RowBox[{"u", " ", 
           SuperscriptBox["v", "2"]}]}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         FractionBox["x", "3"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         FractionBox[
          RowBox[{"2", " ", "u"}], "3"], ",", "v"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", "v", " ", "x"}], "3"]}], "+", 
          FractionBox[
           RowBox[{"2", " ", 
            SuperscriptBox["u", "2"], " ", "y"}], "3"]}], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", "u", " ", "x"}], "3"]}], "-", 
          FractionBox[
           RowBox[{"4", " ", "v", " ", "y"}], "3"]}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         FractionBox[
          RowBox[{"4", " ", "u", " ", "v"}], "3"], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", 
             SuperscriptBox["u", "3"]}], "9"]}], "+", 
          SuperscriptBox["v", "2"]}]}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{
  3.4694047120520983`*^9, 3.4694048977809362`*^9, 3.471560872430634*^9, {
   3.4715789900133257`*^9, 3.471579002319667*^9}, 3.471579073073641*^9, 
   3.4837461964538317`*^9, 3.483746289897328*^9}],

Cell[TextData[StyleBox["Check the solution in the determining equations.",
 FontWeight->"Plain"]], "Text",
 CellChangeTimes->{{3.471560687887658*^9, 3.471560717268311*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

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

 CellChangeTimes->{{3.471560722979608*^9, 3.4715607756901417`*^9}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"True", ",", "True", ",", "True", ",", "True", ",", "True"}], 
  "}"}]], "Output",
 CellChangeTimes->{3.471579073123829*^9, 3.483746196488406*^9, 
  3.483746289930328*^9}]
}, Open  ]],

Cell["\<\
The presence of fourth order terms indicates that the infinitesimals may \
include arbitrary functions. This will take some sorting out.  It turns out \
that the equation set is invariant under the group
 
      (xse1,xse2,eta1,eta2)=(F[u,v],G[u,v],0,0) 
      
  where the functions satisfy 
    
              Fv=Gu 
               Fu=-uGv
     
Let's remove the terms corresponding to this infinite dimensional  group and \
work out the commutator table of the remaining groups.\
\>", "Text"],

Cell[BoxData[
 RowBox[{
  RowBox[{"infinitesimalgroupsuv", "=", 
   RowBox[{"infinitesimalgroups", "/.", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"z1", "\[Rule]", "x"}], ",", 
      RowBox[{"z2", "\[Rule]", "y"}], ",", 
      RowBox[{"z3", "\[Rule]", "u"}], ",", " ", 
      RowBox[{"z4", "\[Rule]", "v"}]}], "}"}]}]}], ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"infinitesimalgroupsreduced", "=", "\[IndentingNewLine]", 
   RowBox[{"Drop", "[", 
    RowBox[{"infinitesimalgroupsuv", ",", 
     RowBox[{"{", 
      RowBox[{"4", ",", "8"}], "}"}]}], "]"}]}], ";"}]], "Input"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"numberofgroups", "=", 
  RowBox[{"Length", "[", "infinitesimalgroupsreduced", "]"}]}]], "Input"],

Cell[BoxData["6"], "Output",
 CellChangeTimes->{
  3.46940471216719*^9, 3.469404897878377*^9, 3.471560872537757*^9, {
   3.4715789901205397`*^9, 3.471579002515791*^9}, 3.471579073221126*^9, 
   3.483746196582222*^9, 3.4837462900073843`*^9}]
}, Open  ]],

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

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"x", ",", "y"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"0", ",", "1"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         FractionBox["x", "3"], ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         FractionBox[
          RowBox[{"2", " ", "u"}], "3"], ",", "v"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", "v", " ", "x"}], "3"]}], "+", 
          FractionBox[
           RowBox[{"2", " ", 
            SuperscriptBox["u", "2"], " ", "y"}], "3"]}], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", "u", " ", "x"}], "3"]}], "-", 
          FractionBox[
           RowBox[{"4", " ", "v", " ", "y"}], "3"]}]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         FractionBox[
          RowBox[{"4", " ", "u", " ", "v"}], "3"], ",", 
         RowBox[{
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", 
             SuperscriptBox["u", "3"]}], "9"]}], "+", 
          SuperscriptBox["v", "2"]}]}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{
  3.469404712202879*^9, 3.469404897918809*^9, 3.4715608725762453`*^9, {
   3.471578990158504*^9, 3.471579002586487*^9}, 3.4715790732648706`*^9, 
   3.483746196620266*^9, 3.483746290042894*^9}],

Cell[TextData[StyleBox["Note that the the fourth and last groups do not \
appear among the groups of the combined single equation worked out above. Now \
generate the commutator table.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"MakeCommutatorTable", "[", "\[IndentingNewLine]", 
  RowBox[{
  "independentvariables", ",", "newdependentvariables", ",", 
   "infinitesimalgroupsreduced"}], "]"}]], "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.469404712258*^9, 3.4694048979473877`*^9, 3.471560872629752*^9, {
   3.471578990193605*^9, 3.471579002670982*^9}, 3.471579073294119*^9, 
   3.4837461966552963`*^9, 3.483746290080653*^9}],

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"},
         {"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"},
         {"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[{
         {"1", "0"},
         {"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"},
         {"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[{
         {
          FractionBox["1", "3"], "0"},
         {"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[{"-", 
           FractionBox[
            RowBox[{"2", " ", "v"}], "3"]}], 
          RowBox[{"-", 
           FractionBox[
            RowBox[{"2", " ", "u"}], "3"]}]},
         {"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"},
         {"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"},
         {"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", "1"},
         {"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"},
         {"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"},
         {"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[{
         {
          FractionBox[
           RowBox[{"2", " ", 
            SuperscriptBox["u", "2"]}], "3"], 
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", "v"}], "3"]}]},
         {"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[{"-", "1"}], "0"},
         {"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[{"-", "1"}]},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"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"},
         {"0", "1"}
        },
        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[{"-", 
           FractionBox[
            RowBox[{"2", " ", "x"}], "3"]}], 
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", "y"}], "3"]}]},
         {
          FractionBox[
           RowBox[{"4", " ", "u"}], "3"], 
          RowBox[{"2", " ", "v"}]}
        },
        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[{"-", 
           FractionBox["1", "3"]}], "0"},
         {"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"},
         {"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"},
         {"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"},
         {"0", 
          RowBox[{"-", "1"}]}
        },
        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"},
         {"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[{
           FractionBox["2", "3"], " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{
              RowBox[{"-", "v"}], " ", "x"}], "+", 
             RowBox[{
              SuperscriptBox["u", "2"], " ", "y"}]}], ")"}]}], 
          RowBox[{
           RowBox[{"-", 
            FractionBox["2", "3"]}], " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"u", " ", "x"}], "+", 
             RowBox[{"2", " ", "v", " ", "y"}]}], ")"}]}]},
         {
          FractionBox[
           RowBox[{"4", " ", "u", " ", "v"}], "3"], 
          RowBox[{
           RowBox[{"-", 
            FractionBox[
             RowBox[{"4", " ", 
              SuperscriptBox["u", "3"]}], "9"]}], "+", 
           SuperscriptBox["v", "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[{
         {
          FractionBox[
           RowBox[{"2", " ", "v"}], "3"], 
          FractionBox[
           RowBox[{"2", " ", "u"}], "3"]},
         {"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[{"-", 
           FractionBox[
            RowBox[{"2", " ", 
             SuperscriptBox["u", "2"]}], "3"]}], 
          FractionBox[
           RowBox[{"4", " ", "v"}], "3"]},
         {"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"},
         {"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[{
         {
          FractionBox[
           RowBox[{"2", " ", "x"}], "3"], 
          FractionBox[
           RowBox[{"4", " ", "y"}], "3"]},
         {
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", "u"}], "3"]}], 
          RowBox[{
           RowBox[{"-", "2"}], " ", "v"}]}
        },
        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[{
           FractionBox["2", "3"], " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"v", " ", "x"}], "-", 
             RowBox[{
              SuperscriptBox["u", "2"], " ", "y"}]}], ")"}]}], 
          RowBox[{
           FractionBox["2", "3"], " ", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"u", " ", "x"}], "+", 
             RowBox[{"2", " ", "v", " ", "y"}]}], ")"}]}]},
         {
          RowBox[{"-", 
           FractionBox[
            RowBox[{"4", " ", "u", " ", "v"}], "3"]}], 
          RowBox[{
           FractionBox[
            RowBox[{"4", " ", 
             SuperscriptBox["u", "3"]}], "9"], "-", 
           SuperscriptBox["v", "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"},
         {"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.469404712313405*^9, 3.4694048980068502`*^9, 3.471560872693571*^9, {
   3.471578990319562*^9, 3.471579002823814*^9}, 3.4715790733500338`*^9, 
   3.483746196716134*^9, 3.483746290117511*^9}]
}, Open  ]],

Cell[CellGroupData[{

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

Cell[BoxData["40944184"], "Output",
 CellChangeTimes->{
  3.469404712354253*^9, 3.469404898034601*^9, 3.471560872724434*^9, {
   3.47157899035637*^9, 3.471579002867229*^9}, 3.471579073390431*^9, 
   3.48374619675243*^9, 3.483746290159976*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{786, 1051},
WindowMargins->{{53, Automatic}, {Automatic, 24}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"01@0001804P000000_82@?okonh34`9B;@85:0?l0@00009H0UP00P0068dB`001\n\
2@00I00100000@004Q800BL?0040000000000000000004<001000`00000@0?oH\n\
ofXIX1=F8040400000400000000000l1",
Magnification->1.25,
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (February 18, 2009)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[545, 20, 773, 12, 325, "Text"],
Cell[1321, 34, 124, 1, 32, "Text"],
Cell[1448, 37, 160, 4, 33, "Input"],
Cell[1611, 43, 476, 13, 51, "Text"],
Cell[2090, 58, 101, 2, 33, "Input"],
Cell[2194, 62, 163, 3, 32, "Text"],
Cell[2360, 67, 150, 5, 53, "Input"],
Cell[2513, 74, 304, 8, 51, "Text"],
Cell[2820, 84, 194, 5, 53, "Input"],
Cell[3017, 91, 130, 2, 32, "Text"],
Cell[3150, 95, 151, 4, 33, "Input"],
Cell[3304, 101, 130, 2, 32, "Text"],
Cell[3437, 105, 116, 3, 33, "Input"],
Cell[3556, 110, 225, 4, 51, "Text"],
Cell[3784, 116, 96, 3, 33, "Input"],
Cell[3883, 121, 152, 3, 32, "Text"],
Cell[4038, 126, 67, 2, 33, "Input"],
Cell[4108, 130, 385, 6, 70, "Text"],
Cell[4496, 138, 67, 2, 33, "Input"],
Cell[4566, 142, 510, 7, 89, "Text"],
Cell[5079, 151, 71, 2, 33, "Input"],
Cell[5153, 155, 576, 8, 107, "Text"],
Cell[5732, 165, 79, 2, 33, "Input"],
Cell[5814, 169, 268, 4, 51, "Text"],
Cell[CellGroupData[{
Cell[6107, 177, 324, 6, 72, "Input"],
Cell[6434, 185, 545, 10, 45, "Print"],
Cell[6982, 197, 1126, 16, 273, "Print"],
Cell[8111, 215, 822, 14, 83, "Print"],
Cell[8936, 231, 513, 10, 45, "Print"],
Cell[9452, 243, 1128, 16, 254, "Print"],
Cell[10583, 261, 305, 6, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10925, 272, 50, 0, 33, "Input"],
Cell[10978, 274, 312, 5, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11327, 284, 45, 0, 33, "Input"],
Cell[11375, 286, 832, 25, 42, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12244, 316, 240, 4, 51, "Text"],
Cell[CellGroupData[{
Cell[12509, 324, 39, 0, 33, "Input"],
Cell[12551, 326, 443, 11, 33, "Output"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[13043, 343, 279, 4, 51, "Text"],
Cell[13325, 349, 108, 2, 33, "Input"]
}, Open  ]],
Cell[13448, 354, 57, 0, 32, "Text"],
Cell[CellGroupData[{
Cell[13530, 358, 78, 1, 33, "Input"],
Cell[13611, 361, 242, 4, 33, "Output"]
}, Open  ]],
Cell[13868, 368, 491, 11, 164, "Text"],
Cell[CellGroupData[{
Cell[14384, 383, 296, 6, 72, "Input"],
Cell[14683, 391, 981, 16, 102, "Print"],
Cell[15667, 409, 543, 8, 102, "Print"],
Cell[16213, 419, 436, 8, 25, "Print"],
Cell[16652, 429, 422, 8, 25, "Print"],
Cell[17077, 439, 447, 9, 25, "Print"],
Cell[17527, 450, 423, 6, 64, "Print"],
Cell[17953, 458, 436, 8, 25, "Print"],
Cell[18392, 468, 268, 4, 25, "Print"],
Cell[18663, 474, 312, 5, 25, "Print"],
Cell[18978, 481, 460, 9, 25, "Print"],
Cell[19441, 492, 1189, 16, 292, "Print"],
Cell[20633, 510, 307, 6, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[20977, 521, 184, 3, 32, "Text"],
Cell[21164, 526, 38, 0, 33, "Input"],
Cell[21205, 528, 379, 7, 53, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[21621, 540, 141, 2, 32, "Text"],
Cell[21765, 544, 38, 0, 33, "Input"],
Cell[21806, 546, 295, 5, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[22138, 556, 144, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[22307, 563, 115, 3, 33, "Input"],
Cell[22425, 568, 469, 13, 54, "Output"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[22943, 587, 143, 2, 32, "Text"],
Cell[23089, 591, 115, 3, 33, "Input"],
Cell[23207, 596, 340, 8, 33, "Output"]
}, Open  ]],
Cell[23562, 607, 32, 0, 32, "Text"],
Cell[23597, 609, 320, 9, 33, "Input"],
Cell[23920, 620, 1023, 34, 103, "Output"],
Cell[24946, 656, 204, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[25175, 663, 190, 4, 33, "Input"],
Cell[25368, 669, 439, 9, 53, "Output"]
}, Open  ]],
Cell[25822, 681, 127, 3, 32, "Text"],
Cell[25952, 686, 293, 8, 33, "Input"],
Cell[26248, 696, 124, 2, 32, "Text"],
Cell[26375, 700, 191, 4, 53, "Input"],
Cell[26569, 706, 625, 9, 121, "Print"],
Cell[27197, 717, 132, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[27354, 723, 77, 1, 33, "Input"],
Cell[27434, 726, 12190, 332, 211, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[39661, 1063, 66, 1, 33, "Input"],
Cell[39730, 1066, 252, 4, 33, "Output"]
}, Open  ]],
Cell[39997, 1073, 193, 3, 89, "Text"],
Cell[40193, 1078, 119, 3, 53, "Input"],
Cell[40315, 1083, 129, 4, 53, "Input"],
Cell[40447, 1089, 242, 7, 53, "Input"],
Cell[40692, 1098, 136, 4, 33, "Input"],
Cell[40831, 1104, 67, 2, 33, "Input"],
Cell[40901, 1108, 67, 2, 33, "Input"],
Cell[40971, 1112, 71, 2, 33, "Input"],
Cell[41045, 1116, 79, 2, 33, "Input"],
Cell[CellGroupData[{
Cell[41149, 1122, 354, 7, 72, "Input"],
Cell[41506, 1131, 547, 10, 45, "Print"],
Cell[42056, 1143, 1129, 16, 273, "Print"],
Cell[43188, 1161, 802, 14, 83, "Print"],
Cell[43993, 1177, 516, 10, 45, "Print"],
Cell[44512, 1189, 1133, 16, 254, "Print"],
Cell[45648, 1207, 308, 6, 33, "Output"]
}, Open  ]],
Cell[45971, 1216, 111, 3, 33, "Input"],
Cell[CellGroupData[{
Cell[46107, 1223, 354, 7, 72, "Input"],
Cell[46464, 1232, 547, 10, 45, "Print"],
Cell[47014, 1244, 1128, 16, 273, "Print"],
Cell[48145, 1262, 801, 14, 83, "Print"],
Cell[48949, 1278, 517, 10, 45, "Print"],
Cell[49469, 1290, 1129, 16, 254, "Print"],
Cell[50601, 1308, 306, 6, 33, "Output"]
}, Open  ]],
Cell[50922, 1317, 111, 3, 33, "Input"],
Cell[51036, 1322, 192, 5, 53, "Input"],
Cell[CellGroupData[{
Cell[51253, 1331, 80, 1, 33, "Input"],
Cell[51336, 1334, 243, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[51616, 1343, 300, 6, 72, "Input"],
Cell[51919, 1351, 977, 16, 102, "Print"],
Cell[52899, 1369, 542, 8, 102, "Print"],
Cell[53444, 1379, 435, 8, 25, "Print"],
Cell[53882, 1389, 421, 8, 25, "Print"],
Cell[54306, 1399, 444, 9, 25, "Print"],
Cell[54753, 1410, 420, 6, 64, "Print"],
Cell[55176, 1418, 455, 9, 25, "Print"],
Cell[55634, 1429, 265, 4, 25, "Print"],
Cell[55902, 1435, 311, 5, 25, "Print"],
Cell[56216, 1442, 431, 8, 25, "Print"],
Cell[56650, 1452, 1188, 16, 292, "Print"],
Cell[57841, 1470, 306, 6, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[58184, 1481, 184, 3, 32, "Text"],
Cell[58371, 1486, 38, 0, 33, "Input"],
Cell[58412, 1488, 680, 12, 129, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[59129, 1505, 141, 2, 32, "Text"],
Cell[59273, 1509, 38, 0, 33, "Input"],
Cell[59314, 1511, 431, 8, 53, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[59782, 1524, 144, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[59951, 1531, 300, 8, 33, "Input"],
Cell[60254, 1541, 1856, 54, 197, "Output"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[62159, 1601, 143, 2, 32, "Text"],
Cell[62305, 1605, 300, 8, 33, "Input"],
Cell[62608, 1615, 663, 18, 58, "Output"]
}, Open  ]],
Cell[63286, 1636, 32, 0, 32, "Text"],
Cell[63321, 1638, 320, 9, 33, "Input"],
Cell[63644, 1649, 4083, 141, 327, "Output"],
Cell[67730, 1792, 204, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[67959, 1799, 190, 4, 33, "Input"],
Cell[68152, 1805, 210, 5, 33, "Output"]
}, Open  ]],
Cell[68377, 1813, 505, 14, 239, "Text"],
Cell[68885, 1829, 342, 9, 53, "Input"],
Cell[69230, 1840, 245, 6, 53, "Input"],
Cell[CellGroupData[{
Cell[69500, 1850, 120, 2, 33, "Input"],
Cell[69623, 1854, 240, 4, 33, "Output"]
}, Open  ]],
Cell[69878, 1861, 84, 1, 33, "Input"],
Cell[69965, 1864, 2239, 75, 161, "Output"],
Cell[72207, 1941, 250, 4, 51, "Text"],
Cell[72460, 1947, 199, 4, 53, "Input"],
Cell[72662, 1953, 625, 9, 121, "Print"],
Cell[73290, 1964, 132, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[73447, 1970, 112, 2, 33, "Input"],
Cell[73562, 1974, 24039, 655, 383, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[97638, 2634, 66, 1, 33, "Input"],
Cell[97707, 2637, 242, 4, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
