# reverseFactors -- The isomorphism from F**G to G**F when F,G are complexes

## Synopsis

• Usage:
phi = reverseFactors(F,G)
phi = reverseFactors(M,N,p,q)
• Inputs:
• Outputs:
• phi, , to G**F from F**G

## Description

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)} 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

## Ways to use reverseFactors :

• "reverseFactors(ChainComplex,ChainComplex)"
• "reverseFactors(Module,Module,ZZ,ZZ)"

## For the programmer

The object reverseFactors is .