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.