B = adjoinVariables(A, cycleList)B = adjoinVariables(A, cycleList, Variable => "U")Whereas killCycles chooses representatives of a basis of the first nonzero homology of A automatically, adjoinVariables lets the user specify exactly which cycles become boundaries. This is the primitive used by acyclicClosure, killCycles, and minimalModel, but can also be called directly to build DG algebra resolutions by hand.
Variable convention. The new generators extend the existing doubly-indexed naming scheme base_(i, j): for each adjoined cycle of hom-degree n, a new generator named base_(n+1, k) is created, where k continues the 1-indexed counter already in use at hom-degree n + 1 in A. Existing generator names are preserved verbatim. Passing Variable => "U" switches the base symbol for the new generators only:
|
|
|
|
|
|
|
|
Killing a single cycle lowers the size of the corresponding homology:
|
|
Over a non-c.i.\ example with a non-regular relation, one can inspect the first homology, pick a representative, and kill just that class (leaving other H_1 classes intact):
|
|
|
|
|
The package does not verify that the supplied elements are actually cycles; passing a non-cycle produces a malformed DG algebra. Use polyDifferential(A, z) == 0 to check before calling (the shorthand (A.diff)(z) applies A.diff as a ring map, which only agrees with the differential on monomials that contain at most one algebra generator and hence is not a valid cycle check for products).
The object adjoinVariables is a method function with options.
The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/DGAlgebras/doc.m2:8086:0.