next | previous | forward | backward | up | index | toc

# layeredResolution -- layered finite and infinite layered resolutions of CM modules

## Synopsis

• Usage:
(FF, aug) = layeredResolution(ff,M)
(FF, aug) = layeredResolution(ff,M,len)
• Inputs:
• ff, , 1 x c matrix whose entries are a regular sequence in the Gorenstein ring S
• M, , MCM module over R, represented as an S-module in the first case and as an R-module in the second
• len, an integer, length of the segment of the resolution to be computed over R, in the second form.
• Optional inputs:
• Check => ..., default value false
• Verbose => ..., default value false
• Outputs:
• FF, , resolution of M over S in the first case; length len segment of the resolution over R in the second.

## Description

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 sufficiently high syzygy of a module N. If the option Verbose=>true is set, then (in the case of the resolution over S) the ranks of the modules B_s in the resolution are output.

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) 0 1 2 3 4 5 total: 4 4 4 4 4 4 2: 3 1 . . . . 3: 1 3 3 1 . . 4: . . 1 3 3 1 5: . . . . 1 3 0 1 2 3 4 5 total: 5 7 9 11 13 15 2: 3 1 . . . . 3: 2 6 6 2 . . 4: . . 3 9 9 3 5: . . . . 4 12 0 1 2 3 4 5 total: 6 10 15 21 28 36 2: 3 1 . . . . 3: 3 9 9 3 . . 4: . . 6 18 18 6 5: . . . . 10 30 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 = M <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 o8 : ChainComplex i9 : apply(4, i ->FF.dd_(i+1)) o9 = {{3} | 0 a -c -b 0 0 0 0 0 0 |, {3} | 0 0 -c2 0 0 0 0 b2 0 {2} | b 0 a2 0 0 0 0 0 0 c2 | {4} | 0 0 0 0 0 0 0 0 0 {2} | -c 0 0 a2 0 0 b2 0 0 0 | {4} | -c2 0 0 0 0 0 0 0 0 {2} | a 0 0 0 b2 0 0 0 c2 0 | {4} | 0 0 0 0 0 0 -b2 0 0 {3} | 0 0 0 0 c b a 0 0 0 | {4} | 0 0 0 0 c2 0 0 -a 0 {3} | 0 0 0 0 0 0 0 c -b a | {4} | 0 0 0 0 0 0 0 0 -a {4} | 0 0 0 0 0 0 a2 c b {4} | 0 -a 0 b 0 c2 0 0 0 {4} | 0 0 a c -b2 0 0 0 0 {4} | a2 c b 0 0 0 0 0 0 ------------------------------------------------------------------------ 0 0 0 0 0 a2 |, {6} | 0 a -c -b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a2 c b 0 | {5} | b 0 a2 0 0 0 0 0 0 c2 0 0 0 0 0 0 0 0 0 a 0 -b | {5} | -c 0 0 a2 0 0 b2 0 0 0 0 0 0 0 0 0 0 0 0 0 a c | {5} | a 0 0 0 b2 0 0 0 c2 0 0 0 0 0 0 0 b 0 0 0 0 0 | {6} | 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 -c b2 0 0 0 0 | {6} | 0 0 0 0 0 0 0 c -b a 0 0 0 0 0 0 0 0 0 0 0 0 | {6} | 0 0 0 0 0 0 0 0 0 0 0 a -c -b 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 c2 0 0 0 b 0 a2 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 -c 0 0 a2 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 -c2 0 0 0 0 a 0 0 0 b2 0 {6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b {6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {5} | 0 c2 0 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 b2 0 0 0 0 {5} | 0 0 0 c2 0 0 0 0 0 0 0 0 -b2 0 0 0 ------------------------------------------------------------------------ 0 0 0 0 0 |, {6} | 0 0 -c2 0 0 0 0 b2 0 0 0 0 0 0 a2 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 0 a2 c b 0 0 0 0 0 0 | {7} | -c2 0 0 0 0 0 0 0 0 0 0 0 a 0 -b 0 0 0 0 0 | {7} | 0 0 0 0 0 0 -b2 0 0 0 0 0 0 a c 0 0 0 0 0 | {7} | 0 0 0 0 c2 0 0 -a 0 b 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 -a -c b2 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 a2 c b 0 0 0 0 0 0 0 0 0 0 0 | {7} | 0 -a 0 b 0 c2 0 0 0 0 0 0 0 0 0 b2 0 0 0 0 | {7} | 0 0 a c -b2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {7} | a2 c b 0 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 0 | {6} | 0 0 0 0 0 0 0 0 -c2 0 0 0 0 0 0 0 0 a -c -b | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b 0 a2 0 | {7} | 0 0 0 0 0 0 -c2 0 0 0 0 0 0 0 0 0 -c 0 0 a2 | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 c2 0 0 0 0 {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 -c2 0 {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {7} | 0 0 0 0 0 0 0 0 0 0 0 -c2 0 0 0 {7} | 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 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 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 | 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 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 b2 0 0 0 0 0 0 a2 0 0 0 0 | 0 0 0 0 0 a2 c b 0 0 0 0 0 | 0 0 0 0 0 0 a 0 -b 0 0 0 0 | -b2 0 0 0 0 0 0 a c 0 0 0 0 | 0 -a 0 b 0 0 0 0 0 0 0 0 0 | 0 0 -a -c b2 0 0 0 0 0 0 0 0 | a2 c b 0 0 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 b2 0 0 0 0 0 a2 | 0 0 0 0 0 0 0 0 0 a2 c b 0 | 0 0 0 0 0 0 0 0 0 0 a 0 -b | 0 0 0 0 0 -b2 0 0 0 0 0 a c | o9 : List i10 : apply(5, j-> prune HH_j C == 0) o10 = {true, true, true, true, true} o10 : List

And one computing the whole finite resolution:

 i11 : MS = pushForward(map(R,S), M); i12 : (GG, aug) = layeredResolution(ff,MS) 6 13 10 3 o12 = (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 | o12 : Sequence i13 : (GG, aug) = layeredResolution(ff,MS, Verbose =>true) {3, 1} in codimension 3 {3, 1} in codimension 2 6 13 10 3 o13 = (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 | o13 : Sequence i14 : betti GG 0 1 2 3 o14 = total: 6 13 10 3 2: 3 1 . . 3: 3 9 . . 4: . . . . 5: . 3 9 . 6: . . . . 7: . . 1 3 o14 : BettiTally i15 : betti res MS 0 1 2 3 o15 = total: 6 13 10 3 2: 3 1 . . 3: 3 9 . . 4: . . . . 5: . 3 9 . 6: . . . . 7: . . 1 3 o15 : BettiTally i16 : C = chainComplex flatten {{aug} |apply(length GG -1, i-> GG.dd_(i+1))} 6 13 10 o16 = MS <-- S <-- S <-- S 0 1 2 3 o16 : ChainComplex i17 : apply(length GG +1 , j-> prune HH_j C == 0) o17 = {true, true, true, false} o17 : List

## Ways to use layeredResolution :

• layeredResolution(Matrix,Module)
• layeredResolution(Matrix,Module,ZZ)

## For the programmer

The object layeredResolution is .