An algebra map between the underlying graded algebras that satisfies the Leibniz rule is a morphism of DG algebras. Such objects are created using the DGAlgebraMap class. As with DGAlgebras, one can define a DGAlgebraMap 'from scratch' using dgAlgebraMap.
i1 : R = ZZ/101[a,b,c]/ideal{a^3+b^3+c^3,a*b*c} o1 = R o1 : QuotientRing |
i2 : K1 = koszulComplexDGA(ideal vars R,Variable=>"Y") o2 = {Ring => R } Underlying algebra => R[Y ..Y ] 1 3 Differential => {a, b, c} o2 : DGAlgebra |
i3 : K2 = koszulComplexDGA(ideal {b,c},Variable=>"T") o3 = {Ring => R } Underlying algebra => R[T ..T ] 1 2 Differential => {b, c} o3 : DGAlgebra |
i4 : f = dgAlgebraMap(K2,K1,matrix{{0,T_1,T_2}}) o4 = map(R[T ..T ],R[Y ..Y ],{0, T , T , a, b, c}) 1 2 1 3 1 2 o4 : DGAlgebraMap |
Once we define the DGAlgebraMap, it is a good idea to check to see if it indeed satisfies the Leibniz rule. This can be checked by using isWellDefined.
i5 : isWellDefined f o5 = false |
Oops! Let's try that again.
i6 : g = dgAlgebraMap(K1,K2,matrix{{Y_2,Y_3}}) o6 = map(R[Y ..Y ],R[T ..T ],{Y , Y , a, b, c}) 1 3 1 2 2 3 o6 : DGAlgebraMap |
i7 : isWellDefined g o7 = true |
One can lift a ring homomorphism in degree zero to a map of DGAlgebras (up to a specified degree) using liftToDGMap. This is helpful in some of the internal functions of the DGAlgebras package, such as computing the map induced on Tor algebras by a RingMap.
i8 : R = ZZ/101[a,b,c]/ideal{a^3,b^3,c^3} o8 = R o8 : QuotientRing |
i9 : S = R/ideal{a^2*b^2*c^2} o9 = S o9 : QuotientRing |
i10 : f = map(S,R) o10 = map(S,R,{a, b, c}) o10 : RingMap S <--- R |
i11 : A = acyclicClosure(R,EndDegree=>3) o11 = {Ring => R } Underlying algebra => R[T ..T ] 1 6 2 2 2 Differential => {a, b, c, a T , b T , c T } 1 2 3 o11 : DGAlgebra |
i12 : B = acyclicClosure(S,EndDegree=>3) o12 = {Ring => S } Underlying algebra => S[T ..T ] 1 16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Differential => {a, b, c, a T , b T , c T , a*b c T , b c T , -a b T , -a c T , b c T T , -a c T T , b c T T , -a T T , c T T , b T T } 1 2 3 1 4 6 5 3 4 3 5 2 4 1 7 3 7 2 7 o12 : DGAlgebra |
i13 : phi = liftToDGMap(B,A,f) o13 = map(S[T ..T ],R[T ..T ],{T , T , T , T , T , T , a, b, c}) 1 16 1 6 1 2 3 4 5 6 o13 : DGAlgebraMap |
Once one has a DGAlgebraMap, one can also obtain the underlying map of complexes via toComplexMap.
i14 : cmPhi = toComplexMap(phi,EndDegree=>3) 1 o14 = 0 : cokernel | a2b2c2 | <--------- R : 0 | 1 | 3 1 : cokernel {1} | a2b2c2 0 0 | <----------------- R : 1 {1} | 0 a2b2c2 0 | {1} | 1 0 0 | {1} | 0 0 a2b2c2 | {1} | 0 1 0 | {1} | 0 0 1 | 6 2 : cokernel {2} | a2b2c2 0 0 0 0 0 0 | <----------------------- R : 2 {2} | 0 a2b2c2 0 0 0 0 0 | {2} | 1 0 0 0 0 0 | {2} | 0 0 a2b2c2 0 0 0 0 | {2} | 0 1 0 0 0 0 | {3} | 0 0 0 a2b2c2 0 0 0 | {2} | 0 0 1 0 0 0 | {3} | 0 0 0 0 a2b2c2 0 0 | {3} | 0 0 0 1 0 0 | {3} | 0 0 0 0 0 a2b2c2 0 | {3} | 0 0 0 0 1 0 | {6} | 0 0 0 0 0 0 a2b2c2 | {3} | 0 0 0 0 0 1 | {6} | 0 0 0 0 0 0 | 10 3 : cokernel {3} | a2b2c2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <------------------------------- R : 3 {4} | 0 a2b2c2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 1 0 0 0 0 0 0 0 0 0 | {4} | 0 0 a2b2c2 0 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | 0 1 0 0 0 0 0 0 0 0 | {4} | 0 0 0 a2b2c2 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 1 0 0 0 0 0 0 0 | {4} | 0 0 0 0 a2b2c2 0 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 1 0 0 0 0 0 0 | {4} | 0 0 0 0 0 a2b2c2 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 1 0 0 0 0 0 | {4} | 0 0 0 0 0 0 a2b2c2 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 1 0 0 0 0 | {4} | 0 0 0 0 0 0 0 a2b2c2 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 1 0 0 0 | {4} | 0 0 0 0 0 0 0 0 a2b2c2 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 1 0 0 | {4} | 0 0 0 0 0 0 0 0 0 a2b2c2 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 1 0 | {7} | 0 0 0 0 0 0 0 0 0 0 a2b2c2 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 1 | {7} | 0 0 0 0 0 0 0 0 0 0 0 a2b2c2 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 a2b2c2 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 a2b2c2 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a2b2c2 0 | {7} | 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a2b2c2 | {7} | 0 0 0 0 0 0 0 0 0 0 | {7} | 0 0 0 0 0 0 0 0 0 0 | o14 : ChainComplexMap |
There are also some auxiliary commands associated with DGAlgebraMaps
i15 : source phi o15 = {Ring => R } Underlying algebra => R[T ..T ] 1 6 2 2 2 Differential => {a, b, c, a T , b T , c T } 1 2 3 o15 : DGAlgebra |
i16 : target phi o16 = {Ring => S } Underlying algebra => S[T ..T ] 1 16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Differential => {a, b, c, a T , b T , c T , a*b c T , b c T , -a b T , -a c T , b c T T , -a c T T , b c T T , -a T T , c T T , b T T } 1 2 3 1 4 6 5 3 4 3 5 2 4 1 7 3 7 2 7 o16 : DGAlgebra |
One can also obtain the map on homology induced by a DGAlgebra map.
i17 : HHg = HH g Finding easy relations : -- used 0.0242934 seconds ZZ ---[a..c] ZZ 101 o17 = map(---[X ..X ],----------[X ],{X , 0, 0, 0}) 101 1 2 3 1 1 (c, b, a ) ZZ ---[a..c] ZZ 101 o17 : RingMap ---[X ..X ] <--- ----------[X ] 101 1 2 3 1 (c, b, a ) |
i18 : matrix HHg o18 = | X_1 0 0 0 | ZZ 1 ZZ 4 o18 : Matrix (---[X ..X ]) <--- (---[X ..X ]) 101 1 2 101 1 2 |