Function: TwistedTensorProduct(R,S,n,EhomG,GmapE,NhomE,NEhomN,EltsE,Mult,InvE)

Description: This function constructs the first n terms of a smallish free ZE-resolution F of Z for a group E using a known ZG-resolution R for a quotient group G=E/N, and a known free ZN-resolution S. The function inputs: a free ZN-resolution S (which must have a contracting homotopy), a free ZG-resolution R (which only requires a contracting homotopy if F requires one), a positive integer n, a function EhomG(i) which returns the position in G of the quotient of the i-th element in E, a function GmapE(i) satisfying EhomG(GmapE(i))=i, a function NhomE(i) which returns the position in E of the inclusion of the i-th element in N, a function NEhomN(i) satisfying NEhomE(NhomE(i)) =i, a (possibly partial) listing EltsE of the elements of E, a function Mult(i,j) representing multiplication in E (so k=Mult(i,j) means EltsE[i]*EltsE[j]=EltsE[k]), a function InvE(i) which returns the position in E of the inverse of the i-th element of E. The output is a list [Dimension,Boundary,Homotopy,Elts] of three functions and a list. Dimension(k) gives the ZE-rank of the k-th module in F. Boundary(k,j) gives the boundary of the j-th free generator of dimension k. Homotopy(k,[i,g]) gives the image in F_{k+1} under a contracting homotopy of the element [[i,g]] in F_k. (This is not yet implemented.) Elts is a (possibly partial) list of the elements of E with Elts[g] the element represented by integer g in the preceding two functions. Here i,j,k,g are non-negative integers. The groups N,G,E could conceivably be infinite. Only finitely many elements in EltsE are ever used in the construction.

Mathematical background: C.T.C. Wall, "Resolutions for extensions of groups", Proc. Cambridge Philos. Soc., 57 (1961), 251-255. G. Ellis, J. Harris, E. Sköldberg, "Polytopal resolutions for finite groups", J. Reine Angewandte Math., to appear.

Documentation: For notes on the code see here.