|
|||
---|---|---|---|
HAP
can be used to make basic calculations in the cohomology of finite and
infinite groups.
For example, to calculate the integral homology Hn(D201,Z)
of the dihedral group of order 402 in dimension n=99 we could perform
the following commands. |
|||
gap>
F:=FreeGroup(2);; x:=F.1;; y:=F.2;; gap> G:=F/[x^2,y^201,(x*y)^2];; G:=Image(IsomorphismPermGroup(G));; gap> GroupHomology(G,99); [ 2, 3, 67 ] gap> time; 4845 |
|||
The
HAP command GroupHomology(G,n)
returns the abelian group
invariants of the n-dimensional homology of the group G with
coefficients in the integers Z with trivial G-action. We see that H99(D201,Z)
= Z402, (Timings are in milliseconds, and most are measured
on a
1.4GHz laptop with 256MB memory.) The above example has two features that dramatically help the computations. Firstly, D201 is a relatively small group. Secondly, D201 has periodic homology with period 4 (meaning that Hn(D201,Z) = Hn+4(D201,Z) for n>0) and so the homology groups themselves are small. Typically, the homology of larger non-periodic groups can only be computed in low dimensions. The following commands show that:
|
|||
gap>
GroupHomology(AlternatingGroup(7),10);time; [ 2, 3, 3, 3 ] 1756 gap> S:=Image(IsomorphismPermGroup(SL(3,3)));; gap> GroupHomology(S,8);time; [ 2, 3 ] 6340 gap> K:=MaximalSubgroups(SylowSubgroup(SL(2,Integers mod 5^3),5))[2]; gap> K:=Image(IsomorphismPcGroup(K)); gap> GroupHomology(K,3);time; [ 5, 5, 5, 5, 5, 5, 125 ] 3254 gap> G:=AbelianGroup([2,4,6,8,10,12]);; gap> GroupHomology(G,6);time; [ 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, 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, 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, 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, 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, 4, 4, 4, 4, 4, 12, 12, 12 ] 23265 gap> GroupHomology(MathieuGroup(23),2);time; [ ] 9395 gap> GroupHomology(MathieuGroup(23),3);time; [ ] 157961 gap> GroupHomology(MathieuGroup(23),4);time; [ ] 276853 gap> GroupHomology(MathieuGroup(23),5);time; [ 7 ] 20639802 gap> GroupHomology(MathieuGroup(24),3);time; [ 4, 3 ] 3205565 |
|||
Partial
information on high-dimensional integral homology of a finite group can
be
obtained if one is prepared to use an "empirical method" for Poincare
series which always seems to yield the right answer
but for which we have no guaranteed proof of correctness. For
example,
the following suggests that the group G of order 64,
arising as the Sylow 2-subgroup of the Mathieu group M12 ,
has in dimension 1000 an integral
homology
group H1000(G,Z)
equal to a direct sum of 501501 cyclic 2-groups. (An automated
proof of such computations can be attempted using the technique
described here.) |
|||
gap>
G:=SylowSubgroup(MathieuGroup(12),2);; gap> RankHomologyPGroup(G,1000,"empirical method"); 501501 gap> time; 3832 |
|||
The
command GroupHomology()
returns the mod p homology when an optional third argument is set equal
to a prime p. The following shows that the Sylow 2-subgroup P of the
Mathieu simple group M24 has 6-dimensional mod 2 homology H6(P,Z2)=(Z2)143
. (The group P has order 1024 and the computation took over
two hours to complete.) |
|||
gap>
GroupHomology(SylowSubgroup(MathieuGroup(24),2),6,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, 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, 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 ] |
|||
The
homology of certain infinite groups can also be calculated. The
following commands show that
|
|||
gap>
D:=[ [1,[2,3]], [2,[3,3]], [3,[4,3]],
[4,[5,3]], [5,[6,3]], [6,[7,3]] ];; gap> CoxeterDiagramDisplay(D);; ![]() [ 3 ] 13885 gap> S5:=SymmetricGroup(5);SetName(S5,"S5"); gap> S4:=SymmetricGroup(4);SetName(S4,"S4"); gap> A:=SymmetricGroup(3);SetName(A,"S3"); gap> AS5:=GroupHomomorphismByFunction(A,S5,x->x); gap> AS4:=GroupHomomorphismByFunction(A,S4,x->x); gap> D:=[S5,S4,[AS5,AS4]]; gap> GraphOfGroupsDisplay(D); ![]() [ 2, 2, 2, 2, 2 ] 22004 gap> GroupHomology(SpaceGroupBBNWZ("P62"),5);time; [ 2, 2 ] 4336 gap> GroupHomology(HeisenbergPcpGroup(5),5);time; [ 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, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] 73765 gap> F:=FreeGroup(4);; N:=NilpotentQuotient(F,2);; gap> GroupHomology(N,4);time; [ 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 ] 41967 |
|||
The
command GroupHomology(G,n)
is a composite of several more basic HAP functions and
attempts, in a fairly crude way, to make reasonable choices for a
number of parameters in
the calculation of group homology. For a particular group G you would
almost
certainly be better off using the more basic functions directly and
making the
choices yourself! Similar comments apply to functions for cohomology
(ring) calculations. The subsequent pages of this manual explain the basic HAP functions. The intending reader should be aware that many of the examples are intended to illustrate the full potential of HAP and consequently may take many minutes (and in one or two cases hours) to run. |
|||
We
end this introduction by mentioning that HAP can also be used to make
calculations such as:
|
|||
gap>
PoincareSeriesPrimePart(MathieuGroup(11),2,14); (x^4-x^3+x^2-x+1)/(x^6-x^5+x^4-2*x^3+x^2-x+1) gap> H:=ModPCohomologyGenerators(DihedralGroup(64),30);; gap> List(H[1], H[2]); [ 0, 1, 1, 2 ] gap> A:=MatLieAlgebra(Integers,3);; gap> LieAlgebraHomology(A,5); [ 2, 2, 2, 2, 2, 2, 2, 2, 0 ] gap> F:=FreeGroup(4);;G:=NilpotentQuotient(F,2);; gap> ThirdHomotopyGroupOfSuspensionB(G); [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] gap> G:=Image(IsomorphismPermGroup(GL(4,3)));; gap> NonabelianSymmetricKernel_alt(G); [ [ ], [ 2 ] ] gap> F:=FreeGroup(4);;G:=NilpotentQuotient(F,2);; gap> L:=LowerCentralSeriesLieAlgebra(G);; gap> LeibnizAlgebraHomology(L,3); [ 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] gap> F:=FreeGroup(6);;x:=F.1;;y:=F.2;;z:=F.3;;a:=F.4;;b:=F.5;;c:=F.6;; gap> rels:=[a^-1*x*y, b^-1*y*z, c^-1*z*x, a*x*(y*a)^-1, b*y*(z*b)^-1, c*z*(x*c)^-1];; gap> IsAspherical(F,rels);; Presentation is aspherical. gap> M:=GModuleByMats(GeneratorsOfGroup(GL(3,2)),GF(2));; gap> R:=ResolutionFpGModule(DesuspensionMtxModule(M),5);; gap> Cohomology(HomToIntegersModP(R,2),4); 2 |
|||
|