Resolutions of the ground ring

ResolutionAbelianGroup
ResolutionAbelianGroup(L,n)
ResolutionAbelianGroup(G,n)

Inputs a list L:=[m_1,m_2, ..., m_d] of nonnegative integers, and a positive integer n. It returns n terms of a ZG-resolution for the abelian group G=Z_L[1]+Z_L[2]+···+Z_L[d] .

If G is finite then the first argument can also be the abelian group G itself.
ResolutionAlmostCrystalGroup
ResolutionAlmostCrystalGroup(G,n)

Inputs a positive integer n and an almost crystallographic pcp group G. It returns n terms of a free ZG-resolution. (A group is almost crystallographic if it is nilpotent-by-finite and has no non-trivial finite normal subgroup. Such groups can be constructed using the ACLIB package.)
ResolutionAlmostCrystalQuotient
ResolutionAlmostCrystalQuotient(G,n,c)
ResolutionAlmostCrystalQuotient(G,n,c,false)

An almost crystallographic group G is an extension of a finite group P by a nilpotent group T, and has no non-trivial finite normal subgroup. We define the relative lower central series by setting T_1=T and T_{i+1}=[T_i,G].

This function inputs an almost crystallographic group G together with positive integers n and c. It returns n terms of a free ZQ-resolution R for the group Q=G/T_c .

In addition to the usual components, the resolution R has the component R.quotientHomomorphism which gives the quotient homomorphism G \longrightarrow Q .

If a fourth optional variable is set equal to "false" then the function omits to test whether Q is finite and a "more canonical" resolution is constructed.
ResolutionArtinGroup
ResolutionArtinGroup(D,n)

Inputs a Coxeter diagram D and an integer n>1. It returns n terms of a free ZG-resolution R where G is the Artin monoid associated to D. It is conjectured that R is also a free resolution for the Artin group G. The conjecture is known to hold in About/aboutArtinGroups.html.

G=R.group
is infinite and returned as a finitely presented group. The list R.elts is a partial listing of the elements of G which grows as R is used. Initially R.elts is empty and then, any time the boundary of a resolution generator is called, R.elts is updated to include elements of G involved in the boundary.

The contracting homotopy on R has not yet been implemented! Furthermore, the group G is currently returned only as a finitely presented group (without any method for solving the word problem).
ResolutionAsphericalPresentation
ResolutionAsphericalPresentation(F,R,n)

Inputs a free group F, a set R of words in F which constitute an aspherical presentation for a group G, and a positive integer n. (Asphericity can be a difficult property to verify. The function IsAspherical(F,R) could be of help.)

The function returns n terms of a free ZG-resolution R which has generators in dimensions &tlt; 3 only. No contracting homotopy on R will be returned.
ResolutionBieberbachGroup (HAPcryst)
ResolutionBieberbachGroup( G )
ResolutionBieberbachGroup( G, v )

Inputs a Bieberbach group G (represented using AffineCrystGroupOnRight as in the GAP package Cryst). It also optionally inputs a choice of vector v in the euclidean space R^n on which G acts freely. The function returns n+1 terms of the free ZG-resolution of Z arising as the cellular chain complex of the tesselation of R^n by the Dirichlet-Voronoi fundamental domain determined by v.

This is a HAPcryst function and is thus only available if HAPcryst is loaded.

The function requires the use of Polymake software.
ResolutionDirectProduct
ResolutionDirectProduct(R,S)
ResolutionDirectProduct(R,S,"internal")

Inputs a ZG-resolution R and ZH-resolution S. It outputs a ZD-resolution for the direct product D=G x H.

If G and H lie in a common group K, and if they commute and have trivial intersection, then an optional third variable "internal" can be used. This will force D to be the subgroup GH in K.
ResolutionExtension
ResolutionExtension(g,R,S)
ResolutionExtension(g,R, S,"TestFiniteness")
ResolutionExtension(g,R,S,"NoTest",GmapE)

Inputs a surjective group homomorphism g:E \longrightarrow G with kernel N. It also inputs a ZN-resolution R and a ZG-resolution S. It returns a ZE-resolution. The groups E and G can be infinite.

If an optional fourth argument is set equal to "TestFiniteness" then the groups N and G will be tested to see if they are finite. If they are finite then some speed saving routines will be invoked.

If the homomorphism g is such that the GAP function PreImagesElement(g,x) doesn't work, then a function GmapE() should be included as a fifth input. For any x in G this function should return an element GmapE(x) in E which gets mapped onto x by g.

The contracting homotopy on the ZE-resolution has not yet been fully implemented for infinite groups!
ResolutionFiniteDirectProduct
ResolutionFiniteDirectProduct(R,S)
ResolutionFiniteDirectProduct(R,S, "internal")

Inputs a ZG-resolution R and ZH-resolution S where G and H are finite groups. It outputs a ZD-resolution for the direct product D=G×H.

If G and H lie in a common group K, and if they commute and have trivial intersection, then an optional third variable "internal" can be used. This will force D to be the subgroup GH in K.
ResolutionFiniteExtension
ResolutionFiniteExtension(gensE,gensG,R,n)
ResolutionFiniteExtension(gensE,gensG,R,n,true)
ResolutionFiniteExtension(gensE,gensG,R,n,false,S)

Inputs: a set gensE of generators for a finite group E; a set gensG equal to the image of gensE in a quotient group G of E; a ZG-resolution R up to dimension at least n; a positive integer n. It uses the TwistedTensorProduct() construction to return n terms of a ZE-resolution.

The function has an optional fourth argument which, when set equal to "true", invokes tietze reductions in the construction of a resolution for the kernel of E \longrightarrow G.

If a ZN-resolution S is available, where N is the kernel of the quotient E \longrightarrow G, then this can be incorporated into the computations using an optional fifth argument.
ResolutionFiniteGroup
ResolutionFiniteGroup(gens,n)
ResolutionFiniteGroup(gens,n,true)
ResolutionFiniteGroup(gens,n,false,p)

Inputs a set gens of generators for a finite group G and a positive integer n. It outputs n terms of a ZG-resolution.

The function has an optional third argument which, when set equal to true, invokes tietze reductions in the construction of the resolution.

The function has an optional fourth argument which, when set equal to a prime p, records the fact that the resolution will only be used for mod p calculations. This could speed up subsequent constructions.

ResolutionFiniteSubgroup
ResolutionFiniteSubgroup(R,K)
ResolutionFiniteSubgroup(R,gensG,gensK)

Inputs a ZG-resolution for a finite group G and a subgroup K of index |G:K|. It returns a free ZK-resolution whose ZK-rank is |G:K| times the ZG-rank in each dimension.

Generating sets gensG, gensK for G and K can also be input to the function (though the method does not depend on a choice of generators).

This ZK-resolution is not reduced. ie. it has more than one generator in dimension 0.
ResolutionGraphOfGroups
ResolutionGraphOfGroups(D,n)
ResolutionGraphOfGroups(D,n,L)

Inputs a graph of groups D and a positive integer n. It returns n terms of a free ZG-resolution for the fundamental group G of D.

An optional third argument L=[R_1 , \ldots , R_t] can be used to list (in any order) free resolutions for some/all of the vertex and edge groups in D. If for some vertex or edge group no resolution is listed in L then the function ResolutionFiniteGroup() will be used to try to construct the resolution.

The ZG-resolution is usually not reduced. i.e. it has more than one generator in dimension 0.

The contracting homotopy on the ZG-resolution has not yet been implemented! Furthermore, the group G is currently returned only as a finitely presented group (without any method for solving the word problem).
ResolutionNilpotentGroup
ResolutionNilpotentGroup(G,n)
ResolutionNilpotentGroup(G,n,"TestFiniteness")

Inputs a nilpotent group G and positive integer n. It returns n terms of a free ZG-resolution. The resolution is computed using a divide-and-conquer technique involving the lower central series.

This function can be applied to infinite groups G. For finite groups the function ResolutionNormalSeries() probably gives better results.

If an optional third argument is set equal to "TestFiniteness" then the groups N and G will be tested to see if they are finite. If they are finite then some speed saving routines will be invoked.

The contracting homotopy on the ZE-resolution has not yet been fully implemented for infinite groups.
ResolutionNormalSeries
ResolutionNormalSeries(L,n)
ResolutionNormalSeries(L,n,true)
ResolutionNormalSeries(L,n,false,p)

Inputs a positive integer n and a list L = [L_1 , ..., L_k] of normal subgroups L_i of a finite group G satisfying G = L_1 &tgt; L2 &tgt; \ldots &tgt; L_k. Alternatively, L = [gensL_1, ... gensL_k] can be a list of generating sets for the L_i (and these particular generators will be used in the construction of resolutions). It returns a ZG-resolution by repeatedly using the function ResolutionFiniteExtension().

The function has an optional third argument which, if set equal to true, invokes tietze reductions in the construction of resolutions.

The function has an optional fourth argument which, if set equal to p &tgt; 0, produces a resolution which is only valid for mod p calculations.
ResolutionPrimePowerGroup
ResolutionPrimePowerGroup(P,n)
ResolutionPrimePowerGroup(G,n,p)

Inputs a p-group P and integer n&tgt;0. It uses GAP's standard linear algebra functions over the field F of p elements to construct a free FP-resolution for mod p calculations only. The resolution is minimal - meaning that the number of generators of R_n equals the rank of H_n(P,F).

The function can also be used to obtain a free non-minimal FG-resolution of a small group G of non-prime-power order. In this case the prime p must be entered as the third input variable. (In the non-prime-power case the algorithm is naive and not very good.)
ResolutionSmallFpGroup
ResolutionSmallFpGroup(G,n)
ResolutionSmallFpGroup(G,n,p)

Inputs a small finitely presented group G and an integer n&tgt;0. It returns n terms of a ZG-resolution which, in dimensions 1 and 2, corresponds to the given presentation for G. The method returns no contracting homotopy for the resolution.

The function has an optional fourth argument which, when set equal to a prime p, records the fact that the resolution will only be used for mod p calculations. This could speed up subsequent constructions.

This function was written by Irina Kholodna.
ResolutionSubgroup
ResolutionSubgroup(R,K)

Inputs a ZG-resolution for an (infinite) group G and a subgroup K of finite index |G:K|. It returns a free ZK-resolution whose ZK-rank is |G:K| times the ZG-rank in each dimension.

If G is finite then the function ResolutionFiniteSubgroup(R,G,K) will probably work better. In particular, resolutions from this function probably won't work with the function EquivariantChainMap().

This ZK-resolution is not reduced. i.e. it has more than one generator in dimension 0.
ResolutionSubnormalSeries
ResolutionSubnormalSeries(L,n)

Inputs a positive integer n and a list L = [L_1 , \ldots , L_k] of subgroups L_i of a finite group G=L_1 such that L_1 &tgt; L2 \ldots &tgt; L_k is a subnormal series in G (meaning that each L_{i+1} must be normal in L_i). It returns a ZG-resolution by repeatedly using the function ResolutionFiniteExtension().

If L is a series of normal subgroups in G then the function ResolutionNormalSeries(L,n) will possibly work more efficiently.
TwistedTensorProduct
TwistedTensorProduct(R,S,EhomG,GmapE,NhomE,NEhomN,EltsE,Mult,InvE)

Inputs a ZG-resolution R, a ZN-resolution S, and other data relating to a short exact sequence 1 \longrightarrow N \longrightarrow E \longrightarrow G \longrightarrow 1. It uses a perturbation technique of CTC Wall to construct a ZE-resolution F. Both G and N could be infinite. The "length" of F is equal to the minimum of the "length"s of R and S. The resolution R needs no contracting homotopy if no such homotopy is requied for F.