GAP (HAP commands) - Chapter 6: Cohomology of groups

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

6 Cohomology of groups
6.1 Finite groups
6.2 Nilpotent groups
6.3 Crystallographic groups
6.4 Arithmetic groups
6.5 Artin groups
6.6 Graphs of groups
6.7 Cohomology with coefficients in a module
6.8 Exact cohomology coefficient sequence

### 6 Cohomology of groups

#### 6.1 Finite groups

It is possible to compute the low degree (co)homology of a finite group or monoid of small order directly from the bar resolution. The following commands take this approach to computing the fifth integral homology

H_5(Q_4, Z) = Z_2⊕ Z_2

of the quaternion group G=Q_4 of order 8.

    gap> Q:=QuaternionGroup(8);;
    gap> B:=BarComplexOfMonoid(Q,6);;
    gap> C:=ContractedComplex(B);;
    gap> Homology(C,5);
    [ 2, 2 ]

However, this approach is of limited applicability since the bar resolution involves |G|^k free generators in degree k. A range of techniques, tailored to specific classes of groups, can be used to compute the (co)homology of larger finite groups.

The following example computes the fourth integral cohomomogy of the Mathieu group M_24.

H^4(M_24, Z) = Z_12

    gap> GroupCohomology(MathieuGroup(24),4);
    [ 4, 3 ]

The following example computes the third integral homology of the Weyl group W=Weyl(E_8), a group of order 696729600.

H_3(Weyl(E_8), Z) = Z_2 ⊕ Z_2 ⊕ Z_12

    p> L:=SimpleLieAlgebra("E",8,Rationals);;
    gap> W:=WeylGroup(RootSystem(L));;
    gap> Order(W);
    696729600
    gap> GroupHomology(W,3);
    [ 2, 2, 4, 3 ]

The preceding calculation could be achieved more quickly by noting that W=Weyl(E_8) is a Coxeter group, and by using the associated Coxeter polytope. The following example uses this approach to compute the fourth integral homology of W. It begins by displaying the Coxeter diagram of W, and then computes

H_4(Weyl(E_8), Z) = Z_2 ⊕ Z_2 ⊕ Z_2 ⊕ Z_2.

    gap> D:=[[1,[2,3]],[2,[3,3]],[3,[4,3],[5,3]],[5,[6,3]],[6,[7,3]],[7,[8,3]]];;
    gap> CoxeterDiagramDisplay(D);

    gap> polytope:=CoxeterComplex_alt(D,5);;
    gap> R:=FreeGResolution(polytope,5);
    Resolution of length 5 in characteristic 0 for <matrix group with
    8 generators> .
    No contracting homotopy available.

    gap> C:=TensorWithIntegers(R);
    Chain complex of length 5 in characteristic 0 .

    gap> Homology(C,4);
    [ 2, 2, 2, 2 ]

The following example computes the sixth mod-2 homology of the Sylow 2-subgroup Syl_2(M_24) of the Mathieu group M_24.

H_6(Syl_2(M_24), Z_2) = Z_2^143

    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 following example constructs the Poincare polynomial

p(x)=frac1-x^3+3*x^2-3*x+1

for the cohomology H^∗(Syl_2(M_12, F_2). The coefficient of x^n in the expansion of p(x) is equal to the dimension of the vector space H^n(Syl_2(M_12, F_2). The computation involves Singular's Groebner basis algorithms and the Lyndon-Hochschild-Serre spectral sequence.

    gap> G:=SylowSubgroup(MathieuGroup(12),2);;
    gap> PoincareSeriesLHS(G);
    (1)/(-x_1^3+3*x_1^2-3*x_1+1)

The following example constructs the polynomial

p(x)=fracx^4-x^3+x^2-x+1x^6-x^5+x^4-2*x^3+x^2-x+1

whose coefficient of x^n is equal to the dimension of the vector space H^n(M_11, F_2) for all n in the range 0le nle 14. The coefficient is not guaranteed correct for nge 15.

    gap> PoincareSeriesPrimePart(MathieuGroup(11),2,14);
    (x_1^4-x_1^3+x_1^2-x_1+1)/(x_1^6-x_1^5+x_1^4-2*x_1^3+x_1^2-x_1+1)

#### 6.2 Nilpotent groups

The following example computes

H_4(N, Z) = (Z_3)^4 ⊕ Z^84

for the free nilpotent group N of class 2 on four generators.

    gap> F:=FreeGroup(4);; N:=NilpotentQuotient(F,2);;
    gap> GroupHomology(N,4);
    [ 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 ]

#### 6.3 Crystallographic groups

The following example computes

H_5(G, Z) = Z_2 ⊕ Z_2

for the 3-dimensional crystallographic space group G with Hermann-Mauguin symbol "P62"

    gap> GroupHomology(SpaceGroupBBNWZ("P62"),5);
    [ 2, 2 ]

#### 6.4 Arithmetic groups

The following example computes

H_6(SL_2(cal O, Z) = Z_2

for cal O the ring of integers of the number field Q(sqrt-2).

    gap> C:=ContractibleGcomplex("SL(2,O-2)");;
    gap> R:=FreeGResolution(C,7);;
    gap> Homology(TensorWithIntegers(R),6);
    [ 2, 12 ]

#### 6.5 Artin groups

The following example computes

H_5(G, Z) = Z_3

for G the classical braid group on eight strings.

    gap> D:=[[1,[2,3]],[2,[3,3]],[3,[4,3]],[4,[5,3]],[5,[6,3]],[6,[7,3]]];;
    gap> CoxeterDiagramDisplay(D);;

    gap> R:=ResolutionArtinGroup(D,6);;
    gap> C:=TensorWithIntegers(R);;
    gap> Homology(C,5);
    [ 3 ]

#### 6.6 Graphs of groups

The following example computes

H_5(G, Z) = Z_2⊕ Z_2⊕ Z_2 ⊕ Z_2 ⊕ Z_2

for G the graph of groups corresponding to the amalgamated product G=S_5*_S_3S_4 of the symmetric groups S_5 and S_4 over the canonical subgroup S_3.

    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);

    gap> R:=ResolutionGraphOfGroups(D,6);;
    gap> Homology(TensorWithIntegers(R),5);
    [ 2, 2, 2, 2, 2 ]

#### 6.7 Cohomology with coefficients in a module

There are various ways to represent a ZG-module A with action G× A → A, (g,a)↦ α(g,a).

One possibility is to use the data type of a G-Outer Group which involves three components: an ActedGroup A; an Acting Group G; a Mapping (g,a)↦ α(g,a). The following example uses this data type to compute the cohomology H^4(G,A) = Z_5 ⊕ Z_10 of the symmetric group G=S_6 with coefficients in the integers A= Z where odd permutations act non-trivially on A.

    gap> G:=SymmetricGroup(6);;

    gap> A:=AbelianPcpGroup([0]);;
    gap> alpha:=function(g,a); return a^SignPerm(g); end;;
    gap> A:=GModuleAsGOuterGroup(G,A,alpha);
    ZG-module with abelian invariants [ 0 ] and G= SymmetricGroup( [ 1 .. 6 ] )

    gap> R:=ResolutionFiniteGroup(G,5);;
    gap> C:=HomToGModule(R,A);
    G-cocomplex of length 5 .

    gap> Cohomology(C,4);
    [ 2, 2, 5 ]

If A= Z^n and G acts as

G× A → A, (g, (x_1,x_2,...,x_n)) ↦ (x_π(g)^-1(1), x_π(g)^-1(2), ..., x_π(g)^-1(n))

where π: G→ S_n is a (not necessarily faithful) permutation representation of degree n then we can avoid the use of G-outer groups and use just the homomorphism π instead. The following example uses this data type to compute the cohomology

H^6(G,A) = Z_2 ⊕ Z_6

and the homology

H_6(G,A) = Z_2

of the alternating group G=A_6 with coefficients in A= Z^5 where elements of G act on Z^5 via the canonical permutation of basis elements.

    gap> G:=AlternatingGroup(5);;
    gap> pi:=PermToMatrixGroup(SymmetricGroup(5),5);;
    gap> R:=ResolutionFiniteGroup(G,7);;
    gap> C:=HomToIntegralModule(R,pi);;
    gap> Cohomology(C,6);
    [ 2, 6 ]

    gap> D:=TensorWithIntegralModule(R,pi);;
    gap> Homology(D,6);
    [ 2 ]

#### 6.8 Exact cohomology coefficient sequence

A short exact sequence of ZG-modules A ↣ B ↠ C induces a long exact sequence of cohomology groups

→ H^n(G,A) → H^n(G,B) → H^n(G,C) → H^n+1(G,A) → .

Consider the symmetric group G=S_4 and the sequence Z_4 ↣ Z_8 ↠ Z_2 of trivial ZG-modules. The following commands compute the induced cohomology homomorphism

f: H^3(S_4, Z_4) → H^3(S_4, Z_8)

and determine that the image of this induced homomorphism has order 8 and that its kernel has order 2.

    gap> G:=SymmetricGroup(4);;
    gap> x:=(1,2,3,4,5,6,7,8);;
    gap> a:=Group(x^2);;
    gap> b:=Group(x);;
    gap> ahomb:=GroupHomomorphismByFunction(a,b,y->y);;
    gap> A:=TrivialGModuleAsGOuterGroup(G,a);;
    gap> B:=TrivialGModuleAsGOuterGroup(G,b);;
    gap> phi:=GOuterGroupHomomorphism();;
    gap> phi!.Source:=A;;
    gap> phi!.Target:=B;;
    gap> phi!.Mapping:=ahomb;;

    gap> Hphi:=CohomologyHomomorphism(phi,3);;

    gap> Size(ImageOfGOuterGroupHomomorphism(Hphi));
    8

    gap> Size(KernelOfGOuterGroupHomomorphism(Hphi));
    2

The following commands then compute the homomorphism

H^3(S_4, Z_8) → H^3(S_4, Z_2)

induced by Z_4 ↣ Z_8 ↠ Z_2, and determine that the kernel of this homomorphsim has order 8.

    gap> bhomc:=NaturalHomomorphismByNormalSubgroup(b,a);
    gap> B:=TrivialGModuleAsGOuterGroup(G,b);
    gap> C:=TrivialGModuleAsGOuterGroup(G,Image(bhomc));
    gap> psi:=GOuterGroupHomomorphism();
    gap> psi!.Source:=B;
    gap> psi!.Target:=C;
    gap> psi!.Mapping:=bhomc;

    gap> Hpsi:=CohomologyHomomorphism(psi,3);

    gap> Size(KernelOfGOuterGroupHomomorphism(Hpsi));
    8

The following commands then compute the connecting homomorphism

H^2(S_4, Z_2) → H^3(S_4, Z_4)

and determine that the image of this homomorphism has order 2.

    gap> delta:=ConnectingCohomologyHomomorphism(psi,2);;
    gap> Size(ImageOfGOuterGroupHomomorphism(delta));

Note that the various orders are consistent with exactness of the sequence

H^2(S_4, Z_2) → H^3(S_4, Z_4) → H^3(S_4, Z_8) → H^3(S_4, Z_2) .

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 Bib Ind

generated by GAPDoc2HTML