For a DG module map f : M -> N of DG modules over a common DG algebra A, the package provides three chain-level constructions:
image(DGModuleMap) — the image of f, built as a DGSubmodule of the target N. A chain map sends cycles to cycles and boundaries to boundaries, so the column span of f.natural is automatically d-closed in N.natural; no d-saturation is needed.
kernel(DGModuleMap) — the kernel of f, built as a DGSubmodule of the source M. Again chain-map-ness gives d-closure for free.
cokernel(DGModuleMap) — the cokernel of f, built as a DGQuotientModule equal to target f / image f.
These three operations fit together in the usual short exact sequence: for any f, we have rank(source f) == numgens(kernel f) + numgens(image f) and rank(target f) == numgens(image f) + numgens(cokernel f) whenever the natural modules are free.
A genuinely informative example: let R = k[x, y]/(x^2, y^2) and let KM = koszulComplexDGM R^1 be its Koszul DG module. Multiplication by x is a degree-0 endomorphism of KM because x is central in the underlying ring:
|
|
|
|
|
Since x^2 = 0 in R, the composition mx o mx is the zero map, which chain-level is the statement image mx \subseteq kernel mx. The three constructions expose this directly:
|
|
|
|
|
|
|
The cokernel is the quotient DG module KM / x \cdot KM; at the natural level it is KM \otimes_R R/(x) = k[y]/(y^2) \otimes_k \Lambda(T_1, T_2), presented by the 1 x 1 matrix [x] per generator:
|
The three operations are used throughout the package -- notably by homology at degree n, which computes kernel(d_n) / image(d_{n+1}) via these primitives.
Finally, each of image mx, kernel mx, cokernel mx is itself a DG module, so toComplex(DGModule) (or its DGSubmodule / DGQuotientModule variants) converts them into ordinary chain complexes one can hand to Complexes. For the cokernel in particular, the underlying complex is KM / x \cdot KM and its homology picks up the classes that become new cycles when the x-direction is killed:
|
|
The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/DGAlgebras/doc.m2:3963:0.