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

Strategy for free resolutions via syzygies -- algorithm for computing free resolutions step by step using syzygies

Synopsis

Description

This is one of the algorithms written at top level of Macaulay2 for computing free resolutions, although it uses engine code to compute syzygies. This variant works over most rings in Macaulay2, including Weyl algebras and exterior algebras.

This first example computes part of the free resolution of the ground field over a inhomogeneous $E_8$ singularity.

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

o3 = ideal (a, b, c)

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

o4 = cokernel | a b c |

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

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

o5 : Complex
i6 : dd^F

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

          3                           4
     1 : R  <----------------------- R  : 2
               {1} | b  0  c  a  |
               {1} | -a c  0  b2 |
               {1} | 0  -b -a c4 |

          4                            4
     2 : R  <------------------------ R  : 3
               {2} | c  0   -a b2 |
               {2} | a  -b2 c4 0  |
               {2} | -b -a  0  c4 |
               {5} | 0  c   b  a  |

          4                            4
     3 : R  <------------------------ R  : 4
               {3} | a  -b2 c4 0  |
               {6} | -b -a  0  c4 |
               {6} | c  0   -a b2 |
               {6} | 0  c   b  a  |

          4                             4
     4 : R  <------------------------- R  : 5
               {7}  | a  -b2 c4 0  |
               {7}  | -b -a  0  c4 |
               {7}  | c  0   -a b2 |
               {10} | 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, Strategy => Syzygies, LengthLimit => 3)

      1      3      4      4
o9 = R  <-- R  <-- R  <-- R
                           
     0      1      2      3

o9 : Complex
i10 : assert(F1 == naiveTruncation(F,0,3))
i11 : F2 = freeResolution(module I, Strategy => Syzygies, LengthLimit => 3)

       3      4      4      4
o11 = R  <-- R  <-- R  <-- R
                            
      0      1      2      3

o11 : Complex
i12 : dd^F1

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

           3                           4
      1 : R  <----------------------- R  : 2
                {1} | b  0  c  a  |
                {1} | -a c  0  b2 |
                {1} | 0  -b -a c4 |

           4                            4
      2 : R  <------------------------ R  : 3
                {2} | c  0   -a b2 |
                {2} | a  -b2 c4 0  |
                {2} | -b -a  0  c4 |
                {5} | 0  c   b  a  |

o12 : ComplexMap
i13 : dd^F2

           3                           4
o13 = 0 : R  <----------------------- R  : 1
                {1} | b  0  c  a  |
                {1} | -a c  0  b2 |
                {1} | 0  -b -a c4 |

           4                            4
      1 : R  <------------------------ R  : 2
                {2} | c  0   -a b2 |
                {2} | a  -b2 c4 0  |
                {2} | -b -a  0  c4 |
                {5} | 0  c   b  a  |

           4                            4
      2 : R  <------------------------ R  : 3
                {3} | a  -b2 c4 0  |
                {6} | -b -a  0  c4 |
                {6} | c  0   -a b2 |
                {6} | 0  c   b  a  |

o13 : ComplexMap

For completeness, we present an example over an exterior algebra.

i14 : E = kk[a..d, SkewCommutative => true]

o14 = E

o14 : PolynomialRing, 4 skew commutative variable(s)
i15 : I = ideal(a*b-c*d, a*b*c*d)

o15 = ideal (a*b - c*d, a*b*c*d)

o15 : Ideal of E
i16 : M = E^1/I

o16 = cokernel | ab-cd abcd |

                             1
o16 : E-module, quotient of E
i17 : F = freeResolution(M, Strategy => Syzygies, LengthLimit => 4)

       1      2      6      16      35
o17 = E  <-- E  <-- E  <-- E   <-- E
                                    
      0      1      2      3       4

o17 : Complex
i18 : dd^F

           1                      2
o18 = 0 : E  <------------------ E  : 1
                | ab-cd abcd |

           2                                     6
      1 : E  <--------------------------------- E  : 2
                {2} | bd ad bc ac ab+cd -cd |
                {4} | 0  0  0  0  0     1   |

           6                                                 16
      2 : E  <--------------------------------------------- E   : 3
                {4} | d b 0 a 0 c 0 0 0 0 0 0 -a 0  c 0 |
                {4} | 0 0 d b a 0 0 0 c 0 0 0 0  0  0 c |
                {4} | 0 0 0 0 0 d c b 0 0 a 0 0  -a 0 0 |
                {4} | 0 0 0 0 0 0 0 0 d c b a 0  0  0 0 |
                {4} | 0 0 0 0 0 0 0 0 0 0 0 0 d  c  b a |
                {4} | 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0 0 |

           16                                                                                          35
      3 : E   <-------------------------------------------------------------------------------------- E   : 4
                 {5} | d b 0 0 a 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -a 0  0  c  0  0 0 0 0 0 |
                 {5} | 0 d b 0 0 a 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  -a 0  c 0 0 0 0 |
                 {5} | 0 0 0 d b 0 a 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0 c 0 0 0 |
                 {5} | 0 0 0 0 d b 0 a 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0  0  0  0  0  0 0 0 c 0 |
                 {5} | 0 0 0 0 0 0 d b a 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0  0  0  0  0  0 0 0 0 c |
                 {5} | 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 0 0 0 a 0 0 0 0 0 0 0  -a 0  0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 0 0 0 a 0 0 0 0 0 0  0  -a 0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b 0 0 0 0 0 a 0 0 0 0 0  0  0  0  -a 0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 a 0 0 0 0  0  0  0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 a 0 0 0  0  0  0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b 0 0 a 0 0  0  0  0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0  0  0  0  0  0 0 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d  c  0  b  0  0 a 0 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  d  c  0  b  0 0 a 0 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  d  c  b 0 0 a 0 |
                 {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0 d c b a |

o18 : ComplexMap
i19 : assert isWellDefined F
i20 : assert isQuasiIsomorphism(augmentationMap F, Concentration => (0,3))

This strategy works one homological degree at a time. 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.

See also