# Strategy for free resolutions of homogeneous modules via successive syzygies -- algorithm for computing free resolutions step by step

## Synopsis

• Usage:
freeResolution(M, Strategy => 2)
freeResolution(I, Strategy => 2)
• Inputs:
• M, , a homogeneous module over $S$, a (quotient of a) polynomial ring
• I, an ideal, a homogeneous ideal in $S$
• Outputs:
• , a minimal free resolution of $M$ or $S^1/I$

## Description

This is one of the algorithms in the engine of Macaulay2 for computing minimal free resolutions. This is the default variant when the ring $S$ is a homogeneous quotient of an almost commutative polynomial ring over a base field. In particular, this variant applies to homogeneous modules over a homogenized Weyl algebra or an exterior algebra.

This first example computes part of the minimal free resolution of the ground field over a hypersurface ring.

 i1 : kk = ZZ/32003; i2 : R = kk[a..d]/(a^2+b^2+c^2+d^2); i3 : I = ideal(a,b,c,d) o3 = ideal (a, b, c, d) o3 : Ideal of R i4 : M = R^1/I o4 = cokernel | a b c d | 1 o4 : R-module, quotient of R i5 : F = freeResolution(M, LengthLimit => 5) 1 4 7 8 8 8 o5 = R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 o5 : Complex i6 : dd^F 1 4 o6 = 0 : R <--------------- R : 1 | a b c d | 4 7 1 : R <------------------------------- R : 2 {1} | 0 0 -d 0 -c -b a | {1} | 0 -d 0 -c 0 a b | {1} | -d 0 0 b a 0 c | {1} | c b a 0 0 0 d | 7 8 2 : R <---------------------------------- R : 3 {2} | b a 0 0 c -d 0 0 | {2} | -c 0 a 0 b 0 -d 0 | {2} | 0 -c -b 0 a 0 0 -d | {2} | d 0 0 a 0 b -c 0 | {2} | 0 d 0 -b 0 a 0 -c | {2} | 0 0 d c 0 0 a -b | {2} | 0 0 0 0 d c b a | 8 8 3 : R <---------------------------------- R : 4 {3} | -a -b c 0 -d 0 0 0 | {3} | b -a 0 c 0 -d 0 0 | {3} | -c 0 -a b 0 0 -d 0 | {3} | d 0 0 0 -a b -c 0 | {3} | 0 -c -b -a 0 0 0 d | {3} | 0 d 0 0 -b -a 0 c | {3} | 0 0 d 0 c 0 -a b | {3} | 0 0 0 d 0 c b a | 8 8 4 : R <---------------------------------- R : 5 {4} | a -b c 0 -d 0 0 0 | {4} | b a 0 -c 0 d 0 0 | {4} | -c 0 a -b 0 0 d 0 | {4} | 0 -c -b -a 0 0 0 d | {4} | d 0 0 0 a -b c 0 | {4} | 0 d 0 0 -b -a 0 c | {4} | 0 0 d 0 c 0 -a b | {4} | 0 0 0 d 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, LengthLimit => 5) 1 4 7 8 8 8 o9 = R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 o9 : Complex i10 : assert(F1 == F) i11 : F2 = freeResolution(module I, LengthLimit => 5) 4 7 8 8 8 8 o11 = R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 o11 : Complex i12 : dd^F1 1 4 o12 = 0 : R <--------------- R : 1 | a b c d | 4 7 1 : R <------------------------------- R : 2 {1} | 0 0 -d 0 -c -b a | {1} | 0 -d 0 -c 0 a b | {1} | -d 0 0 b a 0 c | {1} | c b a 0 0 0 d | 7 8 2 : R <---------------------------------- R : 3 {2} | b a 0 0 c -d 0 0 | {2} | -c 0 a 0 b 0 -d 0 | {2} | 0 -c -b 0 a 0 0 -d | {2} | d 0 0 a 0 b -c 0 | {2} | 0 d 0 -b 0 a 0 -c | {2} | 0 0 d c 0 0 a -b | {2} | 0 0 0 0 d c b a | 8 8 3 : R <---------------------------------- R : 4 {3} | -a -b c 0 -d 0 0 0 | {3} | b -a 0 c 0 -d 0 0 | {3} | -c 0 -a b 0 0 -d 0 | {3} | d 0 0 0 -a b -c 0 | {3} | 0 -c -b -a 0 0 0 d | {3} | 0 d 0 0 -b -a 0 c | {3} | 0 0 d 0 c 0 -a b | {3} | 0 0 0 d 0 c b a | 8 8 4 : R <---------------------------------- R : 5 {4} | a -b c 0 -d 0 0 0 | {4} | b a 0 -c 0 d 0 0 | {4} | -c 0 a -b 0 0 d 0 | {4} | 0 -c -b -a 0 0 0 d | {4} | d 0 0 0 a -b c 0 | {4} | 0 d 0 0 -b -a 0 c | {4} | 0 0 d 0 c 0 -a b | {4} | 0 0 0 d 0 c b a | o12 : ComplexMap i13 : dd^F2 4 7 o13 = 0 : R <------------------------------- R : 1 {1} | -b 0 -c a 0 0 -d | {1} | a -c 0 b 0 -d 0 | {1} | 0 b a c -d 0 0 | {1} | 0 0 0 d c b a | 7 8 1 : R <---------------------------------- R : 2 {2} | 0 0 -c -d a 0 b 0 | {2} | -d 0 -a 0 -c b 0 0 | {2} | 0 -d b 0 0 a c 0 | {2} | 0 0 0 0 b c -a d | {2} | -b -a 0 0 0 -d 0 c | {2} | c 0 0 -a -d 0 0 b | {2} | 0 c 0 b 0 0 d a | 8 8 2 : R <---------------------------------- R : 3 {3} | a -b -d 0 c 0 0 0 | {3} | -b -a 0 0 0 0 -d c | {3} | -d 0 -a 0 0 -c b 0 | {3} | c 0 0 0 -a -d 0 b | {3} | 0 0 -c -b -d a 0 0 | {3} | 0 -d b -c 0 0 a 0 | {3} | 0 0 0 a 0 b c d | {3} | 0 c 0 -d b 0 0 a | 8 8 3 : R <---------------------------------- R : 4 {4} | a -b -d c 0 0 0 0 | {4} | -b -a 0 0 0 0 -d c | {4} | -d 0 -a 0 0 -c b 0 | {4} | 0 0 0 0 a -b -c -d | {4} | c 0 0 -a 0 -d 0 b | {4} | 0 0 -c -d b a 0 0 | {4} | 0 -d b 0 c 0 a 0 | {4} | 0 c 0 b d 0 0 a | 8 8 4 : R <---------------------------------- R : 5 {5} | a -b 0 -d c 0 0 0 | {5} | -b -a 0 0 0 0 -d c | {5} | -d 0 0 -a 0 -c b 0 | {5} | c 0 0 0 -a -d 0 b | {5} | 0 0 -a 0 0 b c d | {5} | 0 0 b -c -d a 0 0 | {5} | 0 -d c b 0 0 a 0 | {5} | 0 c d 0 b 0 0 a | o13 : ComplexMap

This strategy also works when the underlying ring is simply a polynomial ring, but is often slower than Strategy 1. However, unlike Strategy 1, this strategy preserves the given presentation of the module, which can be desirable.

 i14 : S = kk[a..e] o14 = S o14 : PolynomialRing i15 : J = ideal(a^3-e^3, a*b^2-c*e^2, a*b*c, a*b*c + a^3 - e^3) 3 3 2 2 3 3 o15 = ideal (a - e , a*b - c*e , a*b*c, a + a*b*c - e ) o15 : Ideal of S i16 : assert isHomogeneous J i17 : C2 = freeResolution(J, Strategy => 2) 1 4 5 2 o17 = S <-- S <-- S <-- S 0 1 2 3 o17 : Complex i18 : C1 = freeResolution ideal J_* 1 3 4 2 o18 = S <-- S <-- S <-- S 0 1 2 3 o18 : Complex i19 : assert isWellDefined C2 i20 : betti C2 0 1 2 3 o20 = total: 1 4 5 2 0: 1 . . . 1: . . 1 . 2: . 4 . . 3: . . . . 4: . . 4 1 5: . . . 1 o20 : BettiTally i21 : betti C1 0 1 2 3 o21 = total: 1 3 4 2 0: 1 . . . 1: . . . . 2: . 3 . . 3: . . . . 4: . . 4 1 5: . . . 1 o21 : BettiTally i22 : assert(dd^C2_1 == gens J) i23 : assert(dd^C1_1 != gens J)

For completeness, we present an example over a homogenized Weyl algebra.

 i24 : W = kk[x,y,z,dx,dy,dz,h, WeylAlgebra => {x => dx, y => dy, z => dz, h}] o24 = W o24 : PolynomialRing, 4 differential variable(s) and one homogenizing variable i25 : I = ideal(x*dy-y*dz, x*y*dy*dz) o25 = ideal (x*dy - y*dz, x*y*dy*dz) o25 : Ideal of W i26 : M = W^1/I o26 = cokernel | xdy-ydz xydydz | 1 o26 : W-module, quotient of W i27 : F = freeResolution(M, Strategy => 2) 1 2 2 1 o27 = W <-- W <-- W <-- W 0 1 2 3 o27 : Complex i28 : dd^F 1 2 o28 = 0 : W <---------------------- W : 1 | xdy-ydz xydydz | 2 2 1 : W <-------------------------------------------------------------- W : 2 {2} | -xy2dydz+xydzh2 -x2ydy^3dz-xy2dy^2dz^2-3x2dy^2dzh2 | {4} | xydy-y2dz-2xh2 x2dy^3-y2dydz^2-6xdydzh2-ydz^2h2 | 2 1 2 : W <----------------------------- W : 3 {7} | -xdy^2-ydydz+dzh2 | {9} | y | o28 : ComplexMap i29 : assert isWellDefined F i30 : assert isQuasiIsomorphism augmentationMap F

This strategy works degree by degree. Within each degree, 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.

Although similar to Strategy 3, this strategy does not use Hilbert functions to aid the computation.