# Basic operations on DG Algebra Maps -- Outlines some basic operations on DGAlgebraMaps

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.01652 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