(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 145873, 4277]*) (*NotebookOutlinePosition[ 146927, 4313]*) (* CellTagsIndexPosition[ 146883, 4309]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{Cell[TextData["Groebner Package"], "Subtitle", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "Garry Helzer\nDepartment of Mathematics\nUniversity of Maryland\nCollege \ Park, MD 20742\nUSA\n301-405-5176\ng_helzer@math.umd.edu"], "Text", Evaluatable->False, PageBreakAbove->False, PageBreakBelow->False, TextAlignment->Center, AspectRatioFixed->True]}, Open]], Cell[TextData[StyleBox[ "Version 1.01 \ May, 1994", CellMargins->{{12, Inherited}, {Inherited, Inherited}}, PageBreakBelow->False, TextAlignment->Center, AspectRatioFixed->True, FontFamily->"Times", FontSize->14, FontWeight->"Plain", FontSlant->"Italic"]], "Input", CellMargins->{{12, Inherited}, {Inherited, Inherited}}, PageBreakBelow->False, TextAlignment->Center, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData[ "Overview \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The Groebner package contains functions for computing with Groebner bases \ of polynomial rings, and their modules, over the field of rational numbers. \ The function ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Groebner", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " computes Groebner bases with respect to a given term order. The function \ ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " computes the remainder resulting from the division algorithm. The \ function ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ExtendedNormalForm", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " computes the quotient polynomials as well as the remainder from the \ division algorithm and the function ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ExtendedGroebner", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " computes the polynomial coefficients expressing the Groebner basis as a \ linear combination of the giver basis as well as the Groebner basis itself. \ In addition a number of functions are provided that facilitate common \ Groebner basis calculations.\n \nA number of standard term orders are built \ into the package. In addition the user may define special term orders. See \ the section on term orders below.\n\nModule calculations are handled with ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["placeholder variables", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[". That is, a tuple such as (x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2 ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["- y, z", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[") is entered as ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["(x^2 - y)e1 + z^3e2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" and the ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" variables", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" e1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" and ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["e2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " are flagged as placeholders. See the section on placeholders below for \ details.\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Computing Groebner Bases "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The expression \n\n ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Groebner[F,vars,pvars,order]\n \n", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "returns the reduced Groebner basis of the submodule generated by the the \ set of polynomials F. The second argument is the list of variables in \ descending order and the third argument, which is optional, specifies which \ variables are placeholders. The fourth argument specifies the term order to \ be used. \n\nExample 1: \n\n", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["G=Groebner[{1-x y, x^2+y^2-1}, {x,y}, deglex]", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\n\ncomputes the reduced Groebner basis of the ideal of Q[x,y] generated \ by 1-xy and x", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["+y", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "-1 using the degree lexicographical order with x>y.\n\nExample 2:\n \ \n \:ffff", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox[ "G=Groebner[{(1+x^2)e1 + y e2, z e1-x e2},{x,y,z,e1,e2},\n \ {e1,e2}, deglex]", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\n \ncomputes the reduced Groebner basis of the submodule of Q[x,y,z]", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" generated by the vectors (1+x", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ ", y) and (z, -x). The order of the variables is x>y>z>e1>e2. This \ happens to be a term- over-postion order. For information on module orders \ see the section on placeholder variables.\n\nThe option ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["ShowProgress->True", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " may be used to while away the time while the function executes. For an \ explanation of the output see the section on options.\n\nA form with only two \ arguments is permitted. The expression\n\n", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Groebner[F,vars]", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n\nsimply calls ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ "'s built in GroebnerBasis function with the same arguments. The built-in \ function uses the lexocographical order. Options may not be used with this \ form.\n\nThe function ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["ExtendedGroebner", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" has the same syntax as ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Groebner", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " except that a two argument form is not available. It returns a list with \ two entries. The the second entry is the list of polynomials in the Groebner \ basis and the first entry is a matrix of polynomial coefficients expressing \ the Groebner basis in terms of the given basis.\n\nExample 3: Using the \ system of Example 2.\n \n ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["F={(1+x^2)e1 + y e2, z e1-x e2};", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox[" {T,", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" \:ffff", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["G}=ExtendedGroebner[F,{x,y,z,e1,e2},{e1,e2}, deglex]\n \n", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["Computes the same ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["G", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " (up to constant factors) as Example 2 and in addition defines a matrix, \ ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["T", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ", of polynomials in Q[x,y,z] such that the matrix-vector product ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["T.F", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is the vector ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["G", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ". (Since polynomial products are not automatically simplified in ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " the simplest way to check this is to verify that the expression ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Expand[G - T.F]", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" returns a zero vector.) ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["ExtendedGroebner ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["is slower than ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Groebner", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " by a factor of about 2.\n\nThe polynomials returned by ExtendedGroebner \ are not primitive. The function ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["MakeMonic", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" described in the section titled ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], StyleBox["Other Functions ", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox["may be used to adjust the coefficients.", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 116}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Computing Normal Forms "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The expression \n\n ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm[F,vars,pvars,order][p]\n \n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "performs a version of division algorithm on the module element p using the \ polynomials in the set F, returning the remainder. The second argument is \ the list of variables in descending order and the third argument, which is \ optional, specifies which variables are placeholders. The fourth argument \ specifies the term order to be used. If the set F is a Groebner basis with \ respect to the order specified then the result is the normal form of the \ element p with respect to the submodule generated by F. If F is not a \ Groebner basis then the result depends upon the order of the elements of F. \ Note: If several elements of F have the same leading power product, this \ version keeps the first element and discards the rest.\n\nNote that if \ several normal forms are to be computed with only p varying then one may\n \ save typing by defining\n \n ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" NF=NormalForm[F,vars,pvars,order]\n ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n and computing ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NF[p1]", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NF[p2]", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", and so on. \n\n\nExample: \n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[ "G=Groebner[{1-x y, x^2+y^2-1}, {x,y}, deglex];\n\ NG=NormalForm[G,{x,y},deglex];\nNG[1-x y]\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["should produce a zero.\n\nThe function ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " returns only the remainder. The 'quotients' may be obtained using the \ function ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ExtendedNormalForm. ExtendedNormalForm ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["has the same syntax as ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" but returns a pair ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["{T,r}", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" where ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["T", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is the vector of quotients. That is, if ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is a list (vector) of polynomials and \n\n ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["{T,r}=ExtendedNormalForm[F,vars,order][p]\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" then ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["T.F+r", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ". Since polynomial products are not automatically simplified in ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" the simplest way to check this is to verify that ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Expand[p-(T.F+r)] ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["returns a zero.\n \n The function ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" executes no faster than ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ExtendedNormalForm", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". To check submodule membership the function ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["MemberShipQ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", which executes faster than ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["NormalForm", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", is provided. ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["MembershipQ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" has the same syntax as the normal form functions but returns ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" if", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is in the ideal generated by ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" and ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" otherwise.\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Other Functions \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[ "A number of functions useful in working with Groebner bases are provided "], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["Ordering polynomials"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The expressions \n\n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["OrderForm[vars,order][p]", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" or ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" p//OrderForm[vars,order]", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\n \ndisplay the polynomial p, in a rather klunky format, as a \ descending sum of terms with respect to the given order. The argument ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["vars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " lists the variables in descending order. (Since only a sort is involved \ the placeholder variables need not be singled out for special treatement and \ so a placeholder argument is not needed.)\n\nThe expression \n\n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["OrderSet[vars,order][F]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "reorders the set of polynomials F in descending order by leading term with \ respect to the given order.\n\nThe expression \n\n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["DisplaySet[vars,order][F]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["applies ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["OrderSet", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" to F, then displays the result in a single column using ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["OrderForm", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" on the individual polynomials.", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData["Leading terms"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "Functions for computing the leading term, leading coefficient, and leading \ power product of a polynomial are provided. These three functions all have \ the same syntax:\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["LeadingTerm[vars,order][p]\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "returns the leading term (= coefficient and power product) of p with \ respect to the given order.\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["LeadingCoefficient[vars,order][p]\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "returns the leading coefficient of p with respect to the given order.\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["LeadingPowerProduct[vars,order][p]\n\n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "returns the leading power product of p with respect to the given order.\n\n\ The argument ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["vars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " lists the variables in descending order. (Since only a sort is involved \ the placeholder variables need not be singled out for special treatement and \ so a placeholder argument is not needed for the above functions.)\n \n The \ expression\n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["\n MakeMonic[vars, order][F]", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n \n divides the polynomials in the set ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " by their leading terms with respect to the given order. If the argument \ ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is of the form ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["{T,G}", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", the output of ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ExtendedGroebner", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", the matrix ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["T", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is adjusted as well.\n \n It is sometimes useful to be able to \ automatically compute the multidegree vector of a monomial with respect to a \ set of variables. The Mdeg function does this. The syntax is \n \n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mdeg[vars][m]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "where vars is the list of variables in descending order and m is the \ monomial.", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData["S-Polynomials"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["If G is a list of polynomials, the expression\n \n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["S=SPolynomials[vars,pvars,order][G]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "stores in S the set of S-polynomials formed from the elements of G using \ the specified order. The argument ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["vars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" lists the variables in descending order and the argument ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["pvars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", which is optional, specifies which elements of ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["vars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " are to be considered placeholder variables. S is a doubly nested array \ with ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["S[[i,j]]", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " equal to the S-polynomial formed from the i-th and (i+j)-th elements of \ G.\n\nIn syzygy computations it is sometimes useful to know which pairs of \ polynomials produce nonzero S-polynomials. The expression \n \n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ind=NonzeroIndices[S]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "produces a the list of index pairs producing nonzero S-polynomials. The \ elements of the array ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ind", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" are of the proper form to be used as an argument to the ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["MonomialSyzygy", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" function. ( See the subsection on syzygys below).", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData["Syzygys"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The function ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["MonomialSyzygys", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is used to construct syzygys for lists of monomials. The syntax is\n\n \ ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["MonomialSyzygy[vars,pvars,order,monlist][{i,j}]\n \n", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" Here ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["vars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is the list of variables in descending order, ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["pvars", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", which is optional, is the list of placeholder variables, and ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["order", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is the term order. The variable ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["monlist", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is the list of monomials and the pair {i, j} specifies the i, j-th \ syzygy. See the worked example.", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["\n \n ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"] }], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Term Orders\t\t\t\t\t \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["Built-in Term Orders"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "Any of the words listed below may be used to specify the term order for \ those functions that take a term order for one argument. There is no \ distinction between orders for ideal case and orders for the submodule case. \ See the section on placeholder variables for futher information.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["lex:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" The lexicographical term order.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["deglex:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" The degree or graded lexicographical order.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["grlex:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" A synonym for deglex.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["degrevlex:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" The degree reverse lexicographical order.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["grevlex:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" A synonym for degrevlex.\n\n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ProductOrder[ord1, ord2]:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " This order requires that the argument listing the variables be grouped \ into two sublists. The first sublist is ordered by ord1 and the second \ sublist is ordered by ord2. Any term containing a variable from the first \ list preceeds any term containing only variables from the second list. (The \ placeholder variable list is not grouped.)\nExample:\n\n ", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Groebner[F,{{x,y},{t,u,v}},ProductOrder[deglex, degrevlex]]", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n \n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["EliminationOrder:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " This is ProductOrder[degrevlex,degrevlex]. The variables must be grouped \ into sublists as for ProductOrder.\n \n", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" BayerStillmanOrder[spvars]:", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" The list ", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["spvars", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " is a subset of the variable list. Terms are orded by total degree in the \ variables specified in ", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["spvars", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " with ties broken using the degrevlex order. It is an elimination order \ designed to eliminate the variables of ", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["spvars", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[".\n Example:\n ", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Groebner[F,{s,t,x,y,z},BayerStillmanOrder[{s,t}]]", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"] }], "Text", CellMargins->{{Inherited, 121}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData["Custom Orders"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "If none of the built-in orders suffice, custom orders may be defined. This \ subsection describes the process.\n\nThe algorithms order terms by operating \ on multidegree vectors with a matrix A. ( If the variable ordering is z>x>y \ then the term y", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "z has multidegree vector (1, 0, 2).) If v and w are two multidegree \ vectors, they are compared by comparing v.A and w.A in ", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ "'s standard order, which is lexicographical. The built-in orders such as \ lex or deglex are simply function names that take the variable list as an \ argument and return the matrix A. (To see the matrix returned by deglex, \ say, just execute the statement deglex[{x,y,z,w}]//MatrixForm.)\n\nThus \ defining a custom order consists of using standard Mathematica programming \ techniques to define a function that takes the variable list as an argument \ and returns the desired matrix. For a one-time use this need not be a \ complicated procedure. If, for example the matrix with rows {1,2}, {3,4} and \ {5,6} is desired just use the definition\n\n ", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" MySpecialOrder[_]={{1,2},{3,4},{5,6}}\n ", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\nFor another example see the Worked Example section below.\n \ \n ", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 122}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Placeholder Variables \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["The algorithms of this package assume a ring R= Q[x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",...,x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",...,y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["m", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["] considered as a module over the subring A=Q[x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",...,x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ "]. ( Q is the rational numbers.) Term orders are defined on the ring R \ but elements of R are multiplied only by elements of A. The variables y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", . . . ,y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["m", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" are called ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["placeholder variables", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ ". The algorithms of the package manipulate elements of R, ordering their \ terms with respect to the given order, but do not multiply together any two \ polynomials both of which contain variables y", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["i", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ ". Placeholder variables are used for module computations and, internally, \ as 'catchers' to accumulate multipliers as the algorithms execute.\nSuppose \ that the ring A=Q[x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",...,x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ "] has a given term order ord1 and we wish to compute with elements of \ the module A", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[". We can do this by mapping A", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" into R=A[e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["] by (p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[")->p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["+p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["+p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ ". To extend the term order from A to R we can list the variables in the \ order {x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",. . .,x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ "} and specify the order as ProductOrder[ord1,lex]. This gives the \ term-over-position (TOP) order. The syntax is \n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["G=Groebner[F,{x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",. . .,x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["},{e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ "},\n ProductOrder[ord1,lex]]", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n\nPlacing the e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["i", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" before the x", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["i", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ " and using ProductOrder[lex, ord1] will give the position-over- term order \ (POT). These are not the only term orders possible. Any term order on R, \ degrevlex for example, can be used to compute a Groebner basis for a \ submodule.\n\nAnother way to get a version of A", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" is to map (p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[")->p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e+p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["+p", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["e", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3 ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "in A[e] and define a suitable term order on A[e]. This is somewhat more \ efficient than the above scheme for the algorithms of the package because it \ results in shorter multidegree vectors.", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Options \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The options in version 1.0 apply only to the Groebner, NormalForm and \ MembershipQ functions and their extended variants. The options are", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" ShowProgress", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["SingleStep", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Characteristic", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", and ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["PreliminaryReduction.\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["Characteristic: ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox["The default value of ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Characteristic", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["0", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". The expression\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Groebner[F,vars,ord,Characteristic->5]\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "causes the computations to be carried out modulo 5. The polynomials in \ the set ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" should have integer coefficients.", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ShowProgress:", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["The default value of ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ShowProgress", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". The expression", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["\n\nGroebner[F,vars,ord,ShowProgress->True]", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\n\ncauses certain information to be printed as the function executes. \ The terms used in the printed messages are explained below. \n\nThe basic \ operation in division algorithms is the replacement of a polynomial p by a \ polynomial p-mf where m is a monomial and the polynomial f is one of the \ divisiors. As an algorithm executes, the polynomial mf is created, used, \ and discarded. Such polynomials will be referred to as ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["auxilliary polynomials", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ ". \n\nThe main algorithm of this package proceeds roughly as follows. \ Given a set of polynomials, it first forms all the S-polynomials that might \ be needed, it then generates all the auxilliary polynomials that might be \ needed to interreduce the original set of polynomials and the S-polynomials \ they generate. The algorithm then does the equivlent of changing all these \ polynomials to vectors of coefficients, making the vectors the rows of a \ matrix, row reducing the matrix to reduced echelon form over the rationals, \ changing back to polynomials and discarding the remains of the auxilliaries. \ The Dickson basis of the monoid of leading terms is then computed. The \ algorithm loops through this process until the Dickson basis stops changing. \ The polynomials with leading power products from the Dickson basis are then \ returned. They are the (completely interreduced) Groebner basis sought.\n\n\ When the option ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ShowProgress", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is set to ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ", each time through the loop the algorithm prints: the total number of \ S-polynomials generated, the number of auxilliary polynomials generated, The \ total number of polynomials (= number of rows of the matrix), the total \ number of power products (= number of columns of the matrix), the cpu time \ for the matrix reduction, the number of polynomials in the result, and the \ number of Dickson basis elements (= number of polynomials in the tentative \ reduced basis). All computations with coefficients, including the \ accumulation of the quotients in the extended versions of the algorithms, \ take place during the \"interreduction phase\" for which the cpu time is \ reported. The rest of the code involves only computations, including sorts, \ with multidegree vectors. In particular, the S-polynomial S(f,g) is not \ explicitly formed, rather f and g are multiplied by the appropriate power \ products (a multidegree computation) and the resulting pair is passed on to \ the row reduction phase. If two such pairs have a polynomial in common, one \ is discared resulting in a fractional number of S-polynomials.\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["RecordStats:", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" The default value of ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["RecordStats", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". The expression ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["RecordStats->True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" produces the same information as ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ShowProgress->True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " but instead of being displayed as the function executes the information \ is stored in a global variable named ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["GroebnerStatistics", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["GroebnerStatistics", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is a matrix with seven columns and one row for each time the function \ executes its main loop. The numbers in each row are the samequantities \ described, and in the same order, as in the discussion of ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ShowProgress", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" above. The variable ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["GroebnerStatistics", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is reset to {} each time a Groebner function begins execution with ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["RecordStats->True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[".\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["PreliminaryReduction: ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox["The default value of ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["PreliminaryReduction", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox["is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" in the Groebner and NormalForm functions and ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " for the MembershipQ functions The Groebner, NormalForm and MembershipQ \ functions perform a preliminary computation on the set of input polynomials. \ The Groebner functions do a preliminary interreduction and the NormalForm and \ MembershipQ functions discard polynomials with repeated leading terms. The \ option ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["PreliminaryReduction->False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " causes this preliminary calculation to be skipped, saving a bit of time \ if the set of polynomials is already of the proper form. This is useful when \ one of the the NormalForm functions is being used with a known Groebner basis \ or when one of the Groebner functions is being used with the single step \ option. It is assumed that the MembershipQ function would normally be used \ with a Groebner Basis.\n\n", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["SingleStep:", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" The default value of the ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["SingleStep", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" option is ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["False", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[". The option applies only to the Groebner functions. ", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["SingleStep->True", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " causes the Groebner functions to exit after one pass through their main \ loop. Thus they take the set of input polynomials, compute all S-polynomials \ that cannot be shown unnecessary, interreduce the set, and return the result. \ This result is another basis of the same ideal, but not necessarily a \ Groebner basis.", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 115}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[{ StyleBox["Useful ", Evaluatable->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" Expressions ", Evaluatable->False, AspectRatioFixed->True] }], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["There are three ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " techniques that are quite useful for manipulating lists of polynomials: \ mulitiple assignment, mapping functions over lists, and pure functions. The \ last two are usually used together. \n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Multiple assignments:", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " The left side of an assignment expression need not consist of a single \ variable name. The ExtendedGroebner function returns a pair consisting of a \ matrix and a Groebner basis. To assign the matrix to the variable T and the \ Groebner basis to the variable G use the expression \n\n \ ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["{T,G}=ExtendedGroebner[ . . . ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["\n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Functions on lists:", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[ " Given a function of a single argument, f[x], and a list of arguments \ L={x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",\[NonBreakingSpace]x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", . . .} one often needs the list of values {f[x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["], f[x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["], . . . }. This is called ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["mapping", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" f over L and is effected using the ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " function Map, which is abbreviated /@. Given f and L use the expression\ \n\n ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["f/@L ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["or", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox[" Map[f,L]\n \n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "Usually the function f, however, has several arguments, only one of which \ is to be varied. In this case one uses pure functions.\n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Pure functions:", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontWeight->"Bold"], StyleBox[" The expression\n\n ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Function[x, 1+x^2]\n \n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox["denotes the function that takes x to 1+x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ ". The first argument is the dummy variable and the second argument is a \ formula for the function in terms of the dummy variable. The above \ expression is usually written in the abbreviated form\n\n \ ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1+#^2&", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "\n\nhere the symbol # is understood to stand for the dummy variable and \ the symbol & is a postfix abbreviation for the name ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Function", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ".\n\nExample 1: Suppose that a polynomial p in the variables x, y, z is \ given and one wishes to display the leading term of p with respect to the \ orders lex, deglex, and degrevlex where x\[NonBreakingSpace]>\ \[NonBreakingSpace]y\[NonBreakingSpace]>\[NonBreakingSpace]z. An expression \ that does this is \n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["LeadingTerm[{x,y,z},#][p]&/@{lex,deglex,degrevlex}\n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "Example 2: This time the leading term with respect to lex is sought for \ various orderings of the variables.\n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["LeadingTerm[#,lex][p]&/@{{x,y,z},{x,z,y},{y,x,z},{y,z,x}}\n\n", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "Example 3: Suppose that a list L of pairs is given and a list consisting \ of the first element of each pair is desired. (This problem comes up in the \ worked example below.) An expression that computes the list of first \ elements is\n\n ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["#[[1]]&/@L\n \n ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ "This works because the double brackets are simply an abbreviation for the \ ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" function Part. That is, ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["x[[3]]", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" is an abbreviation for ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Part[x,3].", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"] }], "Text", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData[ "Worked Example \ "], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "This example parallels a sequence of examples in Adams & Loustaunau, An \ Introduction to Gr\[ODoubleDot]bner Bases (Nov. 6, 1993 Draft), in order to \ clarify notational differences between the package and the literature.\n\nThe \ problem (Example 3.6.1, p. 104) is to compute the module of syzygys for the \ set F={f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",\[NonBreakingSpace]f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2\[NonBreakingSpace]", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",\[NonBreakingSpace]f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[",\[NonBreakingSpace]f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["4", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["} in Q[x, y]", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" where\n f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["=(xy, y ,x), f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["=(x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["+x, y+x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[", y), f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["=(\[Dash] y ,x, y), f", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["4", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["=(x", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ ", x, y).\n The lex term order is taken on Q[x,y] with y > x and the \ term-over-position order is taken on Q[x, y]", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" with e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1 ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["> e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2 ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["> e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ ". In terms of placeholder variables, this amounts to taking the lex term \ order on Q[x, y, e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1,", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["] with y > x > e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" > e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" > e", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ " .\n \n Assume that the package has been loaded using whatever commands \ are necessary on the local system. The first step is to compute a Groebner \ basis, G, for the submodule generated by F. We also need a matrix of \ coefficients, T, for expressing G in terms of F. The function \ ExtendedGroebner is used when a matrix T is needed. First enter and execute \ the expression\n ", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 113}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "F={x y e1+y e2+x e3,\n (x^2+x)e1+(y+x^2)e2+y e3,\n -y e1+x e2+y e3,\n \ x^2e1+x e2+y e3};"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData["to define the set F and then enter and execute "], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "{T,G}=ExtendedGroebner[F,{y,x,e1,e2,e3},\n \ {e1,e2,e3},lex,ShowProgress->True]\n"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The ShowProgress option, if included, gives some indication of how the \ computation is proceeding (see the section on options for an explanation of \ the messages). The resulting G is displayed by ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" as ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {2*e1*x^2 + 2*e2*x^3 - 2*e3*x^3, -(e3*x) + e2*(-x + x^2) + e1*(x + x^3), e2*(2*x - x^2) + e1*(-2*x + x^2) + e3*(2*x + x^2 - 3*x^3 - x^4 + x^5), e2*x + e1*x^2 + e3*y, e1*x + e2*(-x + x^2 + y), e1*(x^2 + y)}\ \>", "\<\ 2 3 3 {2 e1 x + 2 e2 x - 2 e3 x , 2 3 -(e3 x) + e2 (-x + x ) + e1 (x + x ), 2 2 e2 (2 x - x ) + e1 (-2 x + x ) + 2 3 4 5 2 e3 (2 x + x - 3 x - x + x ), e2 x + e1 x + e3 y, 2 2 e1 x + e2 (-x + x + y), e1 (x + y)}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "This is essentially the same basis as the one given in Adams and Loustaunau \ but the order is different and, in version 1.0 at least, the first polynomial \ is not primitive."], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The matrix T has been edited from the display to save space. This matrix \ differs from the corresponding matrix in Example 3.6.1 in two ways. First of \ all, it is the transpose of the matrix given in Adams and Loustaunau and \ multiplies the set F on the left rather than the right. Note that expressing \ the module elements f", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["i", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" as polynomials in Q[x, y, e", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", e", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", e", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ "] gives us a representation of F, and G as well, as a vector instead of \ a matrix of column vectors. The relation between F and G is given by the \ matrix-vector product: G=TF. The easiest way to check this relation is \ (recall that matrix multiplication is \".\" in ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" ):", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["Expand[G-T.F]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {0, 0, 0, 0, 0, 0}\ \>", "\<\ {0, 0, 0, 0, 0, 0}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[{ StyleBox[ "The entries of T are unexpanded products and the expression T=Expand[T] \ often reduces the display.\n\nAfter transposing this T we still do not have \ the matrix given in Adams and Loustaunau, the two differ in the last two \ columns. This merely illustrates the fact that such matrices are not unique \ and depend on the details of the algorithm's implementation.\n\nTo compute \ syzygys we also need a matrix of coefficients S such that F=SG. The matrix \ S is obtained by applying the division algoritm to the set F. Using the \ standard ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ " idiom for applying a function to a set of arguments we have (see the \ section on useful ", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" expressions):", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "nfF=ExtendedNormalForm[G,{y,x,e1,e2,e3},\n \ {e1,e2,e3},lex,ShowProgress->True]/@F"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "Now the output of the ExtendedNormalForm function on a single polynomial \ is a pair {q,\[NonBreakingSpace]r} where r is the remainder and q is the \ list of quotients. Thus the output of this expression is a list of four such \ pairs which ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" displays as (editing out the ShowProgress messages):", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{{0, -1, 0, 0, 1, x}, 0}, {{0, 0, 0, 1, 1, 0}, 0}, {{0, 0, 0, 1, 0, -1}, 0}, {{0, 0, 0, 1, 0, 0}, 0}}\ \>", "\<\ {{{0, -1, 0, 0, 1, x}, 0}, {{0, 0, 0, 1, 1, 0}, 0}, {{0, 0, 0, 1, 0, -1}, 0}, {{0, 0, 0, 1, 0, 0}, 0}}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["which is of the form {{q", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", r", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["1", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["}, {q", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", r", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["}, {q", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", r", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["3", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["}, {q", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["4", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[", r", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["4", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["}}. The q", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["i", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ " are the rows (columns in Adams and Loustaunau) of the matrix S. Thus the \ expression (see the section on useful ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Mathematica", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[" expressions):", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["S=#[[1]]&/@nfF"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{0, -1, 0, 0, 1, x}, {0, 0, 0, 1, 1, 0}, {0, 0, 0, 1, 0, -1}, {0, 0, 0, 1, 0, 0}}\ \>", "\<\ {{0, -1, 0, 0, 1, x}, {0, 0, 0, 1, 1, 0}, {0, 0, 0, 1, 0, -1}, {0, 0, 0, 1, 0, 0}}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "gives the desired matrix S. Note that this S is essentially the transpose \ of that of Example\[NonBreakingSpace]3.7.7. As in that example, the rows of \ I \[Dash] ST make no contribution to the syzygy module:"], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["IdentityMatrix[4]-S.T"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData[ "\<\ {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\ \>", "\<\ {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\ \>"], "Output",\ Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "Next we compute the syzygys of the set G. Start with the set of S \ polynomials, given by the expressions:"], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "spg=SPolynomials[{y,x,e1,e2,e3},\n \ {e1,e2,e3},lex][G];"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["spg=Flatten[spg,1]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {0, 0, 0, -(e1*x^4) + e2*x^4 - e2*x^5 + e1*x^2*y - e3*x^3*y, 0, 0, 0, 0, -(e1*x^5) + e1*x*y - e2*x*y - e3*x*y + e2*x^2*y, -(e2*x^6) - e1*x^7 - 2*e1*x*y + 2*e2*x*y + 2*e3*x*y + e1*x^2*y - e2*x^2*y + e3*x^2*y - 3*e3*x^3*y - e3*x^4*y, 0, 0, 0, 0, 0}\ \>", "\<\ 4 4 5 2 3 {0, 0, 0, -(e1 x ) + e2 x - e2 x + e1 x y - e3 x y, 5 0, 0, 0, 0, -(e1 x ) + e1 x y - e2 x y - e3 x y + 2 6 7 e2 x y, -(e2 x ) - e1 x - 2 e1 x y + 2 e2 x y + 2 2 2 3 2 e3 x y + e1 x y - e2 x y + e3 x y - 3 e3 x y - 4 e3 x y, 0, 0, 0, 0, 0}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "where one layer of brackets has been flattened out since the doubly nested \ structure of the S-polynomial array is not desirable here. Next we need the \ quotients of the S-polynimials upon division by G. As in the computation of \ S above we have:"], "Text", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "syz1=ExtendedNormalForm[G,{y,x,e1,e2,e3},\n \ {e1,e2,e3},lex,ShowProgress->True]/@spg;\nsyz1=#[[1]]&/@syz1 "], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {(2 + x - x^2)/2, (-4 - 2*x + 2*x^2)/2, -1, -x^3, 0, x^2}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {1/2, -x^2, 0, -x, (-2*x + 2*x^2)/2, x}, {(2 + x - x^2)/2, (-8 - 4*x + 8*x^2 + 2*x^3 - 2*x^4)/ 2, -2, (4*x + 2*x^2 - 6*x^3 - 2*x^4)/2, (4*x - 2*x^2)/2, (-4*x + 2*x^2)/2}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}\ \>", "\<\ {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, 2 2 2 + x - x -4 - 2 x + 2 x {0, 0, 0, 0, 0, 0}, {----------, ---------------, -1, 2 2 3 2 -x , 0, x }, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, 2 1 2 -2 x + 2 x {-, -x , 0, -x, -----------, x}, 2 2 2 2 3 4 2 + x - x -8 - 4 x + 8 x + 2 x - 2 x {----------, -----------------------------, -2, 2 2 2 3 4 2 2 4 x + 2 x - 6 x - 2 x 4 x - 2 x -4 x + 2 x ------------------------, ----------, -----------}, 2 2 2 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Mathematica", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontSlant->"Italic"], StyleBox[ "'s Expand function could be used to simplify the fractions. Next we need \ the syzygys of the set of leading terms of G. ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["leads=LeadingTerm[{y,x,e1,e2,e3},lex]/@G"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {2*e2*x^3, e1*x^3, e3*x^5, e3*y, e2*y, e1*y}\ \>", "\<\ 3 3 5 {2 e2 x , e1 x , e3 x , e3 y, e2 y, e1 y}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "The function MonomialSyzygy produces a single syzygy given the monomial list \ and a pair of indices i, j. To get all the syzygys we need to apply the \ function to all pairs of indices (i, j) with i < j. The Table function can \ be used to generate the index pairs:"], "Text", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "ind=Table[{i,i+j},{i,1,5},{j,1,6-i}];\nind=Flatten[ind,1];\n\ ms=MonomialSyzygy[{y,x,e1,e2,e3},{e1,e2,e3},\n \ leads]/@ind"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {y/2, 0, 0, 0, -x^3, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, y, 0, 0, 0, -x^3}, {0, 0, y, -x^5, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}\ \>", "\<\ {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, y 3 {0, 0, 0, 0, 0, 0}, {-, 0, 0, 0, -x , 0}, 2 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, 3 5 {0, y, 0, 0, 0, -x }, {0, 0, y, -x , 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}\ \>"], "Output", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "and the syzygys of the set G are generated by the rows of the matrix ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["ms \[Dash] syz1", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ ". This matrix has only three nonzero rows and they are given by:", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData["syzG=Expand[ms-syz1];\nsyzG=DeleteCases[syzG,{0 ..}]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData[ "\<\ {{-1 - x/2 + x^2/2 + y/2, 2 + x - x^2, 1, x^3, -x^3, -x^2}, {-1/2, x^2 + y, 0, x, x - x^2, -x - x^3}, {-1 - x/2 + x^2/2, 4 + 2*x - 4*x^2 - x^3 + x^4, 2 + y, -2*x - x^2 + 3*x^3 + x^4 - x^5, -2*x + x^2, 2*x - x^2}}\ \>", "\<\ 2 x x y 2 3 3 2 {{-1 - - + -- + -, 2 + x - x , 1, x , -x , -x }, 2 2 2 1 2 2 3 {-(-), x + y, 0, x, x - x , -x - x }, 2 2 x x 2 3 4 {-1 - - + --, 4 + 2 x - 4 x - x + x , 2 + y, 2 2 2 3 4 5 2 2 -2 x - x + 3 x + x - x , -2 x + x , 2 x - x }}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["To check that these polynomials are indeed syzygys, compute ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["Expand[syzG.G]", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " (note the order of the factors). A set of generators for the syzygys of \ ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["F", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[", the original problem, is now given by the matrix product ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["syzF=syzG.T", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" (again, note the order). The list ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["syzF", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " is not displayed to save space. Unlike Example 3.7.7, all three entries \ of the list are nonzero and it is not apparent that the syzygy module is \ principal. To discover this we can compute a Groebner basis of the syzygy \ module with respect to some term order. First shift from tuple notation to \ placeholder variables and then compute a Groebner basis.", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData["F2=Expand[syzG.T].{e1,e2,e3,e4}"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "G2=Groebner[F2,{y,x,e1,e2,e3,e4},{e1,e2,e3,e4},\n \ degrevlex,ShowProgress->True]\n"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {e2*(x^4 + x^2*y - x^2*y^2 - y^3) + e1*(-(x^3*y) + x^4*y - x*y^2 + 2*x^2*y^2 + y^3) + e4*(-x^3 - x^4 - x^3*y + 2*x^2*y^2 - x^3*y^2 + y^3 - x*y^3) + e3*(x^3 + x^4 - x^5 - x^3*y - x*y^2 - x^2*y^2 + x^3*y^2 + x*y^3)}\ \>", "\<\ 4 2 2 2 3 {e2 (x + x y - x y - y ) + 3 4 2 2 2 3 e1 (-(x y) + x y - x y + 2 x y + y ) + 3 4 3 2 2 3 2 3 3 e4 (-x - x - x y + 2 x y - x y + y - x y ) + 3 4 5 3 2 2 2 3 2 e3 (x + x - x - x y - x y - x y + x y + 3 x y )}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "Which is the generator of Example 3.7.7.\n\nFinally, as an example of a \ custom built term order, consider the set ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["syzG", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[ " found above. This set is a Groebner basis of the syzygy module with \ respect to a special term order. To work with this term order, first define \ 6 placeholder variables and switch the set ", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["syzG", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontFamily->"Courier"], StyleBox[" from tuples to placeholder notation.", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["vars=Join[{y,x},Table[e[i],{i,1,6}]]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {y, x, e[1], e[2], e[3], e[4], e[5], e[6]}\ \>", "\<\ {y, x, e[1], e[2], e[3], e[4], e[5], e[6]}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[CellGroupData[{Cell[TextData["syzG2=syzG.Table[e[i],{i,1,6}]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData[ "\<\ {(-1 - x/2 + x^2/2 + y/2)*e[1] + (2 + x - x^2)*e[2] + e[3] + x^3*e[4] - x^3*e[5] - x^2*e[6], -e[1]/2 + (x^2 + y)*e[2] + x*e[4] + (x - x^2)*e[5] + (-x - x^3)*e[6], (-1 - x/2 + x^2/2)*e[1] + (4 + 2*x - 4*x^2 - x^3 + x^4)*e[2] + (2 + y)*e[3] + (-2*x - x^2 + 3*x^3 + x^4 - x^5)*e[4] + (-2*x + x^2)*e[5] + (2*x - x^2)*e[6]}\ \>", "\<\ 2 x x y 2 {(-1 - - + -- + -) e[1] + (2 + x - x ) e[2] + e[3] + 2 2 2 3 3 2 x e[4] - x e[5] - x e[6], -e[1] 2 2 ----- + (x + y) e[2] + x e[4] + (x - x ) e[5] + 2 2 3 x x (-x - x ) e[6], (-1 - - + --) e[1] + 2 2 2 3 4 (4 + 2 x - 4 x - x + x ) e[2] + (2 + y) e[3] + 2 3 4 5 (-2 x - x + 3 x + x - x ) e[4] + 2 2 (-2 x + x ) e[5] + (2 x - x ) e[6]}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "Now we need to define a function, call it SpecialOrder, that will return the \ appropriate matrix when applied to the argument vars above (see the section \ on term orders above). To each variable e[i] we assign the multidegree \ vector of the leading term of the i-th polynomial in the Groebner basis G. \ These vectors are:"], "Text", CellMargins->{{Inherited, 108}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["b1=Mdeg[{y,x,e1,e2,e3}]/@leads"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{0, 3, 0, 1, 0}, {0, 3, 1, 0, 0}, {0, 5, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 1, 0}, {1, 0, 1, 0, 0}}\ \>", "\<\ {{0, 3, 0, 1, 0}, {0, 3, 1, 0, 0}, {0, 5, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 1, 0}, {1, 0, 1, 0, 0}}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[{ StyleBox["Then, for example, x", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "ye[1] is assigned multidegree vector (0,1,0,0,0)+(2,0,0,0,0)+(0,3,0,1,0) = \ (2,4,0,1,0). This can be accomplished by multiplying the ordinary \ multidegreee vector of x", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "ye[1], (1,2,1,0,0,0,0,0), by a matrix the last 6 rows of which are the \ above multidegree vectors and the first two rows of which are I", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], StyleBox["2", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True, FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[ " padded to the right with zeros. Then, for comparison purposes, multiply \ again by the order matrix of the original order. The original order here is \ lex so the order matrix is just the identitiy. Finally we need to patch in an \ identity matrix with rows reversed to break ties (Lemma 3.7.9 in Adams and \ Loustaunau). The package has a function, ColJoin, to aid in such \ constructions. ", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True] }], "Text", CellMargins->{{Inherited, 107}, {Inherited, Inherited}}, Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "a=ColJoin[IdentityMatrix[2],Table[0,{2},{9}]];\n\ b=ColJoin[b1,Reverse[IdentityMatrix[6]]];\nSpecialOrder[_]=Join[a,b]"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 1}, {0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 5, 0, 0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0}}\ \>", "\<\ {{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 1}, {0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 5, 0, 0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0}}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[TextData[ "So in this ordering, the leading terms of the syzygys are:"], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True], Cell[CellGroupData[{Cell[TextData["LeadingTerm[vars,SpecialOrder]/@syzG2"], "Input", PageBreakBelow->False, AspectRatioFixed->True], Cell[OutputFormData["\<\ {-(x^3*a[5]), -(x^3*a[6]), -(x^5*a[4])}\ \>", "\<\ 3 3 5 {-(x a[5]), -(x a[6]), -(x a[4])}\ \>"], "Output", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]], Cell[TextData[ "which, except for sign and a permutation of indices, is the result of \ Example 3.10.3."], "Text", Evaluatable->False, PageBreakBelow->False, AspectRatioFixed->True]}, Open]] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 640}, {0, 460}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{520, 365}, WindowMargins->{{4, Automatic}, {Automatic, 31}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, MacintoshSystemPageSetup->"\<\ AVU/IFiQKFD000000V7E<09QgO0000000OZ:d096/NP0AP1Y06`0I@1^0642HMD` 0V7N40000001nXZ`0TJaj000000000000000009QeC0000000000000000000000 00000000000000000000000000000000\>" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1731, 51, 94, 2, 70, "Subtitle", Evaluatable->False], Cell[1828, 55, 281, 7, 70, "Text", Evaluatable->False, PageBreakAbove->False, PageBreakBelow->False] }, Closed]], Cell[2121, 64, 494, 14, 70, "Input", PageBreakBelow->False], Cell[CellGroupData[{ Cell[2638, 80, 164, 4, 70, "Section", Evaluatable->False], Cell[2805, 86, 5286, 148, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[8123, 236, 149, 4, 70, "Section", Evaluatable->False], Cell[8275, 242, 10134, 266, 70, "Text", Evaluatable->False] }, Closed]], Cell[CellGroupData[{ Cell[18441, 510, 149, 4, 70, "Section", Evaluatable->False], Cell[18593, 516, 10819, 302, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[29444, 820, 158, 4, 70, "Section", Evaluatable->False], Cell[29605, 826, 176, 5, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[29804, 833, 100, 2, 70, "Subsection", Evaluatable->False], Cell[29907, 837, 2457, 78, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[32396, 917, 93, 2, 70, "Subsection", Evaluatable->False], Cell[32492, 921, 3946, 127, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[36470, 1050, 93, 2, 70, "Subsection", Evaluatable->False], Cell[36566, 1054, 2819, 89, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[39417, 1145, 87, 2, 70, "Subsection", Evaluatable->False], Cell[39507, 1149, 2100, 71, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[41648, 1222, 165, 4, 70, "Section", Evaluatable->False], Cell[CellGroupData[{ Cell[41836, 1228, 100, 2, 70, "Subsection", Evaluatable->False], Cell[41939, 1232, 5998, 163, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[47969, 1397, 93, 2, 70, "Subsection", Evaluatable->False], Cell[48065, 1401, 2564, 60, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[50670, 1463, 155, 4, 70, "Section", Evaluatable->False], Cell[50828, 1469, 23081, 664, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[73941, 2135, 165, 4, 70, "Section", Evaluatable->False], Cell[74109, 2141, 18019, 479, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[92160, 2622, 373, 13, 70, "Section", Evaluatable->False], Cell[92536, 2637, 10722, 291, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]], Cell[CellGroupData[{ Cell[103290, 2930, 156, 4, 70, "Section", Evaluatable->False], Cell[103449, 2936, 9592, 267, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[113044, 3205, 172, 4, 70, "Input", PageBreakBelow->False], Cell[113219, 3211, 146, 3, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[113368, 3216, 172, 4, 70, "Input", PageBreakBelow->False], Cell[113543, 3222, 867, 24, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[114413, 3248, 751, 30, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[115167, 3280, 275, 6, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[115445, 3288, 2787, 74, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[118255, 3364, 91, 2, 70, "Input", PageBreakBelow->False], Cell[118349, 3368, 164, 8, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[118525, 3378, 1306, 36, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[119834, 3416, 173, 4, 70, "Input", PageBreakBelow->False], Cell[120010, 3422, 962, 25, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[120975, 3449, 342, 12, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[121320, 3463, 4176, 122, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[125519, 3587, 92, 2, 70, "Input", PageBreakBelow->False], Cell[125614, 3591, 302, 12, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[125928, 3605, 370, 7, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[126321, 3614, 99, 2, 70, "Input", PageBreakBelow->False], Cell[126423, 3618, 243, 10, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[126678, 3630, 207, 5, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[126888, 3637, 156, 4, 70, "Input", PageBreakBelow->False], Cell[CellGroupData[{ Cell[127067, 3643, 96, 2, 70, "Input", PageBreakBelow->False], Cell[127166, 3647, 822, 31, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[128000, 3680, 410, 8, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[128413, 3690, 207, 5, 70, "Input", PageBreakBelow->False], Cell[128623, 3697, 1638, 60, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[130264, 3759, 631, 18, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[130918, 3779, 118, 2, 70, "Input", PageBreakBelow->False], Cell[131039, 3783, 236, 9, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[131287, 3794, 429, 8, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[131719, 3804, 238, 5, 70, "Input", PageBreakBelow->False], Cell[131960, 3811, 946, 39, 70, "Output", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->False], Cell[132909, 3852, 808, 23, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[133720, 3877, 130, 2, 70, "Input", PageBreakBelow->False], Cell[133853, 3881, 809, 31, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[134665, 3914, 2300, 61, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[136968, 3977, 109, 2, 70, "Input", PageBreakBelow->False], Cell[137080, 3981, 183, 4, 70, "Input", PageBreakBelow->False], Cell[137266, 3987, 766, 28, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[138035, 4017, 1354, 37, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[139412, 4056, 114, 2, 70, "Input", PageBreakBelow->False], Cell[139529, 4060, 212, 8, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[139773, 4070, 108, 2, 70, "Input", PageBreakBelow->False], Cell[139884, 4074, 1135, 44, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[141031, 4120, 487, 9, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[141541, 4131, 108, 2, 70, "Input", PageBreakBelow->False], Cell[141652, 4135, 342, 12, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[142006, 4149, 2157, 54, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[144166, 4205, 200, 5, 70, "Input", PageBreakBelow->False], Cell[144369, 4212, 758, 36, 70, "Output", Evaluatable->False, PageBreakBelow->False], Cell[145130, 4250, 158, 4, 70, "Text", Evaluatable->False, PageBreakBelow->False], Cell[CellGroupData[{ Cell[145311, 4256, 115, 2, 70, "Input", PageBreakBelow->False], Cell[145429, 4260, 233, 9, 70, "Output", Evaluatable->False, PageBreakBelow->False] }, Open ]], Cell[145674, 4271, 187, 5, 70, "Text", Evaluatable->False, PageBreakBelow->False] }, Closed]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)