Macaulay2 » Documentation
Packages » DGAlgebras » Homology of DG modules and DG module maps
next | previous | forward | backward | up | index | toc

Homology of DG modules and DG module maps -- Computing H_n and H_* for DG modules, DG submodules, DG quotient modules, and DG module maps

For a DG module M over a DG algebra A, the package supports two parallel views of homology:

HH_ZZ DGModule returns a single degree H_n(M) as a module over the base ring A.ring. This is the natural per-degree shape and matches the convention of HH_ZZ DGAlgebra.

HH DGModule (equivalently homologyModule) returns the full graded object H_*(M) assembled as a module over the homology algebra HH(A), with the HH(A)-action coming from multiplication by cycle classes.

Maps f : M -> N of DG modules induce maps on homology at each level: homology(DGModuleMap,ZZ) returns the induced map H_n(M) -> H_n(N) as a map of A.ring-modules, and HH DGModuleMap assembles those pieces into a map of HH(A)-modules.

For quotients, HH_ZZ DGQuotientModule and HH DGQuotientModule (equivalently homologyModule(DGQuotientModule)) work the same way, using toComplex to reduce to an underlying complex. A DGSubmodule is a DGModule, so its homology is computed by the DG module methods directly.

To extract an explicit representative of a given homology class, use homologyClass(DGModule,Vector); given a cycle in M.natural it returns the corresponding element of prune homology(n, M).

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

o1 = R

o1 : QuotientRing
i2 : A = koszulComplexDGA R

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

o2 : DGAlgebra
i3 : k = R^1 / ideal(x, y)

o3 = cokernel | x y |

                            1
o3 : R-module, quotient of R
i4 : M = minimalSemifreeResolution(A, k, EndDegree => 2)

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

o4 : DGModule
i5 : H0 = prune homology(0, M)

o5 = cokernel | y x |

                            1
o5 : R-module, quotient of R
i6 : numgens H0 == 1

o6 = true
i7 : idM = identityDGModuleMap M

                               3
o7 = {Source => (R[T   ..T   ])  }
                    1,1   1,2
                               3
      Target => (R[T   ..T   ])
                    1,1   1,2
      Natural => {0, 0} | 1 0 0 |
                 {2, 2} | 0 1 0 |
                 {2, 2} | 0 0 1 |

o7 : DGModuleMap
i8 : h0 = homology(idM, 0)

o8 = | 1 |

o8 : Matrix k <-- k
i9 : h0 == id_(source h0)

o9 = true

The identity on M induces the identity on every H_n(M), a baseline sanity check that each of the pieces fits together.

See also

Menu


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