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
|