Macaulay2 » Documentation
Packages » Complexes :: Strategy for free resolutions of homogeneous modules via successive syzygies
next | previous | forward | backward | up | index | toc

Strategy for free resolutions of homogeneous modules via successive syzygies -- algorithm for computing free resolutions step by step

Synopsis

Description

This is one of the algorithms in the engine of Macaulay2 for computing minimal free resolutions. This is the default variant when the ring $S$ is a homogeneous quotient of an almost commutative polynomial ring over a base field. In particular, this variant applies to homogeneous modules over a homogenized Weyl algebra or an exterior algebra.

This first example computes part of the minimal free resolution of the ground field over a hypersurface ring.

i1 : kk = ZZ/32003;
i2 : R = kk[a..d]/(a^2+b^2+c^2+d^2);
i3 : I = ideal(a,b,c,d)

o3 = ideal (a, b, c, d)

o3 : Ideal of R
i4 : M = R^1/I

o4 = cokernel | a b c d |

                            1
o4 : R-module, quotient of R
i5 : F = freeResolution(M, LengthLimit => 5)

      1      4      7      8      8      8
o5 = R  <-- R  <-- R  <-- R  <-- R  <-- R
                                         
     0      1      2      3      4      5

o5 : Complex
i6 : dd^F

          1                   4
o6 = 0 : R  <--------------- R  : 1
               | a b c d |

          4                                   7
     1 : R  <------------------------------- R  : 2
               {1} | 0  0  -d 0  -c -b a |
               {1} | 0  -d 0  -c 0  a  b |
               {1} | -d 0  0  b  a  0  c |
               {1} | c  b  a  0  0  0  d |

          7                                      8
     2 : R  <---------------------------------- R  : 3
               {2} | b  a  0  0  c -d 0  0  |
               {2} | -c 0  a  0  b 0  -d 0  |
               {2} | 0  -c -b 0  a 0  0  -d |
               {2} | d  0  0  a  0 b  -c 0  |
               {2} | 0  d  0  -b 0 a  0  -c |
               {2} | 0  0  d  c  0 0  a  -b |
               {2} | 0  0  0  0  d c  b  a  |

          8                                      8
     3 : R  <---------------------------------- R  : 4
               {3} | -a -b c  0  -d 0  0  0 |
               {3} | b  -a 0  c  0  -d 0  0 |
               {3} | -c 0  -a b  0  0  -d 0 |
               {3} | d  0  0  0  -a b  -c 0 |
               {3} | 0  -c -b -a 0  0  0  d |
               {3} | 0  d  0  0  -b -a 0  c |
               {3} | 0  0  d  0  c  0  -a b |
               {3} | 0  0  0  d  0  c  b  a |

          8                                      8
     4 : R  <---------------------------------- R  : 5
               {4} | a  -b c  0  -d 0  0  0 |
               {4} | b  a  0  -c 0  d  0  0 |
               {4} | -c 0  a  -b 0  0  d  0 |
               {4} | 0  -c -b -a 0  0  0  d |
               {4} | d  0  0  0  a  -b c  0 |
               {4} | 0  d  0  0  -b -a 0  c |
               {4} | 0  0  d  0  c  0  -a b |
               {4} | 0  0  0  d  0  c  b  a |

o6 : ComplexMap
i7 : assert isWellDefined F
i8 : assert isQuasiIsomorphism(augmentationMap F, Concentration => (0,4))

When the input is an ideal $I$, the free resolution of $R^1/I$ is returned.

i9 : F1 = freeResolution(I, LengthLimit => 5)

      1      4      7      8      8      8
o9 = R  <-- R  <-- R  <-- R  <-- R  <-- R
                                         
     0      1      2      3      4      5

o9 : Complex
i10 : assert(F1 == F)
i11 : F2 = freeResolution(module I, LengthLimit => 5)

       4      7      8      8      8      8
o11 = R  <-- R  <-- R  <-- R  <-- R  <-- R
                                          
      0      1      2      3      4      5

o11 : Complex
i12 : dd^F1

           1                   4
o12 = 0 : R  <--------------- R  : 1
                | a b c d |

           4                                   7
      1 : R  <------------------------------- R  : 2
                {1} | 0  0  -d 0  -c -b a |
                {1} | 0  -d 0  -c 0  a  b |
                {1} | -d 0  0  b  a  0  c |
                {1} | c  b  a  0  0  0  d |

           7                                      8
      2 : R  <---------------------------------- R  : 3
                {2} | b  a  0  0  c -d 0  0  |
                {2} | -c 0  a  0  b 0  -d 0  |
                {2} | 0  -c -b 0  a 0  0  -d |
                {2} | d  0  0  a  0 b  -c 0  |
                {2} | 0  d  0  -b 0 a  0  -c |
                {2} | 0  0  d  c  0 0  a  -b |
                {2} | 0  0  0  0  d c  b  a  |

           8                                      8
      3 : R  <---------------------------------- R  : 4
                {3} | -a -b c  0  -d 0  0  0 |
                {3} | b  -a 0  c  0  -d 0  0 |
                {3} | -c 0  -a b  0  0  -d 0 |
                {3} | d  0  0  0  -a b  -c 0 |
                {3} | 0  -c -b -a 0  0  0  d |
                {3} | 0  d  0  0  -b -a 0  c |
                {3} | 0  0  d  0  c  0  -a b |
                {3} | 0  0  0  d  0  c  b  a |

           8                                      8
      4 : R  <---------------------------------- R  : 5
                {4} | a  -b c  0  -d 0  0  0 |
                {4} | b  a  0  -c 0  d  0  0 |
                {4} | -c 0  a  -b 0  0  d  0 |
                {4} | 0  -c -b -a 0  0  0  d |
                {4} | d  0  0  0  a  -b c  0 |
                {4} | 0  d  0  0  -b -a 0  c |
                {4} | 0  0  d  0  c  0  -a b |
                {4} | 0  0  0  d  0  c  b  a |

o12 : ComplexMap
i13 : dd^F2

           4                                   7
o13 = 0 : R  <------------------------------- R  : 1
                {1} | -b 0  -c a 0  0  -d |
                {1} | a  -c 0  b 0  -d 0  |
                {1} | 0  b  a  c -d 0  0  |
                {1} | 0  0  0  d c  b  a  |

           7                                      8
      1 : R  <---------------------------------- R  : 2
                {2} | 0  0  -c -d a  0  b  0 |
                {2} | -d 0  -a 0  -c b  0  0 |
                {2} | 0  -d b  0  0  a  c  0 |
                {2} | 0  0  0  0  b  c  -a d |
                {2} | -b -a 0  0  0  -d 0  c |
                {2} | c  0  0  -a -d 0  0  b |
                {2} | 0  c  0  b  0  0  d  a |

           8                                      8
      2 : R  <---------------------------------- R  : 3
                {3} | a  -b -d 0  c  0  0  0 |
                {3} | -b -a 0  0  0  0  -d c |
                {3} | -d 0  -a 0  0  -c b  0 |
                {3} | c  0  0  0  -a -d 0  b |
                {3} | 0  0  -c -b -d a  0  0 |
                {3} | 0  -d b  -c 0  0  a  0 |
                {3} | 0  0  0  a  0  b  c  d |
                {3} | 0  c  0  -d b  0  0  a |

           8                                      8
      3 : R  <---------------------------------- R  : 4
                {4} | a  -b -d c  0 0  0  0  |
                {4} | -b -a 0  0  0 0  -d c  |
                {4} | -d 0  -a 0  0 -c b  0  |
                {4} | 0  0  0  0  a -b -c -d |
                {4} | c  0  0  -a 0 -d 0  b  |
                {4} | 0  0  -c -d b a  0  0  |
                {4} | 0  -d b  0  c 0  a  0  |
                {4} | 0  c  0  b  d 0  0  a  |

           8                                      8
      4 : R  <---------------------------------- R  : 5
                {5} | a  -b 0  -d c  0  0  0 |
                {5} | -b -a 0  0  0  0  -d c |
                {5} | -d 0  0  -a 0  -c b  0 |
                {5} | c  0  0  0  -a -d 0  b |
                {5} | 0  0  -a 0  0  b  c  d |
                {5} | 0  0  b  -c -d a  0  0 |
                {5} | 0  -d c  b  0  0  a  0 |
                {5} | 0  c  d  0  b  0  0  a |

o13 : ComplexMap

This strategy also works when the underlying ring is simply a polynomial ring, but is often slower than Strategy 1. However, unlike Strategy 1, this strategy preserves the given presentation of the module, which can be desirable.

i14 : S = kk[a..e]

o14 = S

o14 : PolynomialRing
i15 : J = ideal(a^3-e^3, a*b^2-c*e^2, a*b*c, a*b*c + a^3 - e^3)

              3    3     2      2          3            3
o15 = ideal (a  - e , a*b  - c*e , a*b*c, a  + a*b*c - e )

o15 : Ideal of S
i16 : assert isHomogeneous J
i17 : C2 = freeResolution(J, Strategy => 2)

       1      4      5      2
o17 = S  <-- S  <-- S  <-- S
                            
      0      1      2      3

o17 : Complex
i18 : C1 = freeResolution ideal J_*

       1      3      4      2
o18 = S  <-- S  <-- S  <-- S
                            
      0      1      2      3

o18 : Complex
i19 : assert isWellDefined C2
i20 : betti C2

             0 1 2 3
o20 = total: 1 4 5 2
          0: 1 . . .
          1: . . 1 .
          2: . 4 . .
          3: . . . .
          4: . . 4 1
          5: . . . 1

o20 : BettiTally
i21 : betti C1

             0 1 2 3
o21 = total: 1 3 4 2
          0: 1 . . .
          1: . . . .
          2: . 3 . .
          3: . . . .
          4: . . 4 1
          5: . . . 1

o21 : BettiTally
i22 : assert(dd^C2_1 == gens J)
i23 : assert(dd^C1_1 != gens J)

For completeness, we present an example over a homogenized Weyl algebra.

i24 : W = kk[x,y,z,dx,dy,dz,h, WeylAlgebra => {x => dx, y => dy, z => dz, h}]

o24 = W

o24 : PolynomialRing, 4 differential variable(s) and one homogenizing variable
i25 : I = ideal(x*dy-y*dz, x*y*dy*dz)

o25 = ideal (x*dy - y*dz, x*y*dy*dz)

o25 : Ideal of W
i26 : M = W^1/I

o26 = cokernel | xdy-ydz xydydz |

                             1
o26 : W-module, quotient of W
i27 : F = freeResolution(M, Strategy => 2)

       1      2      2      1
o27 = W  <-- W  <-- W  <-- W
                            
      0      1      2      3

o27 : Complex
i28 : dd^F

           1                          2
o28 = 0 : W  <---------------------- W  : 1
                | xdy-ydz xydydz |

           2                                                                  2
      1 : W  <-------------------------------------------------------------- W  : 2
                {2} | -xy2dydz+xydzh2 -x2ydy^3dz-xy2dy^2dz^2-3x2dy^2dzh2 |
                {4} | xydy-y2dz-2xh2  x2dy^3-y2dydz^2-6xdydzh2-ydz^2h2   |

           2                                 1
      2 : W  <----------------------------- W  : 3
                {7} | -xdy^2-ydydz+dzh2 |
                {9} | y                 |

o28 : ComplexMap
i29 : assert isWellDefined F
i30 : assert isQuasiIsomorphism augmentationMap F

This strategy works degree by degree. Within each degree, it first computes the syzygies of the presentation matrix, and then computes the second syzygies, and so on. This strategy uses Schreyer orders on the free modules in the resolution which often improves efficiency.

Although similar to Strategy 3, this strategy does not use Hilbert functions to aid the computation.

See also