This is the main the algorithm in the engine of Macaulay2 for computing nonminimal free resolutions of possibly inhomogeneous modules and ideals over a polynomial ring or exterior algebra defined over a finite field. For homogeneous ideals and modules over such rings, this variant generally computes a non-minimal resolution much faster than engine routines that return a minimal free resolution. In particular, this algorithm is used by minimalBetti for faster computation of Betti tables.
i1 : kk = ZZ/32003;
|
i2 : R = kk[a..f];
|
i3 : I = ideal(a*b*c-d*e*f, a*b*f-c*d*e, a*b*d-c^3)
3
o3 = ideal (a*b*c - d*e*f, - c*d*e + a*b*f, - c + a*b*d)
o3 : Ideal of R
|
i4 : F = freeResolution(I, Strategy => Nonminimal)
1 7 10 4
o4 = R <-- R <-- R <-- R
0 1 2 3
o4 : Complex
|
i5 : dd^F
1 7
o5 = 0 : R <--------------------------------------------------------------------------- R : 1
| abc-def c3-abd cde-abf a2b2d-def3 abd2e-abf3 a2b2f-d2e2f d3e2f-def4 |
7 10
1 : R <------------------------------------------------------------------- R : 2
{3} | -c2-f2 -de cf -abd -d2e+f3 0 -abf 0 0 0 |
{3} | ab 0 -de 0 0 0 0 0 0 0 |
{3} | -cf ab c2+f2 f3 0 0 def 0 -d2ef+f4 0 |
{5} | 1 0 0 c 0 -de 0 -f 0 0 |
{5} | 0 0 -1 -f c ab 0 0 -f2 -def |
{5} | 0 1 0 0 0 f2 c d 0 0 |
{6} | 0 0 0 0 -1 0 0 1 c ab |
10 4
2 : R <---------------------------------- R : 3
{5} | de 0 0 0 |
{5} | -c2-f2 0 0 -d2ef+f4 |
{5} | ab 0 0 0 |
{6} | 0 de f 0 |
{6} | 0 -ab 0 def |
{7} | 1 c 0 -f2 |
{6} | c -f2 -d 0 |
{6} | 0 0 c def |
{7} | 0 0 -1 -ab |
{8} | 0 -1 0 c |
o5 : ComplexMap
|
i6 : betti F
0 1 2 3
o6 = total: 1 7 10 4
0: 1 . . .
1: . . . .
2: . 3 . .
3: . . 3 .
4: . 3 4 2
5: . 1 2 1
6: . . 1 1
o6 : BettiTally
|
i7 : minimalBetti I
0 1 2 3
o7 = total: 1 3 3 1
0: 1 . . .
1: . . . .
2: . 3 . .
3: . . . .
4: . . 3 .
5: . . . .
6: . . . 1
o7 : BettiTally
|
i8 : assert isWellDefined F
|
i9 : assert isQuasiIsomorphism(augmentationMap F)
|
i10 : I = ideal(a*b*c-d*e*f, a^2*b*f-c*d*e, a*b*d-c^2)
2 2
o10 = ideal (a*b*c - d*e*f, a b*f - c*d*e, a*b*d - c )
o10 : Ideal of R
|
i11 : F = freeResolution(I, Strategy => Nonminimal)
1 11 20 12 2
o11 = R <-- R <-- R <-- R <-- R
0 1 2 3 4
o11 : Complex
|
i12 : dd^F
1 11
o12 = 0 : R <---------------------------------------------------------------------------------------------------------------- R : 1
| abc-def abd-c2 cd2e-ac2f a2bf-cde d2ef-c3 bc2de-c2ef2 ac2f2-c4 adef2-c2de bc4d-c4f2 cdef3-bc4 c2ef5-b2c5 |
11 20
1 : R <----------------------------------------------------------------------------------------------------------- R : 2
{3} | -d -d2e+acf -af 0 0 c2 -cde -c2f -cf2 0 0 0 0 -c3d 0 c3 0 0 bc4 0 |
{3} | c 0 0 -af 0 -def 0 0 0 0 -ef2 0 0 0 0 0 0 0 0 0 |
{4} | 0 ab 0 1 -f 0 -ef -bc 0 -acf2+c3 0 c 0 -c2f 0 0 -f3 0 0 0 |
{4} | 0 0 c d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | -1 -de 0 0 c ab 0 0 0 0 0 -af 0 0 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 a d 0 0 1 0 0 0 -c2 0 0 -f3 c2f 0 |
{5} | 0 0 0 0 -1 0 0 0 b d2e-acf 0 0 -de 0 0 0 -f2 0 -ef3 0 |
{5} | 0 c -1 0 0 0 0 0 0 0 b d c2 0 0 -cf 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 a e 0 1 0 0 bc |
{6} | 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 a d bc 0 -cf2 |
{8} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 a d |
20 12
2 : R <------------------------------------------------------------------- R : 3
{4} | af def 0 0 0 -cef2 0 0 0 -cef3 0 0 |
{6} | 0 -f c cf2 0 0 0 0 0 0 0 0 |
{5} | -d 0 0 0 0 0 0 0 0 0 0 0 |
{5} | c 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 0 -ab de def2 0 -ef2 -acf 0 -af2 -ef3 0 0 |
{6} | 0 c 0 0 f 0 0 0 0 0 0 0 |
{6} | 0 0 -d 0 0 0 0 c2 0 f3 0 0 |
{6} | 0 0 a c2 1 0 0 0 0 0 f3 c2f |
{6} | 0 -a 0 -d2e+acf 0 de 0 0 0 0 -cf2 0 |
{8} | 0 0 0 b 0 0 1 0 0 0 0 0 |
{6} | 0 0 0 0 -d -c2 0 0 0 -c2f 0 0 |
{6} | -1 0 0 0 b 0 -c2 0 -cf 0 0 0 |
{7} | 0 0 -1 0 0 b d 0 0 0 0 f3 |
{7} | 0 0 0 0 0 0 0 -e -1 0 0 -bc |
{7} | 0 0 0 d 0 -1 0 a 0 0 0 0 |
{7} | 0 -1 0 cf 0 0 0 0 -d -bc 0 cf2 |
{7} | 0 0 0 -de 0 e 0 0 a 0 -bc 0 |
{8} | 0 0 0 0 0 0 0 0 0 a d 0 |
{9} | 0 0 0 0 0 0 0 0 0 1 0 -d |
{9} | 0 0 0 0 0 0 0 0 0 0 1 a |
12 2
3 : R <--------------------- R : 4
{6} | 0 0 |
{7} | -cf -cf2 |
{7} | 0 -f3 |
{9} | -1 0 |
{7} | c2 c2f |
{8} | -d 0 |
{8} | b 0 |
{8} | 0 0 |
{8} | 0 bc |
{9} | 0 -d |
{9} | 0 a |
{10} | 0 -1 |
o12 : ComplexMap
|
i13 : assert isWellDefined F
|
i14 : assert isQuasiIsomorphism augmentationMap F
|
i15 : minimize F
1 3 3 1
o15 = R <-- R <-- R <-- R
0 1 2 3
o15 : Complex
|
i16 : freeResolution I
1 6 9 4
o16 = R <-- R <-- R <-- R
0 1 2 3
o16 : Complex
|
i17 : E = kk[a..d, SkewCommutative => true]
o17 = E
o17 : PolynomialRing, 4 skew commutative variable(s)
|
i18 : I = ideal(a*b-c*d, a*b*c*d)
o18 = ideal (a*b - c*d, a*b*c*d)
o18 : Ideal of E
|
i19 : F = freeResolution(I, Strategy => Nonminimal, LengthLimit => 4)
1 3 10 23 44
o19 = E <-- E <-- E <-- E <-- E
0 1 2 3 4
o19 : Complex
|
i20 : dd^F
1 3
o20 = 0 : E <--------------------- E : 1
| ab-cd acd bcd |
3 10
1 : E <---------------------------------- E : 2
{2} | a b 0 cd 0 0 -cd 0 0 0 |
{3} | 1 0 a b c d 0 0 0 0 |
{3} | 0 1 0 0 0 0 a b c d |
10 23
2 : E <------------------------------------------------------------------ E : 3
{3} | a b 0 0 -cd 0 0 0 0 0 0 0 0 cd 0 0 0 0 0 0 0 0 0 |
{3} | 0 a b 0 0 -cd 0 0 0 0 0 0 0 0 cd 0 0 0 0 0 0 0 0 |
{4} | -1 0 0 a b 0 c 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 -1 0 0 a b 0 c 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 -d 0 a b c 0 0 d 0 d 0 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 a b c d 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 -1 0 0 0 0 0 0 0 0 0 0 0 a b 0 c 0 0 d 0 0 0 |
{4} | 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 a b 0 c 0 0 d 0 0 |
{4} | 0 0 0 0 0 -d 0 0 0 0 0 0 0 0 d 0 a b c 0 0 d 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b c d |
23 44
3 : E <-------------------------------------------------------------------------------------------------------------- E : 4
{4} | a b 0 0 0 cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 a b 0 0 0 cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 0 a b 0 0 0 cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -cd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 1 0 0 0 a b 0 0 c 0 0 0 0 0 d 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 |
{5} | 0 1 0 0 0 a b 0 0 c 0 0 0 0 0 d 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 |
{5} | 0 0 1 0 0 0 a b 0 0 c 0 0 0 0 0 d 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 |
{5} | 0 0 0 0 0 -d 0 0 a b 0 c 0 0 0 0 0 d 0 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 -d 0 0 a b 0 c 0 0 0 0 0 d 0 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 0 0 0 -d 0 a b c 0 0 0 0 0 d 0 0 0 0 0 0 0 0 d 0 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 0 0 0 a b 0 c 0 0 d 0 0 0 0 0 0 0 0 0 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 0 0 0 0 a b 0 c 0 0 d 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 a b c 0 0 d 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 a b c d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b 0 0 c 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 |
{5} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b 0 0 c 0 0 0 0 0 d 0 0 0 0 0 0 0 0 |
{5} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b 0 0 c 0 0 0 0 0 d 0 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 -d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 0 0 a b 0 c 0 0 0 0 0 d 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 0 -d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 0 0 a b 0 c 0 0 0 0 0 d 0 0 0 0 0 |
{5} | 0 0 0 0 0 0 0 0 0 0 -d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 0 a b c 0 0 0 0 0 d 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 0 0 0 0 0 0 0 0 0 a b 0 c 0 0 d 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 0 0 0 0 0 0 0 0 0 a b 0 c 0 0 d 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 0 0 0 0 0 0 0 0 0 a b c 0 0 d 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 0 0 0 0 0 0 0 0 0 a b c d |
o20 : ComplexMap
|
i21 : betti F
0 1 2 3 4
o21 = total: 1 3 10 23 44
0: 1 . . . .
1: . 1 2 3 4
2: . 2 8 20 40
o21 : BettiTally
|
i22 : minimalBetti I
0 1 2 3 4
o22 = total: 1 1 5 16 35
0: 1 . . . .
1: . 1 . . .
2: . . 5 16 35
o22 : BettiTally
|
i23 : assert isWellDefined F
|
i24 : assert isQuasiIsomorphism(augmentationMap F, Concentration => (0,3))
|
This strategy implements an algorithm of Frank Schreyer. It first computes lead terms of all of the syzygy modules of the ideal or module, and then determines each syzygy using a linear algebra approach together with a number of optimizations.