Macaulay2 » Documentation
Packages » DGAlgebras » Building DG algebras from existing DG algebras
next | previous | forward | backward | up | index | toc

Building DG algebras from existing DG algebras -- Base change, generator restriction, truncation, and targeted cycle-killing for DG algebras

Given an existing DGAlgebra A, the package supports several ways to derive new DG algebras from it. All of these constructions preserve the graded-commutative and Leibniz structure by design; most perform safety checks before returning.

baseChange moves a DG algebra along a ring map on its base: given A over R and a ring map phi: R -> S (or simply a target ring S, in which case map(S, R) is used), baseChange returns a DG algebra over S whose generator list and differentials are obtained by transporting scalars along phi.

subDGAlgebra produces a sub-DG algebra of A generated by a chosen subset of the DG generators. The subset must be d-closed: it is an error if the differential of a kept generator uses a dropped one. restrictDifferential is a synonym. truncateGenerators is a convenience wrapper: truncateGenerators(A, n) calls subDGAlgebra with the generators of hom-degree strictly greater than n.

killHomologyAtDegree targets a specific hom-degree n: it computes minimal representatives of H_n(A) and adjoins variables in hom-degree n+1 whose differentials are those representatives, producing a new DG algebra with H_n = 0.

All four constructions take optional arguments InitializeDegreeZeroHomology and InitializeComplex controlling how much of the downstream cache is eagerly populated by the internal call to setDiff.

Two low-level predicates round out the family: isValidDGAlgebra performs a structural-invariant check (keys and types), and isWellDefinedDifferential performs the semantic d^2 = 0 check on every generator. Both are called internally by isWellDefined(DGAlgebra).

i1 : R = QQ[x, y]

o1 = R

o1 : PolynomialRing
i2 : S = R / ideal(x^2, y^2)

o2 = S

o2 : QuotientRing
i3 : A = koszulComplexDGA R

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

o3 : DGAlgebra
i4 : B = baseChange(A, S)

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

o4 : DGAlgebra
i5 : underlyingRing B === S

o5 = true
i6 : isWellDefinedDifferential B

o6 = true

Moving a Koszul DG algebra from a polynomial ring to a complete intersection factor preserves d^2 = 0 because the differential expressions d(T_i) = x_i remain valid in S.

See also

Menu


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