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
|