This function returns a DGAlgebra A whose underlying algebra is a graded commutative polynomial ring in a number of variables equal to the number of the degrees input. The current version of this package does not handle algebras A whose underlying algebra is not a polynomial ring.
i1 : R = ZZ/101[x,y,z] o1 = R o1 : PolynomialRing |
i2 : A = freeDGAlgebra(R,{{1},{1},{1},{3}}) o2 = {Ring => R } Underlying algebra => R[T ..T ] 1 4 Differential => null o2 : DGAlgebra |
i3 : A.natural o3 = R[T ..T ] 1 4 o3 : PolynomialRing, 4 skew commutative variables |
i4 : setDiff(A,{x,y,z,x*T_2*T_3-y*T_1*T_3+z*T_1*T_2}) o4 = {Ring => R } Underlying algebra => R[T ..T ] 1 4 Differential => {x, y, z, z*T T - y*T T + x*T T } 1 2 1 3 2 3 o4 : DGAlgebra |
The resulting DGAlgebra will not be graded since the differential given does not respect the grading due to the degrees assigned in the definition.
i5 : isHomogeneous(A) o5 = false |
i6 : Add = toComplex A 1 3 3 2 3 3 1 o6 = R <-- R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 6 o6 : ChainComplex |
i7 : B = freeDGAlgebra(R,{{1,1},{1,1},{1,1},{3,3}}) o7 = {Ring => R } Underlying algebra => R[T ..T ] 1 4 Differential => null o7 : DGAlgebra |
i8 : B.natural o8 = R[T ..T ] 1 4 o8 : PolynomialRing, 4 skew commutative variables |
i9 : setDiff(B,{x,y,z,x*T_2*T_3-y*T_1*T_3+z*T_1*T_2}) o9 = {Ring => R } Underlying algebra => R[T ..T ] 1 4 Differential => {x, y, z, z*T T - y*T T + x*T T } 1 2 1 3 2 3 o9 : DGAlgebra |
The result of the above declaration will be graded.
i10 : isHomogeneous(B) o10 = true |
i11 : Bdd = toComplex B 1 3 3 2 3 3 1 o11 = R <-- R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 6 o11 : ChainComplex |
Note that the differential is not passed into the constructor. The reason for this (at the moment) is that Macaulay2 does not know what ring the differentials are defined over until after the underlying algebra is constructed, so the differential is set later with setDiff. Many DG algebras that one encounters in commutative algebra have been implemented, however, and do not need to be defined 'by hand'. For example, if one wants to work with the Koszul complex as a DG algebra, then one should see the command koszulComplexDGA. Also, if one wishes to specify the name of the variables used, specify the Variable option; see the example in dgAlgebraMap.
There is currently a bug handling DG algebras that have no monomials in some degree, but some monomials in a later degree; for example if one replaces the 3 in the above example with a 5.
The object freeDGAlgebra is a method function with options.