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

# Strategy for free resolutions via syzygies -- algorithm for computing free resolutions step by step using syzygies

## Synopsis

• Usage:
freeResolution(M, Strategy => Syzygies)
freeResolution(I, Strategy => Syzygies)
• Inputs:
• M, , a module over a ring $R$
• I, an ideal, an ideal in $R$
• Outputs:
• , a free resolution of $M$ or $R^1/I$

## Description

This is one of the algorithms written at top level of Macaulay2 for computing free resolutions, although it uses engine code to compute syzygies. This variant works over most rings in Macaulay2, including Weyl algebras and exterior algebras.

This first example computes part of the free resolution of the ground field over a inhomogeneous $E_8$ singularity.

 i1 : kk = ZZ/32003; i2 : R = kk[a,b,c]/(a^2+b^3+c^5); i3 : I = ideal(a,b,c) o3 = ideal (a, b, c) o3 : Ideal of R i4 : M = R^1/I o4 = cokernel | a b c | 1 o4 : R-module, quotient of R i5 : F = freeResolution(M, Strategy => Syzygies, LengthLimit => 5) 1 3 4 4 4 4 o5 = R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 o5 : Complex i6 : dd^F 1 3 o6 = 0 : R <------------- R : 1 | a b c | 3 4 1 : R <----------------------- R : 2 {1} | b 0 c a | {1} | -a c 0 b2 | {1} | 0 -b -a c4 | 4 4 2 : R <------------------------ R : 3 {2} | c 0 -a b2 | {2} | a -b2 c4 0 | {2} | -b -a 0 c4 | {5} | 0 c b a | 4 4 3 : R <------------------------ R : 4 {3} | a -b2 c4 0 | {6} | -b -a 0 c4 | {6} | c 0 -a b2 | {6} | 0 c b a | 4 4 4 : R <------------------------- R : 5 {7} | a -b2 c4 0 | {7} | -b -a 0 c4 | {7} | c 0 -a b2 | {10} | 0 c b a | o6 : ComplexMap i7 : assert isWellDefined F i8 : assert isQuasiIsomorphism(augmentationMap F, Concentration => (0,4))

When the input is an ideal $I$, the free resolution of $R^1/I$ is returned.

 i9 : F1 = freeResolution(I, Strategy => Syzygies, LengthLimit => 3) 1 3 4 4 o9 = R <-- R <-- R <-- R 0 1 2 3 o9 : Complex i10 : assert(F1 == naiveTruncation(F,0,3)) i11 : F2 = freeResolution(module I, Strategy => Syzygies, LengthLimit => 3) 3 4 4 4 o11 = R <-- R <-- R <-- R 0 1 2 3 o11 : Complex i12 : dd^F1 1 3 o12 = 0 : R <------------- R : 1 | a b c | 3 4 1 : R <----------------------- R : 2 {1} | b 0 c a | {1} | -a c 0 b2 | {1} | 0 -b -a c4 | 4 4 2 : R <------------------------ R : 3 {2} | c 0 -a b2 | {2} | a -b2 c4 0 | {2} | -b -a 0 c4 | {5} | 0 c b a | o12 : ComplexMap i13 : dd^F2 3 4 o13 = 0 : R <----------------------- R : 1 {1} | b 0 c a | {1} | -a c 0 b2 | {1} | 0 -b -a c4 | 4 4 1 : R <------------------------ R : 2 {2} | c 0 -a b2 | {2} | a -b2 c4 0 | {2} | -b -a 0 c4 | {5} | 0 c b a | 4 4 2 : R <------------------------ R : 3 {3} | a -b2 c4 0 | {6} | -b -a 0 c4 | {6} | c 0 -a b2 | {6} | 0 c b a | o13 : ComplexMap

For completeness, we present an example over an exterior algebra.

 i14 : E = kk[a..d, SkewCommutative => true] o14 = E o14 : PolynomialRing, 4 skew commutative variable(s) i15 : I = ideal(a*b-c*d, a*b*c*d) o15 = ideal (a*b - c*d, a*b*c*d) o15 : Ideal of E i16 : M = E^1/I o16 = cokernel | ab-cd abcd | 1 o16 : E-module, quotient of E i17 : F = freeResolution(M, Strategy => Syzygies, LengthLimit => 4) 1 2 6 16 35 o17 = E <-- E <-- E <-- E <-- E 0 1 2 3 4 o17 : Complex i18 : dd^F 1 2 o18 = 0 : E <------------------ E : 1 | ab-cd abcd | 2 6 1 : E <--------------------------------- E : 2 {2} | bd ad bc ac ab+cd -cd | {4} | 0 0 0 0 0 1 | 6 16 2 : E <--------------------------------------------- E : 3 {4} | d b 0 a 0 c 0 0 0 0 0 0 -a 0 c 0 | {4} | 0 0 d b a 0 0 0 c 0 0 0 0 0 0 c | {4} | 0 0 0 0 0 d c b 0 0 a 0 0 -a 0 0 | {4} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 16 35 3 : E <-------------------------------------------------------------------------------------- E : 4 {5} | d b 0 0 a 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -a 0 0 c 0 0 0 0 0 0 | {5} | 0 d b 0 0 a 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -a 0 c 0 0 0 0 | {5} | 0 0 0 d b 0 a 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 | {5} | 0 0 0 0 d b 0 a 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 | {5} | 0 0 0 0 0 0 d b a 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 c | {5} | 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 0 0 0 a 0 0 0 0 0 0 0 -a 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 0 0 0 a 0 0 0 0 0 0 0 -a 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b 0 0 0 0 0 a 0 0 0 0 0 0 0 0 -a 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c 0 b 0 0 a 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 0 0 0 0 0 d c 0 b 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b 0 0 a 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 | {5} | 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 d c 0 b 0 0 a 0 0 0 | {5} | 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 d c 0 b 0 0 a 0 0 | {5} | 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 d c b 0 0 a 0 | {5} | 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 d c b a | o18 : ComplexMap i19 : assert isWellDefined F i20 : assert isQuasiIsomorphism(augmentationMap F, Concentration => (0,3))

This strategy works one homological degree at a time. It first computes the syzygies of the presentation matrix, and then computes the second syzygies, and so on. This strategy uses Schreyer orders on the free modules in the resolution which often improves efficiency.