In order for phiTilde to be defined, phi of the image of the differential of A in degree 1 must lie in the image of the differential of B in degree 1. At present, this condition is not checked.
i1 : R = ZZ/101[a,b,c]/ideal{a^3,b^3,c^3} o1 = R o1 : QuotientRing |
i2 : S = R/ideal{a^2*b^2*c^2} o2 = S o2 : QuotientRing |
i3 : f = map(S,R) o3 = map(S,R,{a, b, c}) o3 : RingMap S <--- R |
i4 : A = acyclicClosure(R,EndDegree=>3) o4 = {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 o4 : DGAlgebra |
i5 : B = acyclicClosure(S,EndDegree=>3) o5 = {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 o5 : DGAlgebra |
i6 : phi = liftToDGMap(B,A,f) o6 = 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 o6 : DGAlgebraMap |
i7 : toComplexMap(phi,EndDegree=>3) 1 o7 = 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 | o7 : ChainComplexMap |
The object liftToDGMap is a method function with options.