# makeFiniteResolution -- finite resolution of a matrix factorization module M

## Synopsis

• Usage:
A = makeFiniteResolution(ff,mf)
• Inputs:
• mf, a list, output of matrixFactorization
• ff, , the regular sequence used for the matrixFactorization computation
• Outputs:
• A, , A is the minimal finite resolution of M over R.

## Description

Suppose that f_1..f_c is a homogeneous regular sequence of forms of the same degree in a polynomial ring S and M is a high syzygy module over S/(f_1,..,f_c) = R(c), and mf = (d,h) is the output of matrixFactorization(M,ff). If the complexity of M is c', then M has a finite free resolution over R = S/(f_1,..,f_{(c-c')}) (and, more generally, has complexity c-d over S/(f_1,..,f_{(c-d)}) for d>=c').

The complex A is the minimal finite free resolution of M over A, constructed as an iterated Koszul extension, made from the maps in bMaps mf and psiMaps mf, as described in Eisenbud-Peeva.

 i1 : setRandomSeed 0 o1 = 0 i2 : S = ZZ/101[a,b,c]; i3 : ff = matrix"a3,b3"; 1 2 o3 : Matrix S <--- S i4 : R = S/ideal ff; i5 : M = highSyzygy (R^1/ideal vars R); i6 : mf = matrixFactorization (ff, M) o6 = {{4} | -c b 0 a2 0 0 0 0 0 |, {5} | 0 a2 0 -b 0 0 0 0 0 0 {4} | a 0 b 0 0 0 0 0 0 | {5} | 0 0 a2 -c b2 0 0 0 0 0 {4} | 0 a c 0 0 0 0 0 -b2 | {5} | 0 0 0 a 0 b2 0 0 0 0 {3} | 0 0 a2 0 0 b2 0 0 0 | {6} | a c -b 0 0 0 0 0 0 0 {4} | 0 0 0 0 b -a 0 0 0 | {5} | 0 0 0 0 0 0 0 a b2 0 {4} | 0 0 0 0 -c 0 a b2 0 | {5} | 0 0 0 0 0 -a2 0 b 0 0 {4} | 0 0 0 0 0 c -b 0 a2 | {5} | 0 0 0 0 0 0 -a2 c 0 0 {6} | 0 0 0 0 0 0 0 0 c b {6} | 0 0 0 0 a c -b 0 0 0 ------------------------------------------------------------------------ 0 |, {3} | 0 0 0 1 0 0 0 |} 0 | {4} | 0 0 0 0 1 0 0 | 0 | {4} | 0 0 0 0 0 1 0 | 0 | {4} | 0 0 0 0 0 0 1 | 0 | {4} | 0 1 0 0 0 0 0 | 0 | {4} | 0 0 -1 0 0 0 0 | -b2 | {4} | 1 0 0 0 0 0 0 | a | 0 | o6 : List i7 : G = makeFiniteResolution(ff,mf) 7 12 5 o7 = S <-- S <-- S 0 1 2 o7 : ChainComplex i8 : F = res pushForward(map(R,S),M) 7 12 5 o8 = S <-- S <-- S <-- 0 0 1 2 3 o8 : ChainComplex i9 : G.dd_1 o9 = {4} | -c b 0 a2 0 0 0 0 0 0 0 0 | {4} | a 0 b 0 0 0 0 0 0 0 0 0 | {4} | 0 a c 0 0 0 0 0 -b2 0 0 0 | {3} | 0 0 a2 0 0 b2 0 0 0 0 0 0 | {4} | 0 0 0 0 b -a 0 0 0 -a3 0 0 | {4} | 0 0 0 0 -c 0 a b2 0 0 -a3 0 | {4} | 0 0 0 0 0 c -b 0 a2 0 0 -a3 | 7 12 o9 : Matrix S <--- S i10 : F.dd_1 o10 = {3} | a2 b2 0 0 0 0 0 0 0 0 0 0 | {4} | 0 -a 0 0 0 b 0 0 0 0 0 0 | {4} | 0 0 a 0 0 -c 0 0 b2 0 0 0 | {4} | 0 c -b 0 0 0 a2 0 0 0 0 0 | {4} | b 0 0 a 0 0 0 0 0 b3 0 0 | {4} | -c 0 0 0 a 0 b2 0 0 0 b3 0 | {4} | 0 0 0 -c -b 0 0 a2 0 0 0 b3 | 7 12 o10 : Matrix S <--- S i11 : G.dd_2 o11 = {5} | 0 -b3 0 0 0 | {5} | 0 -b2c 0 0 -a2b2 | {5} | 0 ab2 0 0 0 | {6} | 0 0 0 0 b3 | {5} | -a3 0 0 0 0 | {5} | 0 -a3 0 0 0 | {5} | 0 0 -a3 0 0 | {6} | 0 0 0 -a3 0 | {6} | 0 0 0 0 -a3 | {7} | -b a 0 0 0 | {7} | c 0 -a -b2 0 | {7} | 0 -c b 0 -a2 | 12 5 o11 : Matrix S <--- S i12 : F.dd_2 o12 = {5} | b3 0 0 0 0 | {5} | -a2b 0 0 0 0 | {5} | -a2c 0 0 -a2b2 0 | {5} | 0 -b3 0 0 0 | {5} | 0 0 -b3 0 0 | {5} | -a3 0 0 0 0 | {6} | 0 0 0 -b3 0 | {6} | 0 0 0 0 -b3 | {6} | 0 0 0 a3 0 | {7} | -b a 0 0 0 | {7} | c 0 a b2 0 | {7} | 0 -c -b 0 a2 | 12 5 o12 : Matrix S <--- S

If the complexity of M is not maximal, then the finite resolution takes place over an intermediate complete intersection:

 i13 : S = ZZ/101[a,b,c,d] o13 = S o13 : PolynomialRing i14 : ff1 = matrix"a3,b3,c3,d3" o14 = | a3 b3 c3 d3 | 1 4 o14 : Matrix S <--- S i15 : ff =ff1*random(source ff1, source ff1) o15 = | 24a3-36b3-30c3-29d3 19a3+19b3-10c3-29d3 -8a3-22b3-29c3-24d3 ----------------------------------------------------------------------- -38a3-16b3+39c3+21d3 | 1 4 o15 : Matrix S <--- S i16 : R = S/ideal ff o16 = R o16 : QuotientRing i17 : M = highSyzygy (R^1/ideal"a2b2") o17 = cokernel {6} | b2 0 -a2 0 | {7} | a b 0 0 | {7} | 0 0 b a | 3 o17 : R-module, quotient of R i18 : complexity M o18 = 2 i19 : mf = matrixFactorization (ff, M) o19 = {{7} | -a -36b 0 a |, {8} | 35a2 48b 0 -33b 0 |, {6} | 0 36 {6} | b2 a2 0 0 | {8} | -35b2 -35a 0 0 0 | {7} | -36 0 {7} | 0 0 b a | {8} | 0 0 33b2 33a -33b2 | {7} | 1 0 {8} | 0 0 -43a2 -33b 0 | ----------------------------------------------------------------------- 0 |} 36 | 0 | o19 : List i20 : complexity mf o20 = 2 i21 : BRanks mf o21 = {{2, 2}, {1, 2}} o21 : List i22 : G = makeFiniteResolution(ff,mf); i23 : codim ring G o23 = 2 i24 : R1 = ring G o24 = R1 o24 : QuotientRing i25 : F = res prune pushForward(map(R,R1),M) 3 5 2 o25 = R1 <-- R1 <-- R1 <-- 0 0 1 2 3 o25 : ChainComplex i26 : betti F 0 1 2 o26 = total: 3 5 2 6: 1 . . 7: 2 4 . 8: . . . 9: . 1 2 o26 : BettiTally i27 : betti G 0 1 2 o27 = total: 3 5 2 6: 1 . . 7: 2 4 . 8: . . . 9: . 1 2 o27 : BettiTally

• matrixFactorization -- Maps in a higher codimension matrix factorization
• bMaps -- list the maps d_p:B_1(p)-->B_0(p) in a matrixFactorization
• psiMaps -- list the maps psi(p): B_1(p) --> A_0(p-1) in a matrixFactorization
• hMaps -- list the maps h(p): A_0(p)--> A_1(p) in a matrixFactorization
• complexity -- complexity of a module over a complete intersection

## Ways to use makeFiniteResolution :

• "makeFiniteResolution(Matrix,List)"

## For the programmer

The object makeFiniteResolution is .