


Consider
a direct product of groups E=N×G. Given a free ZNresolution R of
Z, and a free ZGresolution S of Z, one can construct a free
ZEresolution of Z by forming a tensor product of resolutions
R(×)S. This is a special case of a result by Eilenberg and
Zilber. In dimension n the tensor product has free generators
e(×)f for each idimensional generator e in R and each
jdimensional generator f in S with i+j=n. The boundary homomorphism in
the tensor product is described by an explicit formula involving just
the
boundaries of R and S. The following commands use this tensor product to show that the direct product A_{5}×S_{5 }of the alternating group of degree 5 with the symmetric group of degree 5 has 6dimensional integral homology H_{6}(A_{5}×S_{5},Z)=(Z_{2})^{10} +Z_{6} . 

gap>
R:=ResolutionFiniteGroup(AlternatingGroup(5),7);; gap> S:=ResolutionFiniteGroup(SymmetricGroup(5),7);; gap> RS:=ResolutionDirectProduct(R,S);; gap> TRS:=TensorWithIntegers(RS);; gap> Homology(TRS,6); [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6 ] 

The
tensor product of resolutions can be used to construct a (minimal)
resolution for any abelian group. For instance, the following commands
confirm the wellknown fact that the free abelian group Z^{5}
of rank 5 has H_{4}(Z^{5},Z) = Z^{5}. 

gap>
R:=ResolutionAbelianGroup([0,0,0,0,0],5);; gap> TR:=TensorWithIntegers(R);; gap> Homology(TR,4); [ 0, 0, 0, 0, 0 ] 

Consider
now the more general situation of a short exact sequence 1 → N
→ E → G → 1. In [C.T.C. Wall, "Resolutions for
extensions of groups", Proc. Cambridge Philos. Soc, 57 (1961), 251255]
it was shown that in this case too there exists a free ZEresolution
with the same number of generators as in the tensor product
R(×)S. The boundary homomorphism in the resolution is generally
more complicated than that in the tensor product. A number of related results have been discovered and studied by various people under the general name of Perturbation Theory. One variation of Wall's result is given in [G. Ellis, J. Harris & E. Sköldberg, "Polytopal resolutions for finite groups", J. Reine Angewandte Math.]. It concerns the more general case where N is not necessarily normal in G and also provides explicit formulae for the boundary in the "twisted tensor product". These formulae involve, in addition to the boundaries of R and S, a contracting homotopy on R (by which we mean a family of abelian group homomorphisms h_{n}:R_{n}→R_{n+1 }related to the boundary homomorphisms d_{n}:R_{n}→R_{n1 }via the formula d_{n}h_{n1}d_{n}=d_{n}). Formulae are also given for a contracting homotopy on the twisted tensor product itself. These formulae can be used to build resolutions and compute homology, as the following commands illustrate. 

gap>
P:=SylowSubgroup(MathieuGroup(23),2);; gens:=GeneratorsOfGroup(P);; gap> gensP:=[gens[4], gens[6], gens[2]];; Order(P)=Order(Group(gensP)); true gap> hom:=NaturalHomomorphismByNormalSubgroup(P,LowerCentralSeries(P)[3]);; gap> gensG:=List(GensP,x>Image(hom,x));; gap> S:=ResolutionfFiniteGroup(gensG,6);; gap> R:=ResolutionFiniteExtension(gensP,gensG,S,6);; gap> TR:=TensorWithIntegers(R);; gap> Homology(TR,5); [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ] 

The
function ResolutionFiniteExtension(gensE,gensG,S,n)
inputs generators
for the group E, the images of these generators in a quotient group G,
at least n terms of a ZGresolution S and a positive integer n. It
outputs n terms of a ZEresolution R. Thus the fifth integral homology
of
the Sylow 2subgroup P of M_{23} is H_{5}(P,Z)=(Z_{2})^{14}. The drawback to this divideandconquer technique is that it tends to substantially increase the number of generators in the resolution for E. Nevertheless, in low dimensions is can be repeatedly applied to large groups. One function for doing this is ResolutionNormalSeries([L_{1}, ... , L_{k}],n). The input is an integer n and a chain of subgroups L_{1} > L_{2} > ... > L_{k} each of which is normal in L_{1}. It outputs n terms of a resolution for the group L_{1}/L_{k}. The following commands show that the biggest Mathieu Group M_{24} has Sylow 2subgroup P with sixth mod 2 homology H_{6}(P,Z_{2})=(Z_{2})^{143}. 

gap>
P:=SylowSubgroup(MathieuGroup(24),2);; gap> R:=ResolutionNormalSeries(LowerCentraSeries(P),7);; gap> TR:=TensorWithIntegersModP(R,2); gap> Homology(R,6); 143 

For
an example involving a matrix group consider the group K arising as the
kernel of the canonical homomorphism SL_{2}(Z_{p3})
> SL_{2}(Z_{p}) with p an odd prime. This group
has order p^{6} and exponent p^{2}. It was show in
[J. Pakianathan, "Exponents and the cohomology of finite groups, Proc.
American Math. Soc., Vol. 128, No. 7 (1999), 18931897] that the
homology groups H_{n}(K,Z) have
exponent less than or equal to p^{2} for all but at most
finitely many n. In an earlier and longer paper [W. Browder & J.
Pakianathan,
"Cohomology of uniformly powerful pgroups", Trans. American Math.
Soc., Vol. 352, No. 6 (1999), 26592688] it had been proved that H_{3}(K,Z)
has exponent p^{3}. The group K is therefore an example of a
pgroup for which the maximal exponent of the homology groups H_{n}(K,Z)
occurs only finitely many times, thus disproving a conjecture of A.
Adem. The exponent of the low dimensional homology groups H_{n}(K,Z), for say p=3, can be computed using the following commands. (A quick way to construct K is as a maximal subgroup of the Sylow 3subgroup of SL_{2}(2,Z_{27}).) 

gap>
P:=SylowSubgroup(SL(2,Integers mod 27),3);; gap> K:=MaximalSubgroups(P)[2]; <group of 2x2 matrices of size 729 in characteristic 27> gap> L:=LowerCentralSeries(K);; gap> R:=ResolutionNormalSeries([L[1],L[2],Group(Identity(K))],6);; gap> TR:=TensorWithIntegers(R);; gap> Homology(TR,1); [ 3, 3, 3 ] gap> Homology(TR,2); [3, 3, 3] gap> Homology(TR,3); [3, 3, 3, 3, 3, 3, 27] gap> Homology(TR,4); [ 3, 3, 3, 3, 3, 3, 3, 3 ] gap> Homology(TR,5); [ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9 ] 

The
following commands show that the finitely presented dihedral group D_{100}
of order 200 has integral homology H_{99}(D_{100},Z)=(Z_{2})^{50}+Z_{100}
in dimension 99. 

gap>
F:=FreeGroup(2);;x:=F.1;;y:=F.2;; D:=F/[x^100,y^2,(x*y)^2];; gap> D_100:=Image(IsomorphismPermGroup(D));; gap> gens:=GeneratorsOfGroup(D_100);; gap> R:=ResolutionNormalSeries([gens, gens[1], Identity(D_100)],100);; gap> TR:=TensorWithIntegers(R);; gap> Homology(R,99); [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 100 ] 

The Sylow 2subgroup of the Symmetric group S_{20 }has order 2^{18}. The following commands show that this group G has third homology H_{3}(G,Z) = (Z_{2})^{56}+(Z_{4})^{7}.  
gap>
G:=SylowSubgroup(SymmetricGroup(20));; gap> R:=ResolutionNormalSeries(BigStepLCS(G,64),4);; gap> TR:=TensorWithIntegers(R);; gap> Homology(R,3); [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4 ] 

Using
the function TwistedTensorProduct()
this divideandconquer technique
can be applied to any
group G with a subnormal series G=L_{1} > L_{2} >
... > L_{k }. The only requirements are that we have
resolutions (with contracting homotopies) for the group L_{k}
and for each quotient L_{i}/L_{i+1}. In particular,
resolutions for polycyclic groups can be
found using the function ResolutionSubnormalSeries(L,n)
. The group G need not be finite. For example, the following commands use the divideandconquer technique to compute the integral homology of the free nilpotent group G of class two on four generators. The homology is trivial in dimensions greater than 10, and there is 3torsion in dimensions 4 and 5. This homology, and also that of the free nilpotent group of class two on five generators, was first calculated in [Larry Lambe, "Cohomology of principal Gbundles over a torus when H^{*}(BG,R) is polynomial", Bulletin Soc. Math. de Belgium, 38 (1986), 247264]. (The integral cohomology ring structure for the free nilpotent group of class two on three generators is investigated on a subsequent page. ) The group G is created using the GAP package "nq" by Werner Nickel. 

gap>
F:=FreeGroup(4);; gap> G:=NilpotentQuotient(F,2);; gap> R:=ResolutionNilpotentGroup(G,12);; gap> TR:=TensorWithIntegers(R);; gap> for n in [1..11] do > Print("Homology in dimension ", n," is \n",Homology(TR,n),"\n"); > od; Homology in dimension 1 is [ 0, 0, 0, 0 ] Homology in dimension 2 is [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 3 is [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 4 is [ 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 5 is [ 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 6 is [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 7 is [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 8 is [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] Homology in dimension 9 is [ 0, 0, 0, 0 ] Homology in dimension 10 is [ 0 ] Homology in dimension 11 is [ ] 

By
contrast, the following commands show that the integral homology of the
free nilpotent group of class three on three generators has 2torsion
in dimension 4. 

gap>
F:=FreeGroup(3);; gap> G:=NilpotentQuotient(F,3);; gap> R:=ResolutionNilpotentGroup(G,5);; gap> TR:=TensorWithIntegers(R);; gap> Homology(TR,4); time; [ 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] 46521881 

Note
the time taken by GAP's Smith Normal Form
algorithm to compute the homology in the last example! The 2torsion
can be detected more quickly using the universal coefficient exact
sequence for a trivial ZGmodule A (where (×) denotes the tensor
product over Z).
The third integral homology of the group G is quickly calculated and seen to be torsion free. So H_{4}(G,A) is isomorphic to H_{4}(G,Z) (×) A. The following commands now establish 2torsion in the fourth integral homology. 

gap>
F:=FreeGroup(3);; gap> G:=NilpotentQuotient(F,3);; gap> R:=ResolutionNilpotentGroup(G,5);; gap> TRrational:=TensorWithRationals(R);; gap> TRmod2:=TensorWithIntegersModP(R,2);; gap> Homology(TRrational,4);time; 171 320702 gap> Homology(TRmod2,4);time; 174 36705 

Some
of the
most interesting groups have no normal subgroup and so the above
techniques can't be applied to them. We need additional
techniques. 

