<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="0"/><View-Properties><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 3" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Author" rightmargin="0.0" spaceabove="8.0" spacebelow="8.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 2" rightmargin="0.0" spaceabove="8.0" spacebelow="2.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 1" rightmargin="0.0" spaceabove="8.0" spacebelow="4.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" bullet="none" linebreak="any" name="Line Printed Output"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Title" rightmargin="0.0" spaceabove="12.0" spacebelow="12.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.5" name="Maple Output" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Font background="[0,0,0]" family="Monospaced" foreground="[0,0,255]" name="Line Printed Output" opaque="false" readonly="true" size="12"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" name="Heading 3" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle289"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Heading 2" readonly="false" size="14" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle288"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Heading 1" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle287"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle286"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle285"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle284"/><Font background="[0,0,0]" italic="true" name="_cstyle283"/><Font background="[0,0,0]" italic="true" name="_cstyle282"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" underline="false"/><Font background="[0,0,0]" bold="true" name="_cstyle281"/><Font background="[0,0,0]" italic="true" name="_cstyle280"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Text" opaque="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle314"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle313"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle312"/><Font background="[0,0,0]" italic="true" name="_cstyle311"/><Font background="[0,0,0]" italic="true" name="_cstyle310"/><Font background="[0,0,0]" italic="true" name="_cstyle279"/><Font background="[0,0,0]" italic="true" name="_cstyle278"/><Font background="[0,0,0]" italic="true" name="_cstyle277"/><Font background="[0,0,0]" italic="true" name="_cstyle276"/><Font background="[0,0,0]" italic="true" name="_cstyle275"/><Font background="[0,0,0]" italic="true" name="_cstyle274"/><Font background="[0,0,0]" italic="true" name="_cstyle273"/><Font background="[0,0,0]" italic="true" name="_cstyle272"/><Font background="[0,0,0]" italic="true" name="_cstyle271"/><Font background="[0,0,0]" italic="true" name="_cstyle270"/><Font background="[0,0,0]" executable="false" family="Times New Roman" foreground="[0,0,0]" name="2D Math" opaque="false" size="12"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Author" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle309"/><Font background="[0,0,0]" italic="true" name="_cstyle308"/><Font background="[0,0,0]" italic="true" name="_cstyle307"/><Font background="[0,0,0]" bold="true" name="_cstyle306"/><Font background="[0,0,0]" bold="true" name="_cstyle305"/><Font background="[0,0,0]" bold="true" name="_cstyle304"/><Font background="[0,0,0]" bold="true" name="_cstyle303"/><Font background="[0,0,0]" bold="true" name="_cstyle302"/><Font background="[0,0,0]" bold="true" name="_cstyle301"/><Font background="[0,0,0]" bold="true" name="_cstyle300"/><Font background="[0,0,0]" bold="true" name="_cstyle269"/><Font background="[0,0,0]" bold="true" name="_cstyle268"/><Font background="[0,0,0]" italic="true" name="_cstyle267"/><Font background="[0,0,0]" bold="true" name="_cstyle266"/><Font background="[0,0,0]" bold="true" name="_cstyle265"/><Font background="[0,0,0]" bold="true" name="_cstyle264"/><Font background="[0,0,0]" italic="true" name="_cstyle263"/><Font background="[0,0,0]" bold="true" name="_cstyle262"/><Font background="[0,0,0]" bold="true" name="_cstyle261"/><Font background="[0,0,0]" family="Times New Roman" foreground="[0,0,255]" name="2D Output" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle260"/><Font background="[0,0,0]" bold="true" name="_cstyle259"/><Font background="[0,0,0]" italic="true" name="_cstyle258"/><Font background="[0,0,0]" italic="true" name="_cstyle257"/><Font background="[0,0,0]" bold="true" name="_cstyle299"/><Font background="[0,0,0]" italic="true" name="_cstyle256"/><Font background="[0,0,0]" family="Times New Roman" name="2D Comment" underline="false"/><Font background="[0,0,0]" bold="true" name="_cstyle298"/><Font background="[0,0,0]" bold="true" name="_cstyle297"/><Font background="[0,0,0]" bold="true" name="_cstyle296"/><Font background="[0,0,0]" bold="true" name="_cstyle295"/><Font background="[0,0,0]" italic="true" name="_cstyle294"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Title" readonly="false" size="18" underline="true"/><Font background="[0,0,0]" italic="true" name="_cstyle293"/><Font background="[0,0,0]" italic="true" name="_cstyle292"/><Font background="[0,0,0]" italic="true" name="_cstyle291"/><Font background="[0,0,0]" italic="true" name="_cstyle290"/></Styles><Page-Numbers enabled="false" first-number="1" first-numbered-page="1" horizontal-location="right" style="Page Number" vertical-location="bottom"/><Group><Input><Text-field layout="Title" style="Title">Groebner Bases for Polynomial Systems: An Introduction</Text-field><Text-field layout="Author" style="Author">K.O. Geddes
Symbolic Computation Group
School of Computer Science
University of Waterloo
Waterloo  ON  N2L 3G1
CANADA</Text-field></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">Abstract</Text-field></Title><Text-field layout="Normal" style="Normal">The concept of Groebner bases is introduced using some motivating examples. Two types of applications are considered: (1) canonical forms for polynomials with side relations; and (2) solutions of systems of polynomial equations.</Text-field><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Canonical Forms for Polynomials with Side Relations</Text-field></Title><Section><Title><Text-field layout="Heading 2" style="Heading 2">Univariate Side Relations</Text-field></Title><Text-field layout="Normal" style="Normal">Suppose that we wish to simplify an expression which contains various powers of the symbol  <Equation input-equation="i;" style="2D Comment">NiMlImlH</Equation> , under the assumption that  <Equation input-equation="i;" style="2D Comment">NiMlImlH</Equation>  represents the complex number <Equation input-equation="sqrt(-1);" style="2D Comment">NiMtJSVzcXJ0RzYjLCQiIiIhIiI=</Equation> .  For example,</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">restart;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e := 4*i^5 - 7*i^4 + i^3 + 3*i^2 - 5*i + 11;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJlRzYiLC4qJEkiaUdGJSIiJiIiJSokRihGKiEiKCokRigiIiQiIiIqJEYoIiIjRi5GKCEiJiIjNkYv</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">As a naive approach, we could think of applying transformation rules such as:</Text-field><Text-field layout="Normal" style="Normal">    i^2  --&gt;  -1</Text-field><Text-field layout="Normal" style="Normal">    i^3  --&gt;  -i</Text-field><Text-field layout="Normal" style="Normal">    i^4  --&gt;   1</Text-field><Text-field layout="Normal" style="Normal">    i^5  --&gt;   i</Text-field><Text-field layout="Normal" style="Normal">       etc.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">For the above example, the expression simplifies as follows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">eval(e, {i^2=-1, i^3=-i, i^4=1, i^5=i});</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJkkiaUc2IiEiIyIiIkYn</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">An algorithmic approach to the problem is as follows. We wish to simplify the expression  <Equation input-equation="e;" style="2D Comment">NiMlImVH</Equation>  with respect to the following <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle256" underline="false">side relation</Font> which the variable  <Equation input-equation="i;" style="2D Comment">NiMlImlH</Equation>  must satisfy:  <Equation input-equation="i^2+1 = 0;" style="2D Comment">NiMvLCYqJCUiaUciIiMiIiJGKEYoIiIh</Equation> .  The given expression lies in a polynomial domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="i;" style="2D Comment">NiMlImlH</Equation>]  over some coefficient domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>  but we really want to represent the expression in a canonical form as an element of the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle258" underline="false">quotient ring</Font>  D[<Equation input-equation="i" style="2D Math">NiNJImlHNiI=</Equation>] / &lt;<Equation input-equation="i^2+1" style="2D Math">NiMsJiokSSJpRzYiIiIjIiIiRihGKA==</Equation>&gt;  -- i.e. as a polynomial modulo the ideal generated by  <Equation input-equation="i^2+1;" style="2D Comment">NiMsJiokJSJpRyIiIyIiIkYnRic=</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle259" underline="false">Question:</Font>  Is it possible to specify a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle257" underline="false">canoncial form</Font> for elements of the quotient ring  D[<Equation input-equation="i" style="2D Math">NiNJImlHNiI=</Equation>] / &lt;<Equation input-equation="i^2+1" style="2D Math">NiMsJiokSSJpRzYiIiIjIiIiRihGKA==</Equation>&gt; ?</Text-field><Text-field layout="Normal" style="Normal">Yes it is possible.  Any element of the quotient ring can be represented uniquely in terms of the basis <Equation input-equation="{1, i};" style="2D Comment">NiM8JCIiIiUiaUc=</Equation> -- i.e. as a polynomial of degree 1 in the variable <Equation input-equation="i;" style="2D Comment">NiMlImlH</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 3" style="Heading 3">Algorithm to Transform an Expression into Canonical Form</Text-field></Title><Text-field layout="Normal" style="Normal">For the quotient ring discussed above, transformation to canonical form can be obtained by applying Euclidean division with remainder:</Text-field><Text-field layout="Normal" style="Normal">    <Equation input-equation="e;" style="2D Comment">NiMlImVH</Equation>  --&gt;  <Equation input-equation="rem(e,i^2+1,i);" style="2D Comment">NiMtJSRyZW1HNiUlImVHLCYqJCUiaUciIiMiIiJGK0YrRik=</Equation> .</Text-field><Text-field layout="Normal" style="Normal"><Font bold="true">Reason:</Font> Euclidean division yields a quotient <Equation input-equation="q" style="2D Math">NiNJInFHNiI=</Equation> and remainder <Equation input-equation="r" style="2D Math">NiNJInJHNiI=</Equation> such that  <Equation input-equation="e = q*(i^2+1) + r" style="2D Math">NiMvSSJlRzYiLCYqJkkicUdGJSIiIiwmKiRJImlHRiUiIiNGKUYpRilGKUYpSSJyR0YlRik=</Equation>  and any multiple of  <Equation input-equation="i^2+1" style="2D Math">NiMsJiokSSJpRzYiIiIjIiIiRihGKA==</Equation>  is equivalent to zero.</Text-field><Text-field layout="Normal" style="Text">In other words, we can<Font bold="true"> <Font italic="true">reduce</Font></Font> the expression <Equation input-equation="e" style="2D Math">NiNJImVHNiI=</Equation> by subtracting any element of the ideal &lt;<Equation input-equation="i^2+1" style="2D Math">NiMsJiokSSJpRzYiIiIjIiIiRihGKA==</Equation>&gt; (i.e. by subtracting any multiple of <Equation input-equation="i^2+1" style="2D Math">NiMsJiokSSJpRzYiIiIjIiIiRihGKA==</Equation>).</Text-field><Text-field layout="Normal" style="Text"/></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Example 1</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsLiokSSJpRzYiIiImIiIlKiRGJUYoISIoKiRGJSIiJCIiIiokRiUiIiNGLEYlISImIiM2Ri0=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">rem(e, i^2+1, i);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJkkiaUc2IiEiIyIiIkYn</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Of course, Maple will automatically simplify expressions involving  <Equation input-equation="sqrt(-1);" style="2D Comment">NiMtJSVzcXJ0RzYjLCQiIiIhIiI=</Equation>  which has the alias  <Equation input-equation="I;" style="2D Comment">NiMlIklH</Equation>  in Maple.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">eval(e, i=I);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiNeJCIiIiEiIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Example 2</Text-field></Title><Text-field layout="Normal" style="Normal">The above discussion applies to any univariate side relation.</Text-field><Text-field layout="Normal" style="Normal">As a second example, consider an expression in the symbol  <Equation input-equation="r;" style="2D Comment">NiMlInJH</Equation>  which represents <Equation input-equation="sqrt(2);" style="2D Comment">NiMtJSVzcXJ0RzYjIiIj</Equation> .</Text-field><Text-field layout="Normal" style="Normal">In this case, the side relation satisfied by the symbol  <Equation input-equation="r;" style="2D Comment">NiMlInJH</Equation>  is:   <Equation input-equation="r^2-2 = 0;" style="2D Comment">NiMvLCYqJCUickciIiMiIiJGJyEiIiIiIQ==</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f := r^6 - 5/7*r^5 + 23*r^4 + 1/2*r^3 - 35/11*r^2 + r - 1/2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJmRzYiLDAqJEkickdGJSIiJyIiIiokRigiIiYjISImIiIoKiRGKCIiJSIjQiokRigiIiQjRioiIiMqJEYoRjYjISNOIiM2RihGKiMhIiJGNkYq</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">rem(f, r^2-2, r);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiMiJVw/IiNBIiIiSSJyRzYiIyEiJyIiKA==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Again, Maple will automatically simplify expressions involving  <Equation input-equation="sqrt(2);" style="2D Comment">NiMtJSVzcXJ0RzYjIiIj</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">eval(f, r=sqrt(2));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiMiJVw/IiNBIiIiKiQiIiMjRidGKSMhIiciIig=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Multivariate Side Relations</Text-field></Title><Text-field layout="Normal" style="Normal">Suppose, for example, that we have a trigonometric expression involving <Equation input-equation="sin(x);" style="2D Comment">NiMtJSRzaW5HNiMlInhH</Equation> and <Equation input-equation="cos(x);" style="2D Comment">NiMtJSRjb3NHNiMlInhH</Equation> and we wish to simplify the expression with respect to the following side relation:  <Equation input-equation="sin(x)^2+cos(x)^2 = 1;" style="2D Comment">NiMvLCYqJC0lJHNpbkc2IyUieEciIiMiIiIqJC0lJGNvc0dGKEYqRitGKw==</Equation> .</Text-field><Text-field layout="Normal" style="Normal">We can choose to think of this as a polynomial side relation  <Equation input-equation="s^2+c^2 = 1;" style="2D Comment">NiMvLCYqJCUic0ciIiMiIiIqJCUiY0dGJ0YoRig=</Equation>  and to represent <Equation input-equation="sin(x);" style="2D Comment">NiMtJSRzaW5HNiMlInhH</Equation> and <Equation input-equation="cos(x);" style="2D Comment">NiMtJSRjb3NHNiMlInhH</Equation> in the expression by the symbols <Equation input-equation="s;" style="2D Comment">NiMlInNH</Equation> and <Equation input-equation="c;" style="2D Comment">NiMlImNH</Equation>, respectively. We are then faced with the problem of simplifying a multivariate polynomial with respect to a multivariate side relation.  Expressing this in the notation of algebra, the original expression lies in a polynomial domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="s, c" style="2D Comment">NiM2JEkic0c2IkkiY0dGJQ==</Equation>]  and we wish to express it (in a canonical form, if possible) as an element of the quotient ring  D[<Equation input-equation="s, c" style="2D Math">NiM2JEkic0c2IkkiY0dGJQ==</Equation>] / &lt;<Equation input-equation="s^2+c^2-1" style="2D Math">NiMsKCokSSJzRzYiIiIjIiIiKiRJImNHRiZGJ0YoRighIiI=</Equation>&gt; .</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle261" underline="false">Question:</Font>  Is it possible to specify a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle260" underline="false">canoncial form</Font> for elements of the quotient ring  <Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="2D Comment">D[</Font><Equation input-equation="s, c" style="2D Math">NiM2JEkic0c2IkkiY0dGJQ==</Equation>] / &lt;<Equation input-equation="s^2+c^2-1" style="2D Math">NiMsKCokSSJzRzYiIiIjIiIiKiRJImNHRiZGJ0YoRighIiI=</Equation>&gt; ?</Text-field><Text-field layout="Normal" style="Normal">The answer is not obvious.</Text-field><Text-field layout="Normal" style="Normal">For example, the following expressions are mathematically equivalent:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e1 := sin(x)^2 * cos(x)^2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNlMUc2IiomLUkkc2luRzYkSSpwcm90ZWN0ZWRHRipJKF9zeXNsaWJHRiU2I0kieEdGJSIiIy1JJGNvc0dGKUYsRi4=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e2 := expand( subs(cos(x)^2 = 1-sin(x)^2, e1) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNlMkc2IiwmKiQtSSRzaW5HNiRJKnByb3RlY3RlZEdGK0koX3N5c2xpYkdGJTYjSSJ4R0YlIiIjIiIiKiRGKCIiJSEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e3 := expand( subs(sin(x)^2 = 1-cos(x)^2, e1) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNlM0c2IiwmKiQtSSRjb3NHNiRJKnByb3RlY3RlZEdGK0koX3N5c2xpYkdGJTYjSSJ4R0YlIiIjIiIiKiRGKCIiJSEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Which form is "best"?  "simplest"?  It depends on your point of view.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The more general <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle262" underline="false">Question</Font> is:  Given a multivariate polynomial domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="x[1],`...`,x[v];" style="2D Comment">NiUmJSJ4RzYjIiIiJSQuLi5HJkYkNiMlInZH</Equation>]  and one or more side relations  <Equation input-equation="r[j](x[1],`...`,x[v]) = 0;" style="2D Comment">NiMvLSYlInJHNiMlImpHNiUmJSJ4RzYjIiIiJSQuLi5HJkYrNiMlInZHIiIh</Equation>  (<Equation input-equation="j = 1,2,`...`;" style="2D Comment">NiUvJSJqRyIiIiIiIyUkLi4uRw==</Equation> ), is it possible to specify a canonical form for elements of the quotient ring  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="x[1],`...`,x[v];" style="2D Comment">NiUmJSJ4RzYjIiIiJSQuLi5HJkYkNiMlInZH</Equation>] / <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  where  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  is the ideal generated by the polynomials  <Equation input-equation="r[j](x[1],`...`,x[v]);" style="2D Comment">NiMtJiUickc2IyUiakc2JSYlInhHNiMiIiIlJC4uLkcmRio2IyUidkc=</Equation> ?</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Until the 1960s it was not known whether this question could be answered in the affirmative. It turns out that the answer is <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle263" underline="false">Yes</Font>, via the theory of Groebner bases.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 3" style="Heading 3">Maple syntax for simplification w.r.t. side relations</Text-field></Title><Text-field firstindent="0.0" layout="Line Printed Output" leftmargin="0.0" linespacing="0.5" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0" style="Line Printed Output"><Font style="Normal">Before proceeding further, consider a Maple example.  For the simplification of expressions modulo side relations in Maple, see the help page  </Font><Font bold="true" executable="false" italic="true" style="Text">?simplify[siderels]</Font><Font bold="true" style="Normal"> </Font><Font style="Normal">.  The syntax of the command is  </Font><Equation input-equation="simplify(expr,siderels);" style="2D Comment">NiMtJSlzaW1wbGlmeUc2JCUlZXhwckclKXNpZGVyZWxzRw==</Equation><Font style="Normal">  where  </Font><Equation input-equation="siderels;" style="2D Comment">NiMlKXNpZGVyZWxzRw==</Equation><Font style="Normal">  is a set of one or more side relations. When the simplify command is invoked in this form, Maple applies the theory of Groebner bases.  Specifically, a Groebner basis for  </Font><Equation input-equation="siderels;" style="2D Comment">NiMlKXNpZGVyZWxzRw==</Equation><Font style="Normal">  is computed and then  </Font><Equation input-equation="expr;" style="2D Comment">NiMlJWV4cHJH</Equation><Font style="Normal">  is reduced modulo this Groebner basis by transformations to be described in a subsequent section.</Font></Text-field><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Note: This yields a canonical form.  But which canonical form?  It depends on the choice of ordering for the variables.  The user can control the ordering by using the 3-argument syntax  <Equation input-equation="simplify(expr,siderels,vars);" style="2D Comment">NiMtJSlzaW1wbGlmeUc2JSUlZXhwckclKXNpZGVyZWxzRyUldmFyc0c=</Equation>  where  <Equation input-equation="vars;" style="2D Comment">NiMlJXZhcnNH</Equation>  is a list of variables in the desired order.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section><Title><Text-field layout="Heading 3" style="Heading 3">Example 3</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">siderels := {sin(x)^2 + cos(x)^2 = 1};</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSlzaWRlcmVsc0c2IjwjLywmKiQtSSRzaW5HNiRJKnByb3RlY3RlZEdGLUkoX3N5c2xpYkdGJTYjSSJ4R0YlIiIjIiIiKiQtSSRjb3NHRixGL0YxRjJGMg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">e := sin(x)^3 - 11*sin(x)^2*cos(x) + 3*cos(x)^3 - sin(x)*cos(x) + 2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJlRzYiLCwqJC1JJHNpbkc2JEkqcHJvdGVjdGVkR0YrSShfc3lzbGliR0YlNiNJInhHRiUiIiQiIiIqJkYoIiIjLUkkY29zR0YqRi1GMCEjNiokRjNGL0YvKiZGKEYwRjNGMCEiIkYyRjA=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The following command indicates that we wish to "favour" transforming cos(x) into sin(x) as much as possible.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(e, siderels, [cos(x),sin(x)]);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsLCokLUkkc2luRzYkSSpwcm90ZWN0ZWRHRihJKF9zeXNsaWJHNiI2I0kieEdGKiIiJCIiIiomRiUiIiMtSSRjb3NHRidGK0YuISM5KiZGJUYuRjFGLiEiIkYwRi5GMUYt</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The following command indicates that we wish to "favour" transforming sin(x) into cos(x) as much as possible.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(e, siderels, [sin(x),cos(x)]);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsLiokLUkkY29zRzYkSSpwcm90ZWN0ZWRHRihJKF9zeXNsaWJHNiI2I0kieEdGKiIiJCIjOSomLUkkc2luR0YnRisiIiJGJUYyISIiIiIjRjIqJkYlRjRGMEYyRjNGMEYyRiUhIzY=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Try simplifying the following expression <Equation input-equation="f;" style="2D Comment">NiMlImZH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f := sin(x)^2 * cos(x)^2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJmRzYiKiYtSSRzaW5HNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYjSSJ4R0YlIiIjLUkkY29zR0YpRixGLg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(f, siderels, [cos(x),sin(x)]);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiokLUkkc2luRzYkSSpwcm90ZWN0ZWRHRihJKF9zeXNsaWJHNiI2I0kieEdGKiIiIyIiIiokRiUiIiUhIiI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(f, siderels, [sin(x),cos(x)]);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiokLUkkY29zRzYkSSpwcm90ZWN0ZWRHRihJKF9zeXNsaWJHNiI2I0kieEdGKiIiIyIiIiokRiUiIiUhIiI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The expression  <Equation input-equation="g;" style="2D Comment">NiMlImdH</Equation>  is equivalent to zero, and therefore its canonical form must be 0 (regardless of ordering).</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">g := f - sin(x)^2 + sin(x)^4;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJnRzYiLCgqJi1JJHNpbkc2JEkqcHJvdGVjdGVkR0YrSShfc3lzbGliR0YlNiNJInhHRiUiIiMtSSRjb3NHRipGLUYvIiIiKiRGKEYvISIiKiRGKCIiJUYy</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(g, siderels);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIiE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Groebner Basis Preliminaries</Text-field></Title><Text-field layout="Normal" style="Normal">Consider the polynomial domain  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle295" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>]  in three variables over the field <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle296" underline="false">Q</Font> of rational numbers.  Suppose that the following three side relations are specified.</Text-field><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">siderels := {x^3*y*z = x*z^2, x*y^2*z = x*y*z, x^2*y^2 = z^2};</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSlzaWRlcmVsc0c2IjwlLyooSSJ4R0YlIiIkSSJ5R0YlIiIiSSJ6R0YlRiwqJkYpRixGLSIiIy8qKEYpRixGK0YvRi1GLCooRilGLEYrRixGLUYsLyomRilGL0YrRi8qJEYtRi8=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Consider the following polynomial expression.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := x*z^4 - x*y*z^3;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJwRzYiLCYqJkkieEdGJSIiIkkiekdGJSIiJUYpKihGKEYpSSJ5R0YlRilGKiIiJCEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle264" underline="false">Problem:</Font>  Express  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in a canonical form with respect to  <Equation input-equation="siderels;" style="2D Comment">NiMlKXNpZGVyZWxzRw==</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">This can be accomplished in Maple as follows.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">simplify(p, siderels);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIiE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Offhand, you would not be able to recognize that  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is equivalent to zero.  How would you proceed to try to "reduce"  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  with respect to the given side relations?</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The mathematical framework is as follows.  In the original polynomial domain  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle297" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>]  we can specify a "vector space" basis for this domain.  There are various orderings of the monomials which can be chosen.  For the moment, let us choose a basis corresponding to the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle291" underline="false">total degree ordering</Font> with monomials of the same total degree ordered by a particular lexicographical ordering (called <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle278" underline="false">inverse lexicographical order</Font>), as follows.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Text"><Font executable="false">Generate the list of all terms in the variables </Font><Equation input-equation="x,y,z" style="2D Math">NiM2JUkieEc2IkkieUdGJUkiekdGJQ==</Equation><Font executable="false"> of total degree less than or equal to </Font><Equation input-equation="3" style="2D Math">NiMiIiQ=</Equation><Font executable="false">.</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font opaque="false">L:=[ op(eval(convert(map(expand,series(1/((1-x*u)*(1-y*u)*(1-z*u)),u,4)),polynom), u=1)) ];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJMRzYiNzYiIiJJInhHRiVJInlHRiVJInpHRiUqJEYoIiIjKiZGKUYnRihGJyokRilGLComRihGJ0YqRicqJkYpRidGKkYnKiRGKkYsKiRGKCIiJComRihGLEYpRicqJkYoRidGKUYsKiRGKUYzKiZGKkYnRihGLCooRihGJ0YpRidGKkYnKiZGKUYsRipGJyomRihGJ0YqRiwqJkYpRidGKkYsKiRGKkYz</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Text"><Font executable="false">Sort this list of terms in the <Font bold="true" italic="true">tdeg</Font> ordering.</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">with(Groebner):</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" opaque="false" size="12" underline="false">TermOrder := tdeg(x,y,z);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSpUZXJtT3JkZXJHNiItSSV0ZGVnR0YlNiVJInhHRiVJInlHRiVJInpHRiU=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font opaque="false">tdegBasis := sort(L, (t1,t2)-&gt;testorder(t1,t2,TermOrder));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSp0ZGVnQmFzaXNHNiI3NiIiIkkiekdGJUkieUdGJUkieEdGJSokRigiIiMqJkYpRidGKEYnKiZGKkYnRihGJyokRilGLComRilGJ0YqRicqJEYqRiwqJEYoIiIkKiZGKUYnRihGLComRipGJ0YoRiwqJkYpRixGKEYnKihGKkYnRilGJ0YoRicqJkYoRidGKkYsKiRGKUYzKiZGKkYnRilGLComRipGLEYpRicqJEYqRjM=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">Given the polynomial expression  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in the domain  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle298" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] , we are required to simplify  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  with respect to <Equation input-equation="siderels;" style="2D Comment">NiMlKXNpZGVyZWxzRw==</Equation> ;  in other words, we want to express  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in a canonical form as an element of the quotient ring  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle299" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] / <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  where <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  is the ideal generated by the side relations.  For  <Equation input-equation="siderels;" style="2D Comment">NiMlKXNpZGVyZWxzRw==</Equation>  as specified above, the corresponding ideal is</Text-field><Text-field layout="Normal" style="Normal">    <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  =  &lt; <Equation input-equation="x^3*y*z-x*z^2,x*y^2*z-x*y*z,x^2*y^2-z^2;" style="2D Comment">NiUsJiooJSJ4RyIiJCUieUciIiIlInpHRihGKComRiVGKCokRikiIiNGKCEiIiwmKihGJUYoKiRGJ0YsRihGKUYoRigqKEYlRihGJ0YoRilGKEYtLCYqJkYlRixGJ0YsRihGK0Yt</Equation> &gt;  .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle265" underline="false">Objective:</Font>  Define a basis for the quotient ring  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle300" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] / <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  and specify an algorithm to express any particular polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in terms of that basis.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The basis  <Equation input-equation="tdegBasis;" style="2D Comment">NiMlKnRkZWdCYXNpc0c=</Equation>  specified above for the domain  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle301" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>]  clearly is not a basis for the quotient ring.  The monomials are not all independent in the quotient ring;  for example,  <Equation input-equation="x^2*y^2 = z^2;" style="2D Comment">NiMvKiYlInhHIiIjJSJ5R0YmKiQlInpHRiY=</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle266" underline="false">Question:</Font>  Which monomials should be deleted from  <Equation input-equation="tdegBasis;" style="2D Comment">NiMlKnRkZWdCYXNpc0c=</Equation>  in order to obtain a basis for the quotient ring?</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">To answer this question, we proceed as follows.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle268" underline="false">Step 1:</Font>  Compute a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle267" underline="false">Groebner basis</Font> for the ideal  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation> .</Text-field><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle269" underline="false">Step 2:</Font>  Examine each monomial  <Equation input-equation="1, z, y, x, z^2, z*y" style="2D Math">NiM2KCIiIkkiekc2IkkieUdGJkkieEdGJiokRiUiIiMqJkYlRiRGJ0Yk</Equation>, ...  with respect to the Groebner basis for  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  to determine whether, as an element of  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle302" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] / <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation> ,  it can be reduced to a lower-order monomial (with respect to the specified ordering of monomials).  (E.g.  <Equation input-equation="x^2*y^2;" style="2D Comment">NiMqJiUieEciIiMlInlHRiU=</Equation>  reduces to  <Equation input-equation="z^2;" style="2D Comment">NiMqJCUiekciIiM=</Equation> .)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note:  The above concept is vague at this moment, but we will make it more precise.  Also, it should be noted that what we will do, in practice, is to apply the reductions indicated in Step 2 on each particular term in the polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  that we wish to simplify.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Some Remarks about Groebner Bases</Text-field></Title><Text-field layout="Normal" style="Normal">The terminology "basis" used in the context of a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle270" underline="false">Groebner basis</Font> is not the concept of a "vector space" or "polynomial" basis.  Specifically, the elements in the basis will not be linearly independent in the sense of a vector space basis.  Rather, it is the concept of an "ideal basis" which is a concept of a "set of generators for the ideal".  Indeed, for the ideal  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  =  &lt; <Equation input-equation="x^3*y*z-x*z^2,x*y^2*z-x*y*z,x^2*y^2-z^2;" style="2D Comment">NiUsJiooJSJ4RyIiJCUieUciIiIlInpHRihGKComRiVGKCokRikiIiNGKCEiIiwmKihGJUYoKiRGJ0YsRihGKUYoRigqKEYlRihGJ0YoRilGKEYtLCYqJkYlRixGJ0YsRihGK0Yt</Equation> &gt;  the corresponding Groebner basis will have more elements (i.e. more generators) than the three specified in the original definition of  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation> .  Using Maple, we can determine a Groebner basis  <Equation input-equation="Gb;" style="2D Comment">NiMlI0diRw==</Equation>  for the ideal  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  as seen in the following Example.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">(Note that the ideal is represented by specifying the generators in a Maple <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle271" underline="false">list</Font>.  The "angle bracket" notation used above is a common mathematical notation for ideals, but angle brackets in Maple are used for a different purpose.)</Text-field><Text-field layout="Normal" style="Normal"/><Section><Title><Text-field layout="Heading 3" style="Heading 3">Example 4</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Id := [x^3*y*z - x*z^2, x*y^2*z - x*y*z, x^2*y^2 - z^2];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNJZEc2IjclLCYqKEkieEdGJSIiJEkieUdGJSIiIkkiekdGJUYsRiwqJkYpRixGLSIiIyEiIiwmKihGKUYsRitGL0YtRixGLCooRilGLEYrRixGLUYsRjAsJiomRilGL0YrRi9GLCokRi1GL0Yw</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">nops(Id);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIiQ=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Gb := gbasis(Id, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNHYkc2IjcqLCYqJEkiekdGJSIiJCEiIiomSSJ5R0YlIiIiRilGKkYuLCYqJkkieEdGJUYuRikiIiNGKyomRjFGLkYpRipGLiwmKihGLUYuRjFGLkYpRjJGLkYwRissJiokRikiIiVGKyomRjFGMkYpRjJGLiwmKihGMUYuRi1GMkYpRi5GLiooRjFGLkYtRi5GKUYuRissJiooRjFGMkYtRi5GKUYuRi5GKEYrLCYqJkYxRjJGLUYyRi4qJEYpRjJGKywmKiRGKSIiJkYuRjdGKw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">nops(Gb);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note that the original specification of the ideal  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  has 3 generators whereas the Groebner basis  <Equation input-equation="Gb;" style="2D Comment">NiMlI0diRw==</Equation>  has 8 generators.</Text-field><Text-field layout="Normal" style="Normal">However, the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle273" underline="false">same ideal</Font> is being specified with different sets of generators:  <Equation input-equation="Ideal(Id) = Ideal(Gb);" style="2D Comment">NiMvLSUmSWRlYWxHNiMlI0lkRy1GJTYjJSNHYkc=</Equation> .</Text-field><Text-field layout="Normal" style="Normal">(See the definition of a Groebner basis in the next section.)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">For the polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  specified above, our task now is to reduce  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  with respect to the Groebner basis  <Equation input-equation="Gb;" style="2D Comment">NiMlI0diRw==</Equation> .  The function  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle274" underline="false">normalf</Font>  in the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle275" underline="false">Groebner</Font> package performs "reduction to normal form" of a given polynomial with respect to a particular specification of an ideal.  (See the next section for details of the reduction process.)</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomSSJ4RzYiIiIiSSJ6R0YmIiIlRicqKEYlRidJInlHRiZGJ0YoIiIkISIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(p, Gb, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIiE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">If the original list of generators  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  was used to specify the ideal then the reduction process applied by the  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle276" underline="false">normalf</Font>  function would fail to recognize that  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  reduces to zero modulo the ideal.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(p, Id, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomSSJ4RzYiIiIiSSJ6R0YmIiIlRicqKEYlRidJInlHRiZGJ0YoIiIkISIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Definition of a Groebner Basis</Text-field></Title><Section><Title><Text-field layout="Heading 2" style="Heading 2">Definition 1</Text-field></Title><Text-field layout="Normal" style="Normal">The <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle272" underline="false">S-polynomial</Font> of two polynomials  <Equation input-equation="a,b;" style="2D Comment">NiQlImFHJSJiRw==</Equation>  is defined by</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">                    <Equation input-equation="S(a,b) = (h(b)*a-h(a)*b)/GCD(h(a),h(b))" style="2D Comment">NiMvLSUiU0c2JCUiYUclImJHKiYsJiomLSUiaEc2I0YoIiIiRidGL0YvKiYtRi02I0YnRi9GKEYvISIiRi8tJSRHQ0RHNiRGMUYsRjM=</Equation></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where  <Equation input-equation="h(p);" style="2D Comment">NiMtJSJoRzYjJSJwRw==</Equation>  denotes the "head term" of a polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation> , meaning the leading monomial (with respect to a specified term ordering).</Text-field><Text-field layout="Normal" style="Normal"/></Section><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">An important property of  <Equation input-equation="S(a,b);" style="2D Comment">NiMtJSJTRzYkJSJhRyUiYkc=</Equation>  is that the head term of  <Equation input-equation="a;" style="2D Comment">NiMlImFH</Equation>  will be eliminated in the case where  <Equation input-equation="h(b);" style="2D Comment">NiMtJSJoRzYjJSJiRw==</Equation> | <Equation input-equation="h(a);" style="2D Comment">NiMtJSJoRzYjJSJhRw==</Equation> , in which case we have</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">                    <Equation input-equation="S(a,b) = a-h(a)*b/h(b);" style="2D Comment">NiMvLSUiU0c2JCUiYUclImJHLCZGJyIiIiooLSUiaEc2I0YnRipGKEYqLUYtNiNGKCEiIkYx</Equation>  .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 5</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomSSJ4RzYiIiIiSSJ6R0YmIiIlRicqKEYlRidJInlHRiZGJ0YoIiIkISIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Let's choose one particular element from the Groebner basis  <Equation input-equation="Gb;" style="2D Comment">NiMlI0diRw==</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G1 := x*y*z^2 - x*z^2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNHMUc2IiwmKihJInlHRiUiIiJJInhHRiVGKUkiekdGJSIiI0YpKiZGKkYpRitGLCEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">With  <Equation input-equation="h(p) = -x*y*z^3;" style="2D Comment">NiMvLSUiaEc2IyUicEcsJCooJSJ4RyIiIiUieUdGKyUiekciIiQhIiI=</Equation>  and  <Equation input-equation="h(G1) = x*y*z^2;" style="2D Comment">NiMvLSUiaEc2IyUjRzFHKiglInhHIiIiJSJ5R0YqJSJ6RyIiIw==</Equation>  we see that  <Equation input-equation="h(G1);" style="2D Comment">NiMtJSJoRzYjJSNHMUc=</Equation> | <Equation input-equation="h(p);" style="2D Comment">NiMtJSJoRzYjJSJwRw==</Equation> .  Hence the <Equation input-equation="S;" style="2D Comment">NiMlIlNH</Equation>-polynomial  <Equation input-equation="S(p,G1);" style="2D Comment">NiMtJSJTRzYkJSJwRyUjRzFH</Equation>  is as follows.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">headp := -x*y*z^3;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZoZWFkcEc2IiwkKihJInhHRiUiIiJJInlHRiVGKUkiekdGJSIiJCEiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">headG1 := x*y*z^2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSdoZWFkRzFHNiIqKEkieUdGJSIiIkkieEdGJUYoSSJ6R0YlIiIj</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">S := (headG1*p - headp*G1) / gcd(headp,headG1):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">S := normal(S,expanded);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJTRzYiLCYqJkkieEdGJSIiIkkiekdGJSIiJCEiIiomRihGKUYqIiIlRik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">or equivalently,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">S := p - (headp/headG1)*G1;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJTRzYiLCgqJkkieEdGJSIiIkkiekdGJSIiJUYpKihGKEYpSSJ5R0YlRilGKiIiJCEiIiomRipGKSwmKihGLUYpRihGKUYqIiIjRikqJkYoRilGKkYzRi9GKUYp</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">S := expand(S);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJTRzYiLCYqJkkieEdGJSIiIkkiekdGJSIiJCEiIiomRihGKUYqIiIlRik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The point to be noted in the above example is that the computation of the <Equation input-equation="S;" style="2D Comment">NiMlIlNH</Equation>-polynomial  <Equation input-equation="S(p,G1);" style="2D Comment">NiMtJSJTRzYkJSJwRyUjRzFH</Equation>  results in a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle277" underline="false">reduction</Font> of  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in the following sense.  The computed polynomial  <Equation input-equation="S;" style="2D Comment">NiMlIlNH</Equation>  is equivalent to the polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in the quotient ring  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle303" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] / <Equation input-equation="Ideal(Gb);" style="2D Comment">NiMtJSZJZGVhbEc2IyUjR2JH</Equation>  (equivalently,  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle304" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] / <Equation input-equation="Ideal(Id);" style="2D Comment">NiMtJSZJZGVhbEc2IyUjSWRH</Equation> ) because all we did was to subtract from  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  a multiple of  <Equation input-equation="G1;" style="2D Comment">NiMlI0cxRw==</Equation> , which is an element of the ideal (i.e.  <Equation input-equation="G1 = 0;" style="2D Comment">NiMvJSNHMUciIiE=</Equation> ).  Moreover, the head term  <Equation input-equation="h(S) = x*z^4;" style="2D Comment">NiMvLSUiaEc2IyUiU0cqJiUieEciIiIqJCUiekciIiVGKg==</Equation>  is smaller (in the specified term ordering) than the original head term  <Equation input-equation="h(p) = -x*y*z^3;" style="2D Comment">NiMvLSUiaEc2IyUicEcsJCooJSJ4RyIiIiUieUdGKyUiekciIiQhIiI=</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">It is precisely this type of reduction of the terms in the polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  that we wish to perform, and we wish to be guaranteed that  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  will get reduced to a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle279" underline="false">canonical form</Font>.  The desired guarantee comes from the definition of a Groebner basis for the ideal.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Definition 2</Text-field></Title><Text-field layout="Normal" style="Normal">A polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle280" underline="false">F-reduced</Font> modulo the ideal basis  <Equation input-equation="F = {f[1], ` . . . `, f[k]};" style="2D Comment">NiMvJSJGRzwlJiUiZkc2IyIiIiUofi5+Ln4ufkcmRic2IyUia0c=</Equation>  if no head term  <Equation input-equation="h(f[i]);" style="2D Comment">NiMtJSJoRzYjJiUiZkc2IyUiaUc=</Equation>  divides  <Equation input-equation="h(p);" style="2D Comment">NiMtJSJoRzYjJSJwRw==</Equation> , for  <Equation input-equation="i = 1,2,` . . . `,k;" style="2D Comment">NiYvJSJpRyIiIiIiIyUofi5+Ln4ufkclImtH</Equation> .</Text-field></Section><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle281" underline="false">Method of F-reduction:</Font>  If  <Equation input-equation="h(f[i]);" style="2D Comment">NiMtJSJoRzYjJiUiZkc2IyUiaUc=</Equation> | <Equation input-equation="h(p);" style="2D Comment">NiMtJSJoRzYjJSJwRw==</Equation>  then replace  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  by the <Equation input-equation="S;" style="2D Comment">NiMlIlNH</Equation>-polynomial  <Equation input-equation="S(p,f[i]);" style="2D Comment">NiMtJSJTRzYkJSJwRyYlImZHNiMlImlH</Equation> .  I.e. perform the reduction  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  --&gt;  <Equation input-equation="S(p,f[i]);" style="2D Comment">NiMtJSJTRzYkJSJwRyYlImZHNiMlImlH</Equation>  .  Continue performing reductions until Definition 2 is satisfied.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">It is clear that if a polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation>-reduces to zero then  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is in  <Equation input-equation="Ideal(F);" style="2D Comment">NiMtJSZJZGVhbEc2IyUiRkc=</Equation> .  We would like the converse implication to hold.  That is, we would have an effective method to answer the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle282" underline="false">ideal membership</Font> question if, for an ideal basis <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation> , we would have the property:</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">                     <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is in  <Equation input-equation="Ideal(G);" style="2D Comment">NiMtJSZJZGVhbEc2IyUiR0c=</Equation>    if and only if    <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduces to zero.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">This property is precisely what a Groebner basis gives us.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Definition 3</Text-field></Title><Text-field layout="Normal" style="Normal">A set of polynomials  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  in a polynomial domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="x[1],` . . . `,x[v];" style="2D Comment">NiUmJSJ4RzYjIiIiJSh+Ln4ufi5+RyZGJDYjJSJ2Rw==</Equation>]  is a  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle283" underline="false">Groebner basis</Font>  (with respect to a fixed term ordering) if</Text-field><Text-field layout="Normal" style="Normal">          <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is in  <Equation input-equation="Ideal(G);" style="2D Comment">NiMtJSZJZGVhbEc2IyUiR0c=</Equation>   <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle284" underline="false">if and only if</Font>    <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduces to 0 .</Text-field></Section><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">An equivalent definition is provided by the following theorem, which tells us that for a Groebner basis <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  the process of  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduction produces a unique <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle287" underline="false">canonical form</Font>.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Theorem 1</Text-field></Title><Text-field layout="Normal" style="Normal">A set of polynomials  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  in a polynomial domain  <Equation input-equation="D;" style="2D Comment">NiMlIkRH</Equation>[<Equation input-equation="x[1],` . . . `,x[v];" style="2D Comment">NiUmJSJ4RzYjIiIiJSh+Ln4ufi5+RyZGJDYjJSJ2Rw==</Equation>]  is a Groebner basis if and only if the following property holds:</Text-field><Text-field layout="Normal" style="Normal">          <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduces to  <Equation input-equation="q;" style="2D Comment">NiMlInFH</Equation>   <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle285" underline="false">and</Font>   <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduces to  <Equation input-equation="r;" style="2D Comment">NiMlInJH</Equation>   <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle286" underline="false">implies</Font>   <Equation input-equation="q = r;" style="2D Comment">NiMvJSJxRyUickc=</Equation>  .</Text-field></Section><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">Concluding Remarks on Computing Groebner Bases</Text-field></Title><Text-field layout="Normal" style="Normal">For a detailed development of Buchberger's algorithm to compute a Groebner basis, see [1].  The general idea is that, given an ideal basis  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation> , we must compute another ideal basis  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  such that  <Equation input-equation="Ideal(G) = Ideal(Id);" style="2D Comment">NiMvLSUmSWRlYWxHNiMlIkdHLUYlNiMlI0lkRw==</Equation>  and  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  is a Groebner basis.  The algorithm consists of a sequence of operations based on computing <Equation input-equation="S;" style="2D Comment">NiMlIlNH</Equation>-polynomials and applying the process of  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation>-reduction.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The known algorithms for computing a Groebner basis have time complexity which is exponential in the number of variables.  Therefore, if there are too many variables the computation becomes "hopeless".  However, for many reasonably-sized problems, the method has proved to be very useful.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">As mentioned above, we can answer the general <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle288" underline="false">ideal membership</Font> question once we have computed a Groebner basis  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  for the ideal.  Specifically, to determine whether a given polynomial  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is a member of  <Equation input-equation="Ideal(G);" style="2D Comment">NiMtJSZJZGVhbEc2IyUiR0c=</Equation>  we simply apply <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reductions to determine whether  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>-reduces to zero.  In Maple, the  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle289" underline="false">normalf </Font> function can be used for this purpose.</Text-field><Text-field layout="Normal" style="Normal"/><Section><Title><Text-field layout="Heading 3" style="Heading 3">Example 6</Text-field></Title><Text-field layout="Normal" style="Normal">Consider the polynomial domain <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle305" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>] and the ideal  <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  specified above.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Id;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JSwmKihJInhHNiIiIiRJInlHRiciIiJJInpHRidGKkYqKiZGJkYqRisiIiMhIiIsJiooRiZGKkYpRi1GK0YqRioqKEYmRipGKUYqRitGKkYuLCYqJkYmRi1GKUYtRioqJEYrRi1GLg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The Groebner basis for <Equation input-equation="Id;" style="2D Comment">NiMlI0lkRw==</Equation>  was determined to be as follows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Gb;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3KiwmKiRJInpHNiIiIiQhIiIqJkkieUdGJyIiIkYmRihGLCwmKiZJInhHRidGLEYmIiIjRikqJkYvRixGJkYoRiwsJiooRitGLEYvRixGJkYwRixGLkYpLCYqJEYmIiIlRikqJkYvRjBGJkYwRiwsJiooRi9GLEYrRjBGJkYsRiwqKEYvRixGK0YsRiZGLEYpLCYqKEYvRjBGK0YsRiZGLEYsRiVGKSwmKiZGL0YwRitGMEYsKiRGJkYwRiksJiokRiYiIiZGLEY1Rik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Let  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  be the polynomial defined above.  Is  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  in  <Equation input-equation="Ideal(Id);" style="2D Comment">NiMtJSZJZGVhbEc2IyUjSWRH</Equation> ?</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsJiomSSJ4RzYiIiIiSSJ6R0YmIiIlRicqKEYlRidJInlHRiZGJ0YoIiIkISIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(p, Gb, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMiIiE=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Since  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  <Equation input-equation="Gb;" style="2D Comment">NiMlI0diRw==</Equation>-reduces to zero we conclude that  <Equation input-equation="p;" style="2D Comment">NiMlInBH</Equation>  is in  <Equation input-equation="Ideal(Id) = Ideal(Gb);" style="2D Comment">NiMvLSUmSWRlYWxHNiMlI0lkRy1GJTYjJSNHYkc=</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Create two different polynomials  <Equation input-equation="p1;" style="2D Comment">NiMlI3AxRw==</Equation>  and  <Equation input-equation="p2;" style="2D Comment">NiMlI3AyRw==</Equation>  which are known to be equivalent modulo  <Equation input-equation="Ideal(Id);" style="2D Comment">NiMtJSZJZGVhbEc2IyUjSWRH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := 3*x^5*y*z^2 - 1/2*x^4*y^3 + x*y*z;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJxRzYiLCgqKEkieEdGJSIiJkkieUdGJSIiIkkiekdGJSIiIyIiJComRigiIiVGKkYuIyEiIkYtKihGKEYrRipGK0YsRitGKw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p1 := expand(q + (x^2 + y^2 + z^2)*p);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNwMUc2Iiw0KihJInhHRiUiIiZJInlHRiUiIiJJInpHRiUiIiMiIiQqJkYoIiIlRipGLiMhIiJGLSooRihGK0YqRitGLEYrRisqJkYoRi5GLEYwRisqKEYoRi5GKkYrRixGLkYyKihGKkYtRihGK0YsRjBGKyooRipGLkYoRitGLEYuRjIqJkYsIiInRihGK0YrKihGLEYpRipGK0YoRitGMg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p2 := expand(q + (x^3*y^2 - 3/4*x^2*z + 1/4*x*z^3 - 4/5)*p);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSNwMkc2Iiw4KihJInhHRiUiIiZJInlHRiUiIiJJInpHRiUiIiMiIiQqJkYoIiIlRipGLiMhIiJGLSooRihGK0YqRitGLEYrRisqKEYoRjBGKkYtRixGMEYrKihGKEYwRipGLkYsRi5GMiomRixGKUYoRi4jISIkRjAqKEYsRjBGKEYuRipGKyNGLkYwKiZGKEYtRiwiIigjRitGMCooRihGLUYsIiInRipGKyNGMkYwKiZGKEYrRixGMCMhIiVGKSooRihGK0YqRitGLEYuI0YwRik=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Applying  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle290" underline="false">normalf</Font>  to each of  <Equation input-equation="p1;" style="2D Comment">NiMlI3AxRw==</Equation>  and  <Equation input-equation="p2;" style="2D Comment">NiMlI3AyRw==</Equation>  should yield the same canoncial form.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(p1, Gb, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKCooSSJ4RzYiIiIiSSJ5R0YmRidJInpHRiZGJ0YnKiRGKSIiJSMhIiIiIiMqJkYlRidGKUYuIiIk</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(p2, Gb, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKCooSSJ4RzYiIiIiSSJ5R0YmRidJInpHRiZGJ0YnKiRGKSIiJSMhIiIiIiMqJkYlRidGKUYuIiIk</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">This must also be the canonical form of the polynomial  <Equation input-equation="q;" style="2D Comment">NiMlInFH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">normalf(q, Gb, TermOrder);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiMsKCooSSJ4RzYiIiIiSSJ5R0YmRidJInpHRiZGJ0YnKiRGKSIiJSMhIiIiIiMqJkYlRidGKUYuIiIk</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">Solving Systems of Polynomial Equations</Text-field></Title><Text-field layout="Normal" style="Normal">In this section we note, by looking at some examples, that a Groebner basis can be a very powerful tool for the problem of computing solutions to systems of polynomial equations.  Specifically, the term ordering which is most desirable for this application is  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle292" underline="false">pure lexicographical ordering</Font> .  For example, in the polynomial domain  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle306" underline="false">Q</Font>[<Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation>]  the pure lexicographical ordering implies</Text-field><Text-field layout="Normal" style="Normal">          <Equation input-equation="1;" style="2D Comment">NiMiIiI=</Equation>  &lt;  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation>  &lt;  <Equation input-equation="z^2;" style="2D Comment">NiMqJCUiekciIiM=</Equation>  &lt;  <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation>  &lt;  <Equation input-equation="y;" style="2D Comment">NiMlInlH</Equation>  &lt;  <Equation input-equation="y*z;" style="2D Comment">NiMqJiUieUciIiIlInpHRiU=</Equation>  &lt;  <Equation input-equation="y*z^2;" style="2D Comment">NiMqJiUieUciIiIqJCUiekciIiNGJQ==</Equation>  &lt;  <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation>  &lt;  <Equation input-equation="y^2;" style="2D Comment">NiMqJCUieUciIiM=</Equation>  &lt;  <Equation input-equation="y^2*z;" style="2D Comment">NiMqJiUieUciIiMlInpHIiIi</Equation>  &lt;  <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation>  &lt;  <Equation input-equation="x;" style="2D Comment">NiMlInhH</Equation>  &lt;  <Equation input-equation="x*z;" style="2D Comment">NiMqJiUieEciIiIlInpHRiU=</Equation>  &lt;  <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation>  &lt;  <Equation input-equation="x*y;" style="2D Comment">NiMqJiUieEciIiIlInlHRiU=</Equation>  &lt;  <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation>  .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Heading 2" style="Heading 2">The Problem</Text-field><Text-field layout="Normal" style="Normal">Given a system of polynomial equations</Text-field><Text-field layout="Normal" style="Normal">                    <Equation input-equation="p[1](x[1],` . . . `,x[n]) = 0;" style="2D Comment">NiMvLSYlInBHNiMiIiI2JSYlInhHRiclKH4ufi5+Ln5HJkYrNiMlIm5HIiIh</Equation></Text-field><Text-field layout="Normal" style="Normal">                    <Equation input-equation="p[2](x[1],` . . . `,x[n]) = 0;" style="2D Comment">NiMvLSYlInBHNiMiIiM2JSYlInhHNiMiIiIlKH4ufi5+Ln5HJkYrNiMlIm5HIiIh</Equation></Text-field><Text-field layout="Normal" style="Normal">                              <Equation input-equation="` . . . `;" style="2D Comment">NiMlKH4ufi5+Ln5H</Equation></Text-field><Text-field layout="Normal" style="Normal">                    <Equation input-equation="p[k](x[1],` . . . `,x[n]) = 0;" style="2D Comment">NiMvLSYlInBHNiMlImtHNiUmJSJ4RzYjIiIiJSh+Ln4ufi5+RyZGKzYjJSJuRyIiIQ==</Equation></Text-field><Text-field layout="Normal" style="Normal">we wish to find values of  ( <Equation input-equation="x[1],` . . . `,x[n];" style="2D Comment">NiUmJSJ4RzYjIiIiJSh+Ln4ufi5+RyZGJDYjJSJuRw==</Equation> )  which simultaneously satisfy the <Equation input-equation="k;" style="2D Comment">NiMlImtH</Equation> polynomial equations.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Heading 2" style="Heading 2">Solution Technique</Text-field><Text-field layout="Normal" style="Normal">Consider  <Equation input-equation="Ideal(F);" style="2D Comment">NiMtJSZJZGVhbEc2IyUiRkc=</Equation> , the ideal generated by the given polynomials  <Equation input-equation="F = [p[1], ` . . . `, p[k]];" style="2D Comment">NiMvJSJGRzclJiUicEc2IyIiIiUofi5+Ln4ufkcmRic2IyUia0c=</Equation> , and compute its Groebner basis  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  using pure lexicographical ordering.  Then the set of common zeros of  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation>  is identical to the set of common zeros of  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  and, moreover, we can obtain much more information about the common zeros from  <Equation input-equation="G;" style="2D Comment">NiMlIkdH</Equation>  than from the original polynomials  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 7</Text-field></Title><Text-field layout="Normal" style="Normal">Suppose that we wish to solve the three polynomial equations:  <Equation input-equation="q1 = 0,q2 = 0,q3 = 0;" style="2D Comment">NiUvJSNxMUciIiEvJSNxMkdGJS8lI3EzR0Yl</Equation>  defined as follows.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">restart;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">with(Groebner):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q1 := x^2*y + 4*y^2 - 17:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q2 := 2*x*y - 3*y^3 + 8:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q3 := x*y^2 - 5*x*y + 1:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">F := [q1, q2, q3];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJGRzYiNyUsKComSSJ4R0YlIiIjSSJ5R0YlIiIiRiwqJEYrRioiIiUhIzxGLCwoKiZGKUYsRitGLEYqKiRGKyIiJCEiJCIiKUYsLCgqJkYpRixGK0YqRixGMSEiJkYsRiw=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G := gbasis(F, plex(x,y,z));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJHRzYiNyMiIiI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">The system of equations specified by the Groebner basis is  1 = 0  which has no solution.  Therefore the original set of polynomial equations has no solution.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 8</Text-field></Title><Text-field layout="Normal" style="Normal">Suppose that we wish to solve the following system of three polynomials.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p1 := x^2 + y*z - 2:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p2 := y^2 + x*z - 3:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p3 := x*y + z^2 - 5:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">F := [p1, p2, p3];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJGRzYiNyUsKCokSSJ4R0YlIiIjIiIiKiZJInlHRiVGK0kiekdGJUYrRishIiNGKywoKiRGLUYqRisqJkYpRitGLkYrRishIiRGKywoKiZGKUYrRi1GK0YrKiRGLkYqRishIiZGKw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G := gbasis(F, plex(x,y,z));</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJHRzYiNyUsLCIkaCQiIiIqJEkiekdGJSIiIyEkZygqJEYrIiIlIiRRJSokRisiIichJCsiKiRGKyIiKUY1LCxJInlHRiVGKCokRisiIihGNSokRisiIiYiI18qJEYrIiIkISRTKEYrIiVEOSwsSSJ4R0YlRihGOCEjKSlGOiIkcylGPSElIXAjRisiJXZC</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">From the original system of polynomials it is difficult to determine information about the solutions.  However, the system of polynomial equations specified by the Groebner basis has a very interesting structure:  the system has been  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle293" underline="false">triangularized</Font> !  Namely, in one equation the variable  <Equation input-equation="x;" style="2D Comment">NiMlInhH</Equation>  is isolated as a function of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation> ;  in another equation the variable <Equation input-equation="y;" style="2D Comment">NiMlInlH</Equation>  is isolated as a function of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation>;  and the remaining  equation involves a <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle294" underline="false">univariate</Font> polynomial in the variable  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation> .  Therefore, the solutions can be described as follows.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">xpoly := select(has, G, x)[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ4cG9seUc2IiwsSSJ4R0YlIiRoJCokSSJ6R0YlIiIoISMpKSokRioiIiYiJHMpKiRGKiIiJCElIXAjRioiJXZC</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ypoly := select(has, G, y)[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ5cG9seUc2IiwsSSJ5R0YlIiRoJCokSSJ6R0YlIiIoIiIpKiRGKiIiJiIjXyokRioiIiQhJFMoRioiJUQ5</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zpoly := remove(has, G, {x,y})[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ6cG9seUc2IiwsIiRoJCIiIiokSSJ6R0YlIiIjISRnKCokRioiIiUiJFElKiRGKiIiJyEkKyIqJEYqIiIpRjQ=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">We can solve explicitly for <Equation input-equation="x;" style="2D Comment">NiMlInhH</Equation> and <Equation input-equation="y;" style="2D Comment">NiMlInlH</Equation> as a function of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">xval := solve(xpoly, x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV4dmFsRzYiLCpJInpHRiUjISREIiIjPiokRiciIigjIiMpKSIkaCQqJEYnIiImIyEkcylGLyokRiciIiQjIiUhcCNGLw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">yval := solve(ypoly, y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV5dmFsRzYiLCoqJEkiekdGJSIiKCMhIikiJGgkKiRGKCIiJiMhI19GLCokRigiIiQjIiRTKEYsRigjISN2IiM+</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">For each of the 8 roots of the univariate polynomial  <Equation input-equation="zpoly;" style="2D Comment">NiMlJnpwb2x5Rw==</Equation>  we have a triple  ( <Equation input-equation="x,y,z;" style="2D Comment">NiUlInhHJSJ5RyUiekc=</Equation> )  which is a solution of the original system of polynomial equations.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The symbolic representation of the roots of  <Equation input-equation="zpoly;" style="2D Comment">NiMlJnpwb2x5Rw==</Equation>  obtained via  <Equation input-equation="solve(zpoly,z);" style="2D Comment">NiMtJSZzb2x2ZUc2JCUmenBvbHlHJSJ6Rw==</Equation>  is expressed using the  <Equation input-equation="RootOf;" style="2D Comment">NiMlJ1Jvb3RPZkc=</Equation>  construct (by default) and is not very informative.  One can note that  <Equation input-equation="zpoly;" style="2D Comment">NiMlJnpwb2x5Rw==</Equation>  is actually just a quartic polynomial in  <Equation input-equation="z^2;" style="2D Comment">NiMqJCUiekciIiM=</Equation>  and therefore an explicit symbolic representation of its roots in terms of radicals can be obtained -- the following Maple commands will express the roots in terms of radicals.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false"># _EnvExplicit := true;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false"># solve(zpoly, z);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">These commands are commented out here because the resulting expressions for the eight roots are somewhat complicated.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">However, we already have a complete structural specification for the solutions of the given system of polynomial equations.  We may choose to do numerical root-finding for the roots of  <Equation input-equation="zpoly;" style="2D Comment">NiMlJnpwb2x5Rw==</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zval := fsolve(zpoly, z, 'complex');</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV6dmFsRzYiNiokIStmOCNHQCMhIipeJCQhKz1zM2w9RikkIStzISlceUAhIzVeJEYrJCIrcyEpXHlARi8kISt6Iz0mNCcpRi8kIit6Iz0mNCcpRi9eJCQiKz1zM2w9RilGLV4kRjhGMSQiK2Y4I0dAI0Yp</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The eight solutions of the original polynomial system  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation>  can be computed as follows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">soln := seq( [x = eval(xval, z=zval[i]),
              y = eval(yval, z=zval[i]),
              z = zval[i]],
                    i = 1..nops([zval]) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSVzb2xuRzYiNio3JS9JInhHRiUkISpEJjRgOCEiKS9JInlHRiUkISknUUxrKCEiKi9JInpHRiUkIStmOCNHQCNGMTclL0YpXiQkISlsT2p1RiwkIilMKEheKkYsL0YuXiQkISsleSJvSDhGMSQhKzBVTGdnISM1L0YzXiQkISs9czNsPUYxJCErcyEpXHlARkM3JS9GKV4kRjkkISlMKEheKkYsL0YuXiRGPyQiKzBVTGdnRkMvRjNeJEZGJCIrcyEpXHlARkM3JS9GKSQiKz96J2YnPkYxL0YuJCIrTD1DbUBGMS9GMyQhK3ojPSY0JylGQzclL0YpJCErP3onZic+RjEvRi4kIStMPUNtQEYxL0YzJCIreiM9JjQnKUZDNyUvRileJCQiKWxPanVGLEY7L0YuXiQkIisleSJvSDhGMUZBL0YzXiQkIis9czNsPUYxRkg3JS9GKV4kRmhvRk0vRi5eJEZccEZRL0YzXiRGYHBGVTclL0YpJCIqRCY0YDhGLC9GLiQiKSdRTGsoRjEvRjMkIitmOCNHQCNGMQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Check that each of these eight triples is a zero of the original polynomial system (to the numerical accuracy being used).</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">seq( eval(F,soln[i]), i=1..nops([soln]) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">Nio3JSQiJCY9ISIqJCIkSyJGJiQiIz1GJjclXiQkIiNARiYkISM9RiZeJCQiI0VGJiQiIiVGJl4kJCIjOkYmJCIjUCEjNTclXiRGLUYpXiRGMiQhIiVGJl4kRjckISNQRjs3JUY/JCIiJkYmJCIiIkYmRkRGPEYrRiM=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Example 9</Text-field></Title><Text-field layout="Normal" style="Normal">In some cases, the Groebner basis for a polynomial system may contain one or more polynomials which can be factored, in which case the polynomial system breaks into subsystems (corresponding to <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle311" underline="false">subvarieties</Font> in the solution space).  The <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle307" underline="false">gsolve</Font> function in the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle308" underline="false">Groebner</Font> package is designed to perform factoring whenever possible while computing the lexicographic Groebner basis, so as to facilitate solving the polynomial system.  Hence it is advisable to use the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle309" underline="false">gsolve</Font> function rather than the more basic <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle310" underline="false">gbasis</Font> function when the objective is to solve a system of polynomial equations.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Consider the following system of polynomials.</Text-field><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f1 := 4*x^2 + x*y^2 - z + 1/4:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f2 := 2*x + y^2*z + 1/2:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">f3 := x^2*z - 1/2*x - y^2:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">F := [f1, f2, f3];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJGRzYiNyUsKiokSSJ4R0YlIiIjIiIlKiZGKSIiIkkieUdGJUYqRi1JInpHRiUhIiIjRi1GK0YtLChGKUYqKiZGLkYqRi9GLUYtI0YtRipGLSwoKiZGKUYqRi9GLUYtRikjRjBGKiokRi5GKkYw</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">s := gsolve(F, [x,y,z]);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSJzRzYiPCQ3JTclLCZJInpHRiUiIiIhIiJGKywmKiRJInlHRiUiIiNGMEYsRissJkkieEdGJUYwRitGKy1JJXBsZXhHRiU2JUYyRi9GKjwiNyU3JSwwKiRGKiIiJyIjOyokRioiIiYiIikqJEYqIiIlIiIqKiRGKiIiJCIjaCokRipGMCIkTyJGKiEkMSMiI2dGKywwRi4iJCVHRj0iJWtjRkAiJW9iRkMiJW1lRkYiJmxWI0YqIiZQKmYhJnlSJUYrLDBGMiIkbyZGPSElT0ZGQCElIW8jRkMhJXJGRkYhJiR6NkYqISZZKkciJiNRQEYrRjM8I0Yp</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The result  <Equation input-equation="s;" style="2D Comment">NiMlInNH</Equation>  consists of a set of two subsystems, as follows.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">s[1];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JTclLCZJInpHNiIiIiIhIiJGKCwmKiRJInlHRiciIiNGLUYpRigsJkkieEdGJ0YtRihGKC1JJXBsZXhHRic2JUYvRixGJjwi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">s[2];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JTclLDAqJEkiekc2IiIiJyIjOyokRiciIiYiIikqJEYnIiIlIiIqKiRGJyIiJCIjaCokRiciIiMiJE8iRichJDEjIiNnIiIiLDAqJEkieUdGKEY1IiQlR0YrIiVrY0YuIiVvYkYxIiVtZUY0IiZsViNGJyImUCpmISZ5UiVGOSwwSSJ4R0YoIiRvJkYrISVPRkYuISUhbyNGMSElckZGNCEmJHo2RichJlkqRyImI1FARjktSSVwbGV4R0YoNiVGRUY8Ric8IywmRidGOSEiIkY5</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The notation for each subsystem is a list of three elements:  a list of polynomials which is a Groebner basis for the subsystem, the term ordering which was used, and the last element is a set of constraints in the form of polynomials which must not vanish (empty in this example).</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Note that the simpler of the two subsystems contains a polynomial in  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation>  of degree <Equation input-equation="1;" style="2D Comment">NiMiIiI=</Equation> .  Let  <Equation input-equation="G1;" style="2D Comment">NiMlI0cxRw==</Equation>  be the Groebner basis of the simpler subsystem and let  <Equation input-equation="G2;" style="2D Comment">NiMlI0cyRw==</Equation>  be the Groebner basis of the more complicated subsystem.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">(G1,G2) := (s[1][1], s[2][1]):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">if not member(z-1, G1) then
  # Make G1 be the simpler subsystem.
  (G1,G2) := (G2,G1)
fi:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G1;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JSwmSSJ6RzYiIiIiISIiRicsJiokSSJ5R0YmIiIjRixGKEYnLCZJInhHRiZGLEYnRic=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G2;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JSwwKiRJInpHNiIiIiciIzsqJEYmIiImIiIpKiRGJiIiJSIiKiokRiYiIiQiI2gqJEYmIiIjIiRPIkYmISQxIyIjZyIiIiwwKiRJInlHRidGNCIkJUdGKiIla2NGLSIlb2JGMCIlbWVGMyImbFYjRiYiJlAqZiEmeVIlRjgsMEkieEdGJyIkbyZGKiElT0ZGLSElIW8jRjAhJXJGRjMhJiR6NkYmISZZKkciJiNRQEY4</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">From  <Equation input-equation="G1;" style="2D Comment">NiMlI0cxRw==</Equation>  we obtain two solutions.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">_EnvExplicit := true:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G1_soln := solve(convert(G1,'set'), {x,y,z});</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SShHMV9zb2xuRzYiNiQ8JS9JInlHRiUsJCokIiIjIyIiIkYsRi0vSSJ6R0YlRi4vSSJ4R0YlIyEiIkYsPCUvRiksJEYrRjNGL0Yx</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">From  <Equation input-equation="G2;" style="2D Comment">NiMlI0cyRw==</Equation> , first separate out the three Groebner basis polynomials.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">xpoly := select(has, G2, x)[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ4cG9seUc2IiwwSSJ4R0YlIiRvJiokSSJ6R0YlIiImISVPRiokRioiIiUhJSFvIyokRioiIiQhJXJGKiRGKiIiIyEmJHo2RiohJlkqRyImI1FAIiIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ypoly := select(has, G2, y)[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ5cG9seUc2IiwwKiRJInlHRiUiIiMiJCVHKiRJInpHRiUiIiYiJWtjKiRGLCIiJSIlb2IqJEYsIiIkIiVtZSokRixGKSImbFYjRiwiJlAqZiEmeVIlIiIi</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zpoly := remove(has, G2, {x,y})[];</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSZ6cG9seUc2IiwwKiRJInpHRiUiIiciIzsqJEYoIiImIiIpKiRGKCIiJSIiKiokRigiIiQiI2gqJEYoIiIjIiRPIkYoISQxIyIjZyIiIg==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">There is one value of  <Equation input-equation="x;" style="2D Comment">NiMlInhH</Equation>  corresponding to each value of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">xval := solve(xpoly, x);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV4dmFsRzYiLC4qJEkiekdGJSIiIyMiJiR6NiIkbyYqJEYoIiImIyIkVSQiI3IqJEYoIiIlIyIkTiRGMSokRigiIiQjIiVyRkYsRigjIiZ0VyIiJCVHIyEmInA1RjwiIiI=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">There are two values of  <Equation input-equation="y;" style="2D Comment">NiMlInlH</Equation>  corresponding to each value of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation> .</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">yval := solve(ypoly, y);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV5dmFsRzYiNiQsJCokLC4qJEkiekdGJSIiJiEnV0BTKiRGKyIiJSEnR2BSKiRGKyIiJCEnJ1s7JSokRisiIiMhKDoqSDxGKyEoRmJEJSIoUUM3JCIiIiNGOUY1I0Y5IiRVIiwkRigjISIiRjw=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">There are six values of  <Equation input-equation="z;" style="2D Comment">NiMlInpH</Equation>  to be determined </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zval := solve(zpoly, z);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV6dmFsRzYiNigtSSdSb290T2ZHNiRJKnByb3RlY3RlZEdGKkkoX3N5c2xpYkdGJTYkLDAqJEkjX1pHRiUiIiciIzsqJEYvIiImIiIpKiRGLyIiJSIiKiokRi8iIiQiI2gqJEYvIiIjIiRPIkYvISQxIyIjZyIiIi9JJmluZGV4R0YpRkAtRig2JEYtL0ZCRjwtRig2JEYtL0ZCRjktRig2JEYtL0ZCRjYtRig2JEYtL0ZCRjMtRig2JEYtL0ZCRjA=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Let us express the 12 solutions corresponding to subsystem  <Equation input-equation="G2;" style="2D Comment">NiMlI0cyRw==</Equation>  numerically.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zval := evalf(zval);</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM+SSV6dmFsRzYiNigkIitPVGRLWyEjNSQiKzJBVSNvJkYpXiQkIis7VlpXJSlGKSQiK0o1ajI8ISIqXiQkIStccz4/O0YxJCIrSSQpcG01RjFeJEYzJCErSSQpcG01RjFeJEYtJCErSjVqMjxGMQ==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G2_soln := NULL:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">for i to nops([zval]) do
  zi := zval[i];
  G2_soln := G2_soln,
    [x=eval(xval,z=zi), y=eval(yval[1],z=zi), z=zi],
    [x=eval(xval,z=zi), y=eval(yval[2],z=zi), z=zi]
od:</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">G2_soln;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">Ni43JS9JInhHNiIkISphIkhMcyEiKS9JInlHRiYkIitQdSZmUCYhIiovSSJ6R0YmJCIrT1RkS1shIzU3JUYkL0YrJCErUHUmZlAmRi5GLzclL0YlJCEpbjYlNCRGKS9GKyQiK2kqPkdkJUYzL0YwJCIrMkFVI28mRjM3JUY5L0YrJCEraSo+R2QlRjNGPzclL0YlXiQkIilMbHNpRikkIilET1dIRikvRiteJCQiK0QhPUR5JEYzJCIraUV3LCIqRjMvRjBeJCQiKztWWlclKUYzJCIrSjVqMjxGLjclRkcvRiteJCQhK0QhPUR5JEYzJCEraUV3LCIqRjNGUzclL0YlXiQkISlrODRCRikkISkhPiU9a0YpL0YrXiQkIitfUU4+c0YzJCErcnI0YFBGMy9GMF4kJCErXHM+PztGLiQiK0kkKXBtNUYuNyVGW28vRiteJCQhK19RTj5zRjMkIitycjRgUEYzRmdvNyUvRiVeJEZdbyQiKSE+JT1rRikvRiteJEZjb0ZicC9GMF4kRmlvJCErSSQpcG01Ri43JUZlcC9GK14kRmBwRmVvRltxNyUvRiVeJEZJJCEpRE9XSEYpL0YrXiRGT0Zobi9GMF4kRlUkIStKNWoyPEYuNyVGY3EvRiteJEZmbkZRRmlx</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Finally,  <Equation input-equation="G1_soln;" style="2D Comment">NiMlKEcxX3NvbG5H</Equation>  and  <Equation input-equation="G2_soln;" style="2D Comment">NiMlKEcyX3NvbG5H</Equation>  together represent the 14 solutions of the original polynomial system  <Equation input-equation="F;" style="2D Comment">NiMlIkZH</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">F;</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiM3JSwqKiRJInhHNiIiIiMiIiUqJkYmIiIiSSJ5R0YnRihGK0kiekdGJyEiIiNGK0YpRissKEYmRigqJkYsRihGLUYrRisjRitGKEYrLCgqJkYmRihGLUYrRitGJiNGLkYoKiRGLEYoRi4=</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" style="Normal">Check the solutions.</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">seq( eval(F, G1_soln[i]), i=1..nops([G1_soln]) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">NiQ3JSIiIUYkRiRGIw==</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">seq( eval(F, G2_soln[i]), i=1..nops([G2_soln]) );</Font></Text-field></Input><Output><Text-field layout="Maple Output" style="2D Output"><Equation style="2D Output">Ni43JSQiJWtHISM1JCEkKyNGJiQiIichIilGIzclJCIkUSJGJiQhJFMiRiYkIiQvIkYmRiw3JV4kJCIlUUtGJiQhIyQpISIqXiQkISR6JUY5JCElS2tGJl4kJCIlUGJGJiQiJHgnRiZGMzclXiQkIiRFIkY5JCIjO0Y5XiQkIiZMKD4hIzYkISNhRjleJCQiJEwpRiYkIiRGJkYmRkQ3JV4kRkYkISM7RjleJEZLJCIjYUY5XiRGUSQhJEYmRiZGVTclXiRGNSQiIyQpRjleJEY7JCIlS2tGJl4kRkAkISR4J0YmRmlu</Equation></Text-field></Output></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section><Section><Title><Text-field layout="Heading 2" style="Heading 2">Concluding Remarks</Text-field></Title><Text-field layout="Normal" style="Normal">In addition to reference [1], for further reading on the solution of systems of polynomial equations and related topics, the undergraduate-level textbook [2] is highly recommended.</Text-field><Text-field layout="Normal" style="Normal"/></Section></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">References</Text-field></Title><Text-field layout="Normal" style="Normal">[1]  K.O. Geddes, S.R. Czapor and G. Labahn, <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle312" underline="false">Algorithms for Computer Algebra</Font> , Kluwer Academic Publishers, Boston, 1992.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">[2]  D. Cox, J. Little and D. O'Shea, <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle313" underline="false">Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra</Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle314" underline="false"> , </Font>Springer-Verlag, New York, 1992.</Text-field></Section><Text-field/><Text-field/><Text-field/></Worksheet>