Macaulay2 » Documentation
Packages » Complexes :: Strategy for free resolutions over a field
next | previous | forward | backward | up | index | toc

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

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 8119/9535 |
               | 5072/9417 8404/5495 |
               | 5865/5027 9399/4099 |

                               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 8119/9535 | <--------------------------------------------------- QQ  : 0
                   | 5072/9417 8404/5495 |    | -464576238251576734397/67375041337047961770 |
                   | 5865/5027 9399/4099 |    | 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 | 7a2+3/10a+7/8  6a2+10/9a+2/5  |
               | 3/7a2+3/7a+5/6 5/4a2+10a+5/3  |
               | 6/7a2+5a+5     2/9a2+3/2a+7/2 |

                               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 | 7a2+3/10a+7/8  6a2+10/9a+2/5  | <------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cokernel | 1 0 | : 0
                   | 3/7a2+3/7a+5/6 5/4a2+10a+5/3  |    | 0 0 -6574129329727381017648745/1106842879347573052985092220079097369064a2+1901517596387806649653259/1383553599184466316231365275098871711330a+34720239491219054719312079/5534214396737865264925461100395486845320 |            | 0 1 |
                   | 6/7a2+5a+5     2/9a2+3/2a+7/2 |    | 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 | -20a+44b-39c+36d -8a+43b-8c+36d  |
               | 9a-39b+4c+13d    -3a-22b-30c+41d |
               | -26a+22b-49c-11d 16a-28b-6c+35d  |

                               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 | -20a+44b-39c+36d -8a+43b-8c+36d  | <--------------------------------------------------------------------------------------------------------- kk  : 0
                   | 9a-39b+4c+13d    -3a-22b-30c+41d |    | (2a2-35ab+49b2-35ac-48bc-43c2-48ad-4bd-6cd-49d2)/(a2-24ab+30b2+6ac+20bc-41c2+45ad-42bd-18cd-23d2) |
                   | -26a+22b-49c-11d 16a-28b-6c+35d  |    | 0                                                                                                 |
                                                           | 0                                                                                                 |

o32 : ComplexMap

See also


The source of this document is in Complexes/ChainComplexDoc.m2:1240:0.