next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Complexes :: freeResolution

freeResolution -- compute a free resolution of a module or ideal

Synopsis

Description

A free resolution of a module $M$ is a complex $ F_0 \leftarrow F_1 \leftarrow F_2 \leftarrow \ldots$ of free modules, which is acyclic: the cokernel of the map to $F_0$ is $M$ and the complex is exact at all other locations.

i1 : R = QQ[a..d]

o1 = R

o1 : PolynomialRing
i2 : I = ideal(c^2-b*d, b*c-a*d, b^2-a*c)

             2                    2
o2 = ideal (c  - b*d, b*c - a*d, b  - a*c)

o2 : Ideal of R
i3 : M = R^1/I

o3 = cokernel | c2-bd bc-ad b2-ac |

                            1
o3 : R-module, quotient of R
i4 : C = freeResolution M

      1      3      2
o4 = R  <-- R  <-- R
                    
     0      1      2

o4 : Complex
i5 : betti C

            0 1 2
o5 = total: 1 3 2
         0: 1 . .
         1: . 3 2

o5 : BettiTally
i6 : length C

o6 = 2
i7 : dd^C

          1                             3
o7 = 0 : R  <------------------------- R  : 1
               | b2-ac bc-ad c2-bd |

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

o7 : ComplexMap
i8 : assert isWellDefined C
i9 : assert(prune HH C == complex M)

Giving an ideal as the input produces a free resolution not of the module I, but of the module R^1/I.

i10 : assert(freeResolution I == C)
i11 : resolution complex M == freeResolution M

o11 = true

Over a quotient ring, free resolutions are often infinite. Use the optional argument LengthLimit to obtain part of the resolution.

i12 : S = ZZ/101[a,b]

o12 = S

o12 : PolynomialRing
i13 : R = S/(a^3+b^3)

o13 = R

o13 : QuotientRing
i14 : C = freeResolution (coker vars R, LengthLimit => 7)

       1      2      2      2      2      2      2      2
o14 = R  <-- R  <-- R  <-- R  <-- R  <-- R  <-- R  <-- R
                                                        
      0      1      2      3      4      5      6      7

o14 : Complex
i15 : dd^C

           1               2
o15 = 0 : R  <----------- R  : 1
                | a b |

           2                     2
      1 : R  <----------------- R  : 2
                {1} | -b a2 |
                {1} | a  b2 |

           2                      2
      2 : R  <------------------ R  : 3
                {2} | a2 -b2 |
                {3} | b  a   |

           2                     2
      3 : R  <----------------- R  : 4
                {4} | -a b2 |
                {4} | b  a2 |

           2                      2
      4 : R  <------------------ R  : 5
                {5} | -a2 b2 |
                {6} | b   a  |

           2                     2
      5 : R  <----------------- R  : 6
                {7} | -a b2 |
                {7} | b  a2 |

           2                      2
      6 : R  <------------------ R  : 7
                {8} | -a2 b2 |
                {9} | b   a  |

o15 : ComplexMap

See also

Ways to use freeResolution :

For the programmer

The object freeResolution is a method function with options.