Given a DGAlgebra A over a ring R, and an R-module M, A ** M carries the structure of a left DG module over A. It follows that H(A ** M) is a module over H(A). Although DGModules have yet to be implemented as objects in Macaulay2 in their own right, the current infrastructure (with a little extra work) allows us to determine the module structure of this type of DG module as a module over the homology algebra of A.
Currently, this code will only work on DGAlgebras that are finite over their ring of definition, such as Koszul complexes. (Truncations of) module structures in case of non-finite DGAlgebras may be made available in a future update.
For an example, we will compute the module structure of the Koszul homology of the canonical module over the Koszul homology algebra.
i1 : Q = QQ[x,y,z,w] o1 = Q o1 : PolynomialRing |
i2 : I = ideal (w^2, y*w+z*w, x*w, y*z+z^2, y^2+z*w, x*y+x*z, x^2+z*w) 2 2 2 2 o2 = ideal (w , y*w + z*w, x*w, y*z + z , y + z*w, x*y + x*z, x + z*w) o2 : Ideal of Q |
i3 : R = Q/I o3 = R o3 : QuotientRing |
i4 : KR = koszulComplexDGA R o4 = {Ring => R } Underlying algebra => R[T ..T ] 1 4 Differential => {x, y, z, w} o4 : DGAlgebra |
i5 : cxKR = toComplex KR 1 4 6 4 1 o5 = R <-- R <-- R <-- R <-- R 0 1 2 3 4 o5 : ChainComplex |
i6 : HKR = HH(KR) Finding easy relations : -- used 0.223309 seconds o6 = HKR o6 : QuotientRing |
The following is the graded canonical module of R:
i7 : degList = first entries vars Q / degree / first o7 = {1, 1, 1, 1} o7 : List |
i8 : M = Ext^4(Q^1/I,Q^{-(sum degList)}) ** R o8 = cokernel {-2} | w x z 0 0 0 0 0 -zw 0 0 | {-2} | 0 0 w y+z 0 x 0 w 0 z2+zw 0 | {-2} | 0 0 0 0 w -z y+z x 0 0 z2 | 3 o8 : R-module, quotient of R |
We obtain the Koszul homology module using the following command:
i9 : HKM = homologyModule(KR,M); |
One may notice the duality of HKR and HKM by considering their Hilbert series:
i10 : hsHKR = value numerator reduceHilbert hilbertSeries HKR 2 2 4 2 3 3 5 3 4 4 6 o10 = 1 + 7T T + 6T T + 8T T + 8T T + 3T T + 3T T 0 1 0 1 0 1 0 1 0 1 0 1 o10 : ZZ[T ..T ] 0 1 |
i11 : hsHKM = value numerator reduceHilbert hilbertSeries HKM -2 -1 2 2 3 2 4 4 o11 = 3T + 3T + 8T T + 8T T + 6T + 7T T + T T 1 0 0 1 0 1 0 0 1 0 1 o11 : ZZ[T ..T ] 0 1 |
i12 : AA = ring hsHKR o12 = AA o12 : PolynomialRing |
i13 : e = numgens Q o13 = 4 |
i14 : hsHKR == T_0^e*T_1^e*sub(hsHKM, {T_0 => T_0^(-1), T_1 => T_1^(-1)}) o14 = true |
The object homologyModule is a method function.