Macaulay2 » Documentation
Packages » DGAlgebras » Semifree resolutions of DG modules » koszulComplexDGM
next | previous | forward | backward | up | index | toc

koszulComplexDGM -- The Koszul complex of a module as a DG module

Description

The module generators of KM are one copy of each generator of M, placed in hom-degree 0. The differential vanishes on these generators, so the full differential of KM is determined by the Leibniz rule together with the differential on A.natural. In the one-argument form the DG algebra is built on demand via koszulComplexDGA(ring M); in the two-argument form the caller supplies A, whose ring must equal ring M.

On a regular ring R, K^R resolves the residue field k, so koszulComplexDGM M resolves M via k \otimes_R M-style homology. In particular koszulComplexDGM R^1 recovers the Koszul complex of R itself.

Over a regular ring, the Koszul DG module on R^1 is a free resolution of the residue field, so its higher homology vanishes:

i1 : R = QQ[x, y, z]

o1 = R

o1 : PolynomialRing
i2 : KM = koszulComplexDGM R^1

o2 = {Base ring => R                    }
      DG algebra => R[T   ..T   ]
                       1,1   1,3
                                       1
      Natural module => (R[T   ..T   ])
                            1,1   1,3
      Generator degrees => {{0, 0}}
      Differentials on gens => {0}

o2 : DGModule
i3 : apply(0..3, n -> prune homology(n, KM))

o3 = (cokernel | z y x |, 0, 0, 0)

o3 : Sequence

Over a complete intersection, the higher homology of koszulComplexDGM R^1 is no longer zero — it is the Koszul homology algebra of R, which records the deviations of R. For the codimension-2 complete intersection k[x,y]/(x^2, y^2), HH_i(KM) has rank equal to the i-th Betti number of the residue field:

i4 : S = QQ[x, y] / ideal(x^2, y^2)

o4 = S

o4 : QuotientRing
i5 : KS = koszulComplexDGM S^1

o5 = {Base ring => S                    }
      DG algebra => S[T   ..T   ]
                       1,1   1,2
                                       1
      Natural module => (S[T   ..T   ])
                            1,1   1,2
      Generator degrees => {{0, 0}}
      Differentials on gens => {0}

o5 : DGModule
i6 : apply(0..3, n -> numgens prune homology(n, KS))

o6 = (1, 2, 1, 0)

o6 : Sequence

Applying koszulComplexDGM to a nontrivial quotient module produces its Koszul resolution, now tensored against the given module. Here we resolve S / (x) over S = k[x, y] and read off its free ranks:

i7 : S = QQ[x, y]

o7 = S

o7 : PolynomialRing
i8 : KQ = koszulComplexDGM(S^1 / ideal(x))

o8 = {Base ring => S                  }
      DG algebra => S[T   ..T   ]
                       1,1   1,2
      Natural module => cokernel | x |
      Generator degrees => {{0, 0}}
      Differentials on gens => {0}

o8 : DGModule
i9 : C = toComplex KQ

o9 = cokernel | x | <-- cokernel {1} | x 0 | <-- cokernel {2} | x |
                                 {1} | 0 x |      
     0                                           2
                        1

o9 : Complex
i10 : apply(0..2, n -> rank C_n)

o10 = (0, 0, 0)

o10 : Sequence
i11 : apply(0..2, n -> prune homology(n, KQ))

o11 = (cokernel | y x |, cokernel {1} | y x |, 0)

o11 : Sequence

In the two-argument form the caller-supplied DG algebra must share the base ring of the module. This is the usual way to build a Koszul DG module that lives over the DGAlgebra you will pass to semifreeResolution or minimalSemifreeResolution:

i12 : R = QQ[x, y] / ideal(x^2, y^2)

o12 = R

o12 : QuotientRing
i13 : A = koszulComplexDGA R

o13 = {Ring => R                          }
       Underlying algebra => R[T   ..T   ]
                                1,1   1,2
       Differential => {x, y}

o13 : DGAlgebra
i14 : Mdg = minimalSemifreeResolution(A, R^1 / ideal(x, y), EndDegree => 3)

o14 = {Base ring => R                                                                                    }
       DG algebra => R[T   ..T   ]
                        1,1   1,2
                                        6
       Natural module => (R[T   ..T   ])
                             1,1   1,2
       Generator degrees => {{0, 0}, {2, 2}, {2, 2}, {4, 4}, {4, 4}, {4, 4}}
       Differentials on gens => {0, | xT_(1,1) |, | yT_(1,2) |, |     0    |, |     0    |, |     0    |}
                                    |     0    |  |     0    |  | xT_(1,1) |  | yT_(1,2) |  |     0    |
                                    |     0    |  |     0    |  |     0    |  | xT_(1,1) |  | yT_(1,2) |
                                    |     0    |  |     0    |  |     0    |  |     0    |  |     0    |
                                    |     0    |  |     0    |  |     0    |  |     0    |  |     0    |
                                    |     0    |  |     0    |  |     0    |  |     0    |  |     0    |

o14 : DGModule
i15 : apply(0..3, n -> rank (toComplex Mdg)_n)

o15 = (1, 2, 3, 4)

o15 : Sequence

Caveat

The two-argument form raises an error when A.ring =!= ring M.

See also

Ways to use koszulComplexDGM:

  • koszulComplexDGM(DGAlgebra,Module)
  • koszulComplexDGM(Module)

For the programmer

The object koszulComplexDGM is a method function.


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/DGAlgebras/doc.m2:5492:0.