<?xml version="1.0" encoding="utf-8" ?> <!-- for emacs: -*- coding: utf-8 -*- --> <!-- Apache may like this line in the file .htaccess: AddCharset utf-8 .html --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head><title>gfan</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_groebner__Cone.html">next</a> | <a href="index.html">previous</a> | <a href="_groebner__Cone.html">forward</a> | <a href="index.html">backward</a> | up | <a href="index.html">top</a> | <a href="master.html">index</a> | <a href="toc.html">toc</a> | <a href="http://www.math.uiuc.edu/Macaulay2/">Macaulay2 web site</a></div> </td> </tr> </table> <hr/> <div><h1>gfan</h1> <div class="single"><h2>Description</h2> <div><div>This method compute the Groebner fan of an ideal, which is a list of all reduced Groebner bases of an ideal. A particular Grobner basis may occur twice if it is a Groebner basis under multiple term orderings. Rather than marking the each Groebner basis to distinguish the leading terms, a second parallel list is given which contains the lead terms of each Groebner basis.</div> <table class="examples"><tr><td><pre>i1 : R = ZZ/32003[symbol a..symbol d];</pre> </td></tr> <tr><td><pre>i2 : I = monomialCurveIdeal(R,{1,3,4}) 3 2 2 2 3 2 o2 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c) o2 : Ideal of R</pre> </td></tr> <tr><td><pre>i3 : time (M,L) = gfan I; LP algorithm being used: "cddgmp". -- used 0.00248 seconds</pre> </td></tr> <tr><td><pre>i4 : M/toString/print; {b*d^2, a*d, a*c^2, a^2*c} {c^3, a*d, a*c^2, a^2*c} {c^3, b*c, a*c^2, a^2*c, a^3*d} {c^3, b*c, b^4, a*c^2, a^2*c} {c^3, b*c, b^3, a*c^2} {c^3, b*c, b^2*d, b^3} {b*d^2, b^2*d, a*d, a^2*c} {b*d^2, b^2*d, b^3, a*d} {b*d^2, b*c, b^2*d, b^3, a*d^3} {c^4, b*d^2, b*c, b^2*d, b^3}</pre> </td></tr> <tr><td><pre>i5 : L/toString/print; {-c^3+b*d^2, -b*c+a*d, a*c^2-b^2*d, -b^3+a^2*c} {c^3-b*d^2, -b*c+a*d, a*c^2-b^2*d, -b^3+a^2*c} {c^3-b*d^2, b*c-a*d, a*c^2-b^2*d, -b^3+a^2*c, -b^4+a^3*d} {c^3-b*d^2, b*c-a*d, b^4-a^3*d, a*c^2-b^2*d, -b^3+a^2*c} {c^3-b*d^2, b*c-a*d, b^3-a^2*c, a*c^2-b^2*d} {c^3-b*d^2, b*c-a*d, -a*c^2+b^2*d, b^3-a^2*c} {-c^3+b*d^2, -a*c^2+b^2*d, -b*c+a*d, -b^3+a^2*c} {-c^3+b*d^2, -a*c^2+b^2*d, b^3-a^2*c, -b*c+a*d} {-c^3+b*d^2, b*c-a*d, -a*c^2+b^2*d, b^3-a^2*c, -c^4+a*d^3} {c^4-a*d^3, -c^3+b*d^2, b*c-a*d, -a*c^2+b^2*d, b^3-a^2*c}</pre> </td></tr> </table> <p>We can see that the leading terms of <tt>-c<sup>3</sup>+b*d<sup>2</sup>, -b*c+a*d, a*c<sup>2</sup>-b<sup>2</sup>*d, -b<sup>3</sup>+a<sup>2</sup>*c</tt> (which is the first Groebner basis listed in <tt>L</tt>) are <tt>b*d<sup>2</sup>, a*d, a*c<sup>2</sup>, a<sup>2</sup>*c</tt>.</p> <div>If the ideal is invariant under some permutation of the variables, then gfan can compute all initial ideals up to this equivalence, which can change an intractible problem to a doable one. The cyclic group of order 4 a --> b --> c --> d --> a leaves the following ideal fixed.</div> <table class="examples"><tr><td><pre>i6 : S = ZZ/32003[a..e];</pre> </td></tr> <tr><td><pre>i7 : I = ideal"a+b+c+d,ab+bc+cd+da,abc+bcd+cda+dab,abcd-e4" o7 = ideal (a + b + c + d, a*b + b*c + a*d + c*d, a*b*c + a*b*d + a*c*d + ------------------------------------------------------------------------ 4 b*c*d, a*b*c*d - e ) o7 : Ideal of S</pre> </td></tr> <tr><td><pre>i8 : (inL,L) = gfan I; LP algorithm being used: "cddgmp".</pre> </td></tr> <tr><td><pre>i9 : #inL o9 = 96</pre> </td></tr> </table> <div>There are 96 initial ideals of this ideal. We can use the symmetry on the above:</div> <table class="examples"><tr><td><pre>i10 : (inL1, L1) = gfan(I, Symmetries=>{(b,c,d,a,e)}); LP algorithm being used: "cddgmp".</pre> </td></tr> <tr><td><pre>i11 : #inL1 o11 = 24</pre> </td></tr> </table> <p></p> <div/> </div> </div> <div class="waystouse"><h2>Ways to use <tt>gfan</tt> :</h2> <ul><li>gfan(Ideal)</li> </ul> </div> </div> </body> </html>