next | previous | forward | backward | up | top | index | toc | home
Macaulay2 > rings > monomial orderings > monomial orders for free modules > Schreyer orders

Schreyer orders -- induced monomial order on a free module

The Schreyer order is a monomial order on a free module which is particularly efficient for computing Groebner bases and syzygies. The size of Groebner bases of submodules using such orders is often much much smaller than if a position over term or term over position order would be used. We call these Schreyer orders, after Frank Olaf-Schreyer, who used them to give an algorithm for syzygies, and who also recognized many of their beneficial properties. See Schreyer.... for more information.

Given a free R-module G, a set of monomials m0, ..., m(s-1) of G, and a monomial order on the monomials of G, the induced order, or, Schreyer order on F = Rs is defined by: a Fi > b Fj (in F) iff a mi > b mj (in G), or a mi and b mj are scalar multiples of each other, and i>j, where Fi are the unit column vectors of F

In Macaulay 2, free modules with a Schreyer order on them can be created using schreyerOrder(Matrix).

i1 : R = ZZ/101[a..f];
i2 : m = matrix{{a,b,c,d}};

             1       4
o2 : Matrix R  <--- R
i3 : m1 = schreyerOrder m

o3 = | a b c d |

             1       4
o3 : Matrix R  <--- R
i4 : F = source m1

      4
o4 = R

o4 : R-module, free, degrees {1, 1, 1, 1}
i5 : g = syz m1

o5 = {1} | 0  0  0  -b -c -d |
     {1} | 0  -c -d a  0  0  |
     {1} | -d b  0  0  a  0  |
     {1} | c  0  b  0  0  a  |

             4       6
o5 : Matrix R  <--- R
i6 : leadTerm g

o6 = {1} | 0 0 0 0 0 0 |
     {1} | 0 0 0 a 0 0 |
     {1} | 0 b 0 0 a 0 |
     {1} | c 0 b 0 0 a |

             4       6
o6 : Matrix R  <--- R
In Macaulay 2, free modules are displayed without any indication of whether they are endowed with a Schreyer order or not. To determine whether one is, use schreyerOrder(Module). If the result is the zero matrix, then the monomial order associated with this free module is not a Schreyer order. In that case, the monomial order for the free module is the one determined directly from the ring.
i7 : schreyerOrder target m

o7 = 0

                    1
o7 : Matrix 0 <--- R
i8 : schreyerOrder source g

o8 = 0

                    6
o8 : Matrix 0 <--- R
Over quotient rings, the multiplications a mi and b mj are over the ambient polynomial ring, not the quotient.

It is fine for the free module G above to be endowed with a Schreyer order too.

The only places that Schreyer orders are considered is in computation of Groebner bases, syzygies, and free resolutions, and with the leadTerm routine.

The size of the Groebner bases of syzygy modules is often dramatically smaller if the monomial order is the Schreyer order, as in the following example.

i9 : R = QQ[a..f];
i10 : I = ideal"abc-def,a2c-d2f,aef-bcd,a3-d3,af2-cd2"

                             2     2                     3    3       2  
o10 = ideal (a*b*c - d*e*f, a c - d f, - b*c*d + a*e*f, a  - d , - c*d  +
      -----------------------------------------------------------------------
         2
      a*f )

o10 : Ideal of R
i11 : F = syz gens I

o11 = {3} | a2+ad+d2 cd2+a2f+d2f a2c-a2f+acf-d2f  -a2f+acf        
      {3} | 0        aef-def     ace-bcf-aef+def  abc+ace-bcf-aef 
      {3} | a2+ad+d2 acd+adf+d2f cd2-adf-d2f+df2  cd2-adf-d2f+df2 
      {3} | -bc-ef   -bcf-cef    -bc2-c2e+bcf+cef -bc2-c2e+bcf+cef
      {3} | 0        0           cde-def          cde-def         
      -----------------------------------------------------------------------
      acd-acf          a2d-a2f          a2e+bdf+aef d3-d2f   0       
      -bcd-ace+bcf+aef -a2e+ade         ae2-bef     a2e-d2e  -ade+abf
      d2f-df2          d3-d2f           ade+d2e+abf ad2-adf  -d3+d2f 
      c2e-cef          -bcd+ace-cde+bcf -bce-ce2    -ace+ef2 cde-bcf 
      -cde+def         -ade+d2e         -abe+de2    -a2e+ade bd2-d2e 
      -----------------------------------------------------------------------
      0        0       a2b+bd2+ade bcd-aef a3-d3    cd2-af2 0        0      
      0        a2c-df2 abe-bde     0       0        0       a3-d3    cd2-af2
      -cd2+af2 0       abd+bd2+d2e abc-def 0        0       0        0      
      0        -ac2+f3 -b2c-bce    0       -abc+def 0       -a2c+d2f 0      
      bcd-aef  acd-a2f 0           0       0        abc-def 0        a2c-d2f
      -----------------------------------------------------------------------
      ad2-adf  0       abc2-def2  ac2f-df3            ab2c+bdef+ae2f    
      -ade+bdf 0       -b2c2+e2f2 ac2e-bc2f-acef+ef3  -b3c+abe2+ae3-be2f
      0        0       bcdf-acef  cdf2-af3            bd2e+d2e2+b2df    
      cde-bf2  cd2-af2 0          -c3e+c2ef           -bce2-ce3         
      a2b-d2e  a3-d3   0          c2de-acef-cdef+aef2 -b2de+de3         
      -----------------------------------------------------------------------
      cdef-bcf2 |
      0         |
      -bc2d+ef3 |
      0         |
      b2c2-e2f2 |

              5       23
o11 : Matrix R  <--- R
i12 : betti gens gb syz F

              0  1
o12 = total: 23 67
          5:  1  .
          6: 18 19
          7:  4 27
          8:  .  8
          9:  .  8
         10:  .  5

o12 : BettiTally
i13 : G = schreyerOrder F

o13 = {3} | a2+ad+d2 cd2+a2f+d2f a2c-a2f+acf-d2f  -a2f+acf        
      {3} | 0        aef-def     ace-bcf-aef+def  abc+ace-bcf-aef 
      {3} | a2+ad+d2 acd+adf+d2f cd2-adf-d2f+df2  cd2-adf-d2f+df2 
      {3} | -bc-ef   -bcf-cef    -bc2-c2e+bcf+cef -bc2-c2e+bcf+cef
      {3} | 0        0           cde-def          cde-def         
      -----------------------------------------------------------------------
      acd-acf          a2d-a2f          a2e+bdf+aef d3-d2f   0       
      -bcd-ace+bcf+aef -a2e+ade         ae2-bef     a2e-d2e  -ade+abf
      d2f-df2          d3-d2f           ade+d2e+abf ad2-adf  -d3+d2f 
      c2e-cef          -bcd+ace-cde+bcf -bce-ce2    -ace+ef2 cde-bcf 
      -cde+def         -ade+d2e         -abe+de2    -a2e+ade bd2-d2e 
      -----------------------------------------------------------------------
      0        0       a2b+bd2+ade bcd-aef a3-d3    cd2-af2 0        0      
      0        a2c-df2 abe-bde     0       0        0       a3-d3    cd2-af2
      -cd2+af2 0       abd+bd2+d2e abc-def 0        0       0        0      
      0        -ac2+f3 -b2c-bce    0       -abc+def 0       -a2c+d2f 0      
      bcd-aef  acd-a2f 0           0       0        abc-def 0        a2c-d2f
      -----------------------------------------------------------------------
      ad2-adf  0       abc2-def2  ac2f-df3            ab2c+bdef+ae2f    
      -ade+bdf 0       -b2c2+e2f2 ac2e-bc2f-acef+ef3  -b3c+abe2+ae3-be2f
      0        0       bcdf-acef  cdf2-af3            bd2e+d2e2+b2df    
      cde-bf2  cd2-af2 0          -c3e+c2ef           -bce2-ce3         
      a2b-d2e  a3-d3   0          c2de-acef-cdef+aef2 -b2de+de3         
      -----------------------------------------------------------------------
      cdef-bcf2 |
      0         |
      -bc2d+ef3 |
      0         |
      b2c2-e2f2 |

              5       23
o13 : Matrix R  <--- R
i14 : betti gens gb syz G     

              0  1
o14 = total: 23 45
          5:  1  .
          6: 18 19
          7:  4 22
          8:  .  4

o14 : BettiTally

See also