maps F_{n-i}**G_i \to G_i**F_{n-i} changing the basis order and putting in sign (-1)^{i*(n-i)}. In reverseFactors(M,N,p,q) the integers p and q specify the homological degrees of M and N respectively.
i1 : S = ZZ/101[a,b] o1 = S o1 : PolynomialRing |
i2 : F = chainComplex{map(S^1,S^{-1},a)} 1 1 o2 = S <-- S 0 1 o2 : ChainComplex |
i3 : G = chainComplex{map(S^1,S^{-1},b)}[3] 1 1 o3 = S <-- S -3 -2 o3 : ChainComplex |
i4 : phi = reverseFactors(F,G) 1 1 o4 = -3 : S <--------- S : -3 | 1 | 2 2 -2 : S <---------------- S : -2 {1} | 0 -1 | {1} | 1 0 | 1 1 -1 : S <------------- S : -1 {2} | 1 | o4 : ChainComplexMap |
i5 : G**F 1 2 1 o5 = S <-- S <-- S -3 -2 -1 o5 : ChainComplex |
i6 : F**G 1 2 1 o6 = S <-- S <-- S -3 -2 -1 o6 : ChainComplex |
i7 : apply(1+length(F**G), i->( (phi_i)*((F**G).dd_(i+1)) == ((G**F).dd_(i+1))*phi_(i+1) )) o7 = {true, true, true} o7 : List |
i8 : apply(length (F**G), i -> (rank phi_i) == rank ((F**G)_i)) o8 = {true, true} o8 : List |
The object reverseFactors is a method function.