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

Synopsis

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

See also