# 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 Fn-i**Gi →Gi**Fn-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```

## Ways to use reverseFactors :

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