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

# Strategy for free resolutions over a field -- algorithm for computing free resolutions over a field

## Synopsis

• Usage:
freeResolution M
freeResolution(M, Strategy => OverField)
• Inputs:
• M, , over a field
• Outputs:
• , a free resolution of the module $M$

## Description

Every module over a field is free. Therefore a minimal free resolution is determined by choosing a basis. This is the default strategy when the underlying ring is a field, so in practice it never needs to be specified.

Our first examples are over finite fields. Notice that the most interesting feature is the augmentation map.

 i1 : kk = ZZ/32003; i2 : M = coker random(kk^3, kk^2) o2 = cokernel | 107 3187 | | 4376 3783 | | -5570 -5307 | 3 o2 : kk-module, quotient of kk i3 : F = freeResolution M -- uses Strategy => OverField 1 o3 = kk 0 o3 : Complex i4 : assert isWellDefined F i5 : g = augmentationMap F 1 o5 = 0 : cokernel | 107 3187 | <-------------- kk : 0 | 4376 3783 | | -13898 | | -5570 -5307 | | 0 | | 0 | o5 : ComplexMap i6 : assert isWellDefined g i7 : assert(source g == F) i8 : assert(target g == complex M) i9 : assert(coker g == 0 and ker g == 0)

Finding a minimal free resolution for a module over a field is equivalent to finding a minimal Presentation.

 i10 : N = ker random(kk^3, kk^2) ++ M o10 = subquotient (| 0 0 0 |, | 0 0 |) | 0 0 0 | | 0 0 | | 1 0 0 | | 107 3187 | | 0 1 0 | | 4376 3783 | | 0 0 1 | | -5570 -5307 | 5 o10 : kk-module, subquotient of kk i11 : F = freeResolution N 1 o11 = kk 0 o11 : Complex i12 : g = augmentationMap F 1 o12 = 0 : subquotient (| 0 0 0 |, | 0 0 |) <-------------- kk : 0 | 0 0 0 | | 0 0 | | -13898 | | 1 0 0 | | 107 3187 | | 0 | | 0 1 0 | | 4376 3783 | | 0 | | 0 0 1 | | -5570 -5307 | o12 : ComplexMap i13 : PN = minimalPresentation N 1 o13 = kk o13 : kk-module, free i14 : assert(g_0 == PN.cache.pruningMap)
 i15 : kk = GF(3^10); i16 : M = coker random(kk^3, kk^2) o16 = cokernel | -a9+a7-a4-a2+a a9+a7+a6+a5+a4+a | | -a9-a8-a6+a5+a4+a3+a2 -a9-a8-a7-a5-a4+a3+a | | 0 a3+a | 3 o16 : kk-module, quotient of kk i17 : F = freeResolution M 1 o17 = kk 0 o17 : Complex i18 : g = augmentationMap F 1 o18 = 0 : cokernel | -a9+a7-a4-a2+a a9+a7+a6+a5+a4+a | <--------------------- kk : 0 | -a9-a8-a6+a5+a4+a3+a2 -a9-a8-a7-a5-a4+a3+a | | -a9-a5-a4+a+1 | | 0 a3+a | | 0 | | 0 | o18 : ComplexMap

This also works over the rationals, number fields, and fraction fields.

 i19 : kk = QQ; i20 : M = coker random(kk^3, kk^2, Height => 10000) o20 = cokernel | 7369/2654 1835/4116 | | 5072/9417 5865/5027 | | 528/1535 8119/9535 | 3 o20 : QQ-module, quotient of QQ i21 : F = freeResolution M 1 o21 = QQ 0 o21 : Complex i22 : g = augmentationMap F 1 o22 = 0 : cokernel | 7369/2654 1835/4116 | <--------------------------------------------------- QQ : 0 | 5072/9417 5865/5027 | | 1135053355240151631425/21684957995331197952 | | 528/1535 8119/9535 | | 0 | | 0 | o22 : ComplexMap
 i23 : S = QQ[a]/(a^3-a-1); i24 : kk = toField S; i25 : M = coker sub(random(S^3, S^{-2,-2}) + random(S^3, S^{-1,-1}) + random(S^3, S^2), kk) o25 = cokernel | 4/7a2+1/3a+5/6 8/7a2+7/4a+9/10 | | 9/7a2+7/10a+1/5 10/7a2+3/4a+2/3 | | 5/2a2+2/3a+2 3/7a2+4/5a+10/7 | 3 o25 : kk-module, quotient of kk i26 : F = freeResolution M o26 = cokernel | 1 0 | | 0 1 | | 0 0 | 0 o26 : Complex i27 : g = augmentationMap F o27 = 0 : cokernel | 4/7a2+1/3a+5/6 8/7a2+7/4a+9/10 | <--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cokernel | 1 0 | : 0 | 9/7a2+7/10a+1/5 10/7a2+3/4a+2/3 | | 0 0 88962783715378833419004/36978459195795265534493927790940847a2-141294095220208460369104/36978459195795265534493927790940847a-15992241288597633182489/36978459195795265534493927790940847 | | 0 1 | | 5/2a2+2/3a+2 3/7a2+4/5a+10/7 | | 0 0 0 | | 0 0 | | 0 0 0 | o27 : ComplexMap
 i28 : S = ZZ/101[a,b,c,d]; i29 : kk = frac S; i30 : M = coker sub(random(S^3, S^{-1,-1}), kk) o30 = cokernel | -47a-23b-7c+2d 39a+27b-22c+32d | | 29a-47b+15c-37d -9a-32b-20c+24d | | -13a-10b+30c-18d -30a-48b-15c+39d | 3 o30 : kk-module, quotient of kk i31 : F = freeResolution M 1 o31 = kk 0 o31 : Complex i32 : g = augmentationMap F 1 o32 = 0 : cokernel | -47a-23b-7c+2d 39a+27b-22c+32d | <----------------------------------------------------------------------------------------------------------- kk : 0 | 29a-47b+15c-37d -9a-32b-20c+24d | | (-22a2+41ab-27b2+2ac-46bc+38c2-45ad+3bd-17cd+36d2)/(a2-30ab-30b2+41ac+28bc-32c2-19ad+40bd+7cd-22d2) | | -13a-10b+30c-18d -30a-48b-15c+39d | | 0 | | 0 | o32 : ComplexMap