A = freeDGAlgebra(R, degreeList)A = freeDGAlgebra(R, degreeList, Variable => "U")The output is a DGAlgebra whose underlying ring is a polynomial ring in graded-commutative generators: generators of odd homological degree are skew-commutative and square to zero (i.e.\ exterior), while generators of even homological degree are fully commutative. The resulting algebra is always free as a graded R-algebra; the current version of the package does not handle quotient DG algebras whose underlying ring is a non-polynomial quotient.
Variable-naming convention. Generators are named base_(i, j), where i is the homological degree (the first entry of the degree vector) and j is a 1-indexed counter among generators at that hom-degree. So freeDGAlgebra(R, {{1}, {1}, {1}, {3}}) produces four generators T_(1,1), T_(1,2), T_(1,3), T_(3,1). The Variable option changes the base name:
|
|
|
Passing a List of symbols for Variable overrides the doubly-indexed naming entirely and uses the given names verbatim. The list length must match #degreeList:
|
|
This is the mode used internally by adjoinVariables and acyclicClosure to preserve the identities of existing generators when extending a DG algebra.
Multi-grading. Any degree entries beyond the first are carried through as additional gradings of the underlying ring A.natural. To make the differential homogeneous with respect to both the homological and internal gradings, pair each hom-degree with the matching internal-degree of its image under setDiff. Here, T_(1,i) has degree (1,1) (hom-degree 1, internal-degree 1) matching x, y, z, and T_(3,1) has degree (3,3) matching its cubic-monomial differential:
|
|
|
|
Dropping the internal grading (hom-degree only) breaks homogeneity because the differential mixes different internal polynomial degrees of R:
|
|
|
The differential is set after construction (via setDiff) rather than passed to freeDGAlgebra directly: the differential's ring is A.natural, which does not exist until after the constructor runs. For common DG algebras arising in commutative algebra (Koszul complex, Tate resolution, acyclic closure, etc.) dedicated constructors are available; see koszulComplexDGA, acyclicClosure, minimalModel.
There is currently a bug handling DG algebras that have no generators in some homological degree but some in a later homological degree; for example freeDGAlgebra(R, {{1}, {5}}) may produce incorrect behavior if no hom-degree 3 generators are adjoined first. The safer workflow is freeDGAlgebra with hom-degrees only up to what is needed, followed by adjoinVariables to extend incrementally.
The object freeDGAlgebra 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:851:0.