Dear GAP Forum,
Piotr Dowbor wrote:
I do not work with GAP at all, I am also not a specialist
in group theory but I would like to know whether one can
compute the second cohomology groups of finite groups with
coefficients in Z using some version of the GAP system.
The answer is yes, if the group is given by a finite
presentation and a matrix for the action of each generator
on a Z-lattice. The computation of the cohomology with
trivial coefficients is a special case with 1x1-matrices
whose only entry is 1 for each generator.
gap> RequirePackage( "cryst" ); gap> F := FreeGroup( 2 ); ## define the symmetric group on 3 letters. gap> G := F / [ F.1^2, F.2^3, (F.1*F.2)^2 ];; ## Matrices for the generators, permutation action. gap> mats := [ [[0,1,0],[0,0,1],[1,0,0]], [[0,1,0],[1,0,0],[0,0,1]] ];; gap> M := MatJacobianMatrix( G, mats );; gap> sol := SolveHomEquationsModZ( M );; gap> sol[1]; [ [ 0, 0, 0, 0, 0, 0 ], [ 1/2, 1/2, 1/2, 0, 0, 0 ] ] ## Matrices for the generators, trivial action. gap> mats := [ [[1]], [[1]] ];; gap> M := MatJacobianMatrix( G, mats );; gap> sol := SolveHomEquationsModZ( M );; gap> sol[1]; [ [ 0, 0 ], [ 1/2, 0 ] ]
The returned list contains the elements of the second
cohomology group with coefficients in Z. Addition has to be
performed modulo Z, that is [1/2,0]+[1/2,0] = [0,0]. So in
this case we obtain the cyclic group of order 2. The
elements are written as 6-tuples and pairs, respectively, of
rational numbers because this allows the explicit
construction the extensions of S_3.
The second cohomology with coefficients in Z or any
Z-lattice M with (possibly non-trivial) G-action is computed
as the first cohomology with coefficients in Q/Z via a
dimension shift that comes from the long exact sequence
obtained by applying the cohomology functor to
0 ---> M ---> Q^n ---> Q^n/M ---> 0.
This is why arithmetic in the examples above has to be done
modulo Z.
GAP has an extensive library of crystallographic groups and
finite integer matrix groups which are useful if one is
looking for examples.
A final remark: GAP has the capability of computing a
presentation for a given finite group. In the example above
a presentation for S_3 could have been obtained from the
permutation group by the command
gap> FpGroup( Group( (1,2,3),(1,2) ) );
I am happy to assist with any further question.
I hope this helps,
all the best, Werner Nickel.