next | previous | forward | backward | up | top | index | toc | Macaulay2 website
DGAlgebras :: freeDGAlgebra

freeDGAlgebra -- Constructs a DGAlgebra

Synopsis

Description

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.

Caveat

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.

Ways to use freeDGAlgebra :

For the programmer

The object freeDGAlgebra is a method function with options.