next | previous | forward | backward | up | top | index | toc | Macaulay2 website
ChainComplexExtras :: resolutionOfChainComplex

resolutionOfChainComplex -- free resolution of a chain complex

Synopsis

Description

Given a chain complex C, the routine returns a surjective ChainComplexMap p:F->C from a free complex. The complex F is constructed from minimal free resolutions of the terms of C by the method of iterated mapping cones.

That is, if C: 0 -> Cn ->...->Cm ->0 is a chain complex, and Gi is a resolution of Ci, and [G -> F] denotes the mapping cone of a map of complexes G \to F, then the resolution of C is Gm if n=m; is [Gn->Gm] if n = m+1 and otherwise is defined inductively as Fi = [Gi -> F(i-1)] where the map Gi -> F(i-1) is induced by lifing Gi_0 --> G(i-1)_0 to the kernel of the (i-1)-st differential of F(i-1).

The complex F = source p is not necessarily minimal, but minimize F returns a morphism to a minimal free chain complex quasi-isomorphic to F, and dual minimimize dual F returns a quasi-isomorphism from a minimal free complex, so

p*(dual minimimize dual F)

is the quasi-isomorphism from the minimal free resolution of C.

i1 : kk= ZZ/101

o1 = kk

o1 : QuotientRing
i2 : S = kk[a,b,c]

o2 = S

o2 : PolynomialRing
i3 : R = S/ideal"ab2,a2c3"

o3 = R

o3 : QuotientRing
i4 : f = map(R,S,vars R)

o4 = map (R, S, {a, b, c})

o4 : RingMap R <--- S
i5 : C = res(R^1/(ideal vars R))**(R^1/(ideal vars R)^5);
i6 : mods = for i from 0 to max C list pushForward(f, C_i);
i7 : C = chainComplex for i from min C+1 to max C list map(mods_(i-1),mods_i,substitute(matrix C.dd_i,S));
i8 : time m = resolutionOfChainComplex C;
     -- used 0.10721 seconds
i9 : time n = cartanEilenbergResolution C;
     -- used 0.194146 seconds
i10 : betti source m

             0  1  2   3   4   5   6   7
o10 = total: 1 19 80 181 312 484 447 156
          0: 1  3  3   1   .   .   .   .
          1: .  .  1   3   3   .   .   .
          2: .  1  3   3   2   .   .   .
          3: .  .  1   4   6   3   .   .
          4: . 15 72 139 137  64  12   .
          5: .  .  .  16  75 141 117  36
          6: .  .  .   .   2  20  27  12
          7: .  .  .  15  72 138 117  36
          8: .  .  .   .  15 103 147  60
          9: .  .  .   .   .   .   .   .
         10: .  .  .   .   .  15  27  12

o10 : BettiTally
i11 : betti source n

             0  1   2   3   4   5   6   7
o11 = total: 1 38 133 266 450 571 447 156
          0: 1  3   6   2   .   .   .   .
          1: .  3   3   6   6   1   .   .
          2: .  2   6   6   4   3   .   .
          3: .  .  16  35  25   4   .   .
          4: . 30 102 155 154 100  12   .
          5: .  .   .  32 111 142 117  36
          6: .  .   .   .  18  50  27  12
          7: .  .   .  30 102 153 117  36
          8: .  .   .   .  30 103 147  60
          9: .  .   .   .   .   .   .   .
         10: .  .   .   .   .  15  27  12

o11 : BettiTally
i12 : betti target minimize source n

             0  1  2   3   4   5   6   7
o12 = total: 1 17 72 165 302 484 447 156
          0: 1  3  3   1   .   .   .   .
          1: .  .  .   .   .   .   .   .
          2: .  .  .   .   1   .   .   .
          3: .  .  .   .   3   3   .   .
          4: . 14 69 136 135  64  12   .
          5: .  .  .  14  75 141 117  36
          6: .  .  .   .   1  20  27  12
          7: .  .  .  14  72 138 117  36
          8: .  .  .   .  15 103 147  60
          9: .  .  .   .   .   .   .   .
         10: .  .  .   .   .  15  27  12

o12 : BettiTally

The resolution of a free complex is of course the same complex. resolutionOfChainComplex returns this minimal object directly, but cartanEilenbergResolution does not:

i13 : C=koszul (gens (ideal vars S)^2)

       1      6      15      20      15      6      1
o13 = S  <-- S  <-- S   <-- S   <-- S   <-- S  <-- S
                                                    
      0      1      2       3       4       5      6

o13 : ChainComplex
i14 : betti source resolutionOfChainComplex C

             0 1  2  3  4 5 6
o14 = total: 1 6 15 20 15 6 1
          0: 1 .  .  .  . . .
          1: . 6  .  .  . . .
          2: . . 15  .  . . .
          3: . .  . 20  . . .
          4: . .  .  . 15 . .
          5: . .  .  .  . 6 .
          6: . .  .  .  . . 1

o14 : BettiTally
i15 : betti source cartanEilenbergResolution C

             0  1  2  3  4  5 6
o15 = total: 1 14 39 54 39 13 2
          0: 1  .  .  .  .  . .
          1: .  6  8  .  .  . .
          2: .  8 15  6  .  . .
          3: .  .  6 30  .  . .
          4: .  . 10  . 33  . .
          5: .  .  . 18  . 12 .
          6: .  .  .  .  6  . 2
          7: .  .  .  .  .  1 .

o15 : BettiTally

See also

Ways to use resolutionOfChainComplex :

For the programmer

The object resolutionOfChainComplex is a method function with options.