AboutHap

Previous | About HAP: Mod p cohomology rings & the Steenrod algebra | next
There is much interest in the ring structure of the mod p cohomology H*(G,Zp) of p-groups G. Jon Carlson has computed these rings for all groups of order 64, the smaller 2-groups having been handled previously. He has contributed some very efficient functions to the Magma computer algebra system. His methods are described here, and his calculations can be found here. His methods rely on matrix algebra over the field of p elements and are not directly suitable for large groups. David Green has developed non-abelian Gröbner basis methods for calculating the mod p homology of larger groups. He has implemented his methods as a stand-alone C package. His calculations can be found here. Marcus Bishop has implemented Jon Carlson's functions in the GAP package Crime. Since the GAP package Crime focuses on mod p cohomology, only a few functions on this topic have so far been included in HAP. At present these HAP functions work differently to those for integral cohomology in that they rely heavily on matrix algebra and minimal resolutions. More work needs to be done on improving the effeciency of these functions.
Let G be the group G=SmallGroup(64,135) in the small groups library. The following HAP commands compute the ring H*(G,Zp) modulo all elements of degree greater than 10. The ring is returned as a structure constant algebra A over the field of two elements.
gap> R:=ResolutionPrimePowerGroup(SmallGroup(64,135),10); Resolution of length 10 in characteristic 2 for <pc group of size 64 with 6 generators> . No contracting homotopy available. A partial contracting homotopy is available. gap> A:=ModPCohomologyRing(R); <algebra of dimension 187 over GF(2)>
The following additional command shows that the ring H*(G,Zp) is generated by three elements in degree 1, two in degree 2, one in degree 3, one in degree 5, one in degree 8 and possibly some generators of degree greater than 10.
gap> S:=List(ModPRingGenerators(A),A!.degree); [ 0, 1, 1, 1, 2, 2, 3, 5, 8 ]
The Poincare series for the cohomology ring H*(G,Zp) is the infinite series a0 + a1x + a2x2 + a3x3 + ... where ak is by definition the dimension of the vector space Hk(G,Zk) . The Poincare function is a rational function P(x)/Q(x) equal to the Poincare series. The following commands compute the Poincare function for the Sylow 2-subgroup of the Mathieu group M12. They rely on an algorithm which seems unlikely to produce a wrong answer but for which we have no proof that the answer is always correct.
PoincareSeries(MathieuGroup(SylowSubgroup(MathieuGroup(12),2)); (1)/(-x^3+3*x^2-3*x+1)
Poincare series for groups of order 32 and most of the groups of order 64 are listed here.
Steenrod Algebra Given a finite p-group G, the short exact sequence Z >---> Z --->Zp of ZG-modules induces cohomology connecting homomorphisms b:Hn(G,Zp) --> Hn+1(G,Zp) for each n. The collection of all these connecting homomorphisms is known as the Bockstein homomorphism b:H*(G,Z_p) --> H*(G,Z_p). The following commands compute the Bockstein homomorphism on the generators of the ring H*(G,Zp), where p=3 and G=SmallGroup(81,4) is the fourth group of order 81 in GAP's library of small groups.
gap> G:=SmallGroup(81,4);; gap> A:=ModPSteenrodAlgebra(G,8);; gap> List(ModPRingGenerators(A),x->Bockstein(A,x)); [ 0*v.1, 0*v.1, v.5, 0*v.1, (Z(3))*v.7+v.8+(Z(3))*v.9 ]
The Bockstein together with the steenrod squares Sqk:Hn(G,Zp) --> Hn+k(G,Zp) for p=2, or steenrod powers Pk:Hn(G,Zp) --> Hn+2k(p-1)(G,Zp) for p>2, generate the Steenrod algebra. The Steenrod squares and powers are not yet fully implemented. However, the following commands compute the Steenrod square Sq1 on the generators of the ring H*(G,Z2) where G=SmallGroup(32,8) is the eighth group of order 32 in GAP's library of small groups. It is known that all mod-2 cohomology ring generators for this G lie in degrees at most 8, so only the first nine degrees of the ring H*(G,Z2) are computed. (This is a bit of a cheat because Sq1 is equal to the Bockstein homomorphism for p=2.) The higher squares Sqn are only partially implemented and return fail in cases where they are not yet implemented.
gap> G:=SmallGroup(32,8);; gap> N:=9;; gap> R:=ResolutionPrimePowerGroup(G,N+1);; gap> S:=ResolutionNormalSeries([G,Center(G)],N+1);; gap> A:=Mod2SteenrodAlgebra(G,N,R,S);; gap> List(ModPRingGenerators(A),x->Sq(A,1,x)); [ 0*v.1, 0*v.1, v.4+v.5+v.6, 0*v.1, v.7+v.9+v.10, v.12, v.20, v.23+v.25, v.28, v.39 ]
Previous Page | Contents | Next page