# isChainComplexMap -- Test to see if the ChainComplexMap commutes with the differentials.

## Synopsis

• Usage:
isChainComplexMap(phi)
• Inputs:
• phi,
• Outputs:
• Boolean

## Description

 i1 : S = ZZ/101[a,b,c] o1 = S o1 : PolynomialRing i2 : kRes = res coker vars S 1 3 3 1 o2 = S <-- S <-- S <-- S <-- 0 0 1 2 3 4 o2 : ChainComplex i3 : multBya = extend(kRes,kRes,matrix{{a}}) 1 1 o3 = 0 : S <--------- S : 0 | a | 3 3 1 : S <----------------- S : 1 {1} | a b c | {1} | 0 0 0 | {1} | 0 0 0 | 3 3 2 : S <----- S : 2 0 1 1 3 : S <----- S : 3 0 4 : 0 <----- 0 : 4 0 o3 : ChainComplexMap i4 : isChainComplexMap(multBya) o4 = true i5 : T = chainComplex(map(S^1,S^1,a)) 1 1 o5 = S <-- S 0 1 o5 : ChainComplex i6 : T' = chainComplex{map(S^1/(ideal a),S^1, 1), map(S^1,S^1, -a)}[1] 1 1 o6 = cokernel | a | <-- S <-- S -1 0 1 o6 : ChainComplex i7 : phi = chainComplexMap(T',T,apply(toList(min T..max T), i->id_(T_i))) 1 1 o7 = 0 : S <--------- S : 0 | 1 | 1 1 1 : S <--------- S : 1 | 1 | o7 : ChainComplexMap i8 : isChainComplexMap phi o8 = true

Caveat: The script uses trivialHomologicalTruncation to truncates the source and target of the map phi to include only the indices for which phi has matrices. This eliminates the problem of complexes of different lengths seen in an earlier version, which would have made the last line in the example return false.

## Ways to use isChainComplexMap :

• "isChainComplexMap(ChainComplexMap)"

## For the programmer

The object isChainComplexMap is .