The resolutions computed are those described in the paper "Layered Resolutions of Cohen-Macaulay modules" by Eisenbud and Peeva. They are both minimal when M is a suffiently high syzygy of a module N. Here is an example computing 5 terms of an infinite resolution:
i1 : S = ZZ/101[a,b,c] o1 = S o1 : PolynomialRing |
i2 : ff = matrix"a3, b3, c3" o2 = | a3 b3 c3 | 1 3 o2 : Matrix S <--- S |
i3 : R = S/ideal ff o3 = R o3 : QuotientRing |
i4 : M = syzygyModule(2,coker vars R) o4 = cokernel {2} | a 0 -c2 0 b2 0 0 0 0 0 | {2} | -b 0 0 -c2 0 0 0 a2 0 0 | {2} | c 0 0 0 0 0 -b2 0 a2 0 | {3} | 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 c b a | 6 o4 : R-module, quotient of R |
i5 : (FF, aug) = layeredResolution(ff,M,5) 6 10 15 21 28 36 o5 = (R <-- R <-- R <-- R <-- R <-- R , {2} | 0 0 0 1 0 0 |) {2} | 0 1 0 0 0 0 | 0 1 2 3 4 5 {2} | 0 0 1 0 0 0 | {3} | 0 0 0 0 0 1 | {3} | 0 0 0 0 -1 0 | {3} | 1 0 0 0 0 0 | o5 : Sequence |
i6 : betti FF 0 1 2 3 4 5 o6 = total: 6 10 15 21 28 36 2: 3 1 . . . . 3: 3 9 9 3 . . 4: . . 6 18 18 6 5: . . . . 10 30 o6 : BettiTally |
i7 : betti res(M, LengthLimit=>5) 0 1 2 3 4 5 o7 = total: 6 10 15 21 28 36 2: 3 1 . . . . 3: 3 9 9 3 . . 4: . . 6 18 18 6 5: . . . . 10 30 o7 : BettiTally |
i8 : C = chainComplex flatten {{aug} |apply(4, i-> FF.dd_(i+1))} 6 10 15 21 28 o8 = cokernel {2} | a 0 -c2 0 b2 0 0 0 0 0 | <-- R <-- R <-- R <-- R <-- R {2} | -b 0 0 -c2 0 0 0 a2 0 0 | {2} | c 0 0 0 0 0 -b2 0 a2 0 | 1 2 3 4 5 {3} | 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 c b a | 0 o8 : ChainComplex |
i9 : apply(5, j-> prune HH_j C == 0) o9 = {true, true, true, true, true} o9 : List |
And one computing the whole finite resolution:
i10 : MS = pushForward(map(R,S), M); |
i11 : (GG, aug) = layeredResolution(ff,MS) 6 13 10 3 o11 = (S <-- S <-- S <-- S , {2} | 0 0 0 1 0 0 |) {2} | 0 1 0 0 0 0 | 0 1 2 3 {2} | 0 0 1 0 0 0 | {3} | 0 0 0 0 0 1 | {3} | 0 0 0 0 -1 0 | {3} | 1 0 0 0 0 0 | o11 : Sequence |
i12 : betti GG 0 1 2 3 o12 = total: 6 13 10 3 2: 3 1 . . 3: 3 9 . . 4: . . . . 5: . 3 9 . 6: . . . . 7: . . 1 3 o12 : BettiTally |
i13 : betti res MS 0 1 2 3 o13 = total: 6 13 10 3 2: 3 1 . . 3: 3 9 . . 4: . . . . 5: . 3 9 . 6: . . . . 7: . . 1 3 o13 : BettiTally |
i14 : C = chainComplex flatten {{aug} |apply(length GG -1, i-> GG.dd_(i+1))} 6 13 10 o14 = cokernel {2} | 0 0 a 0 c2 0 b2 0 0 0 0 0 0 0 0 0 0 0 | <-- S <-- S <-- S {2} | 0 0 -b 0 0 c2 0 0 a2 0 0 0 0 b3 0 0 0 0 | {2} | 0 0 c 0 0 0 0 b2 0 a2 c3 0 0 0 0 0 0 0 | 1 2 3 {3} | c 0 0 0 -b -a 0 0 0 0 0 0 0 0 b3 0 a3 0 | {3} | 0 b 0 0 0 0 c -a 0 0 0 c3 0 0 0 0 0 a3 | {3} | 0 0 0 a 0 0 0 0 c b 0 0 c3 0 0 b3 0 0 | 0 o14 : ChainComplex |
i15 : apply(length GG +1 , j-> prune HH_j C == 0) o15 = {true, true, true, false} o15 : List |