# Cohomology

In the following description, $G$ is a group in the category `GrpPerm`, $p$ is a prime number, and $K$ is the finite field of order $p$. Further, $F$ is a finitely presented group having the same number of generators as $G$, and is such that its relations are satisfied by the corresponding generators of $G$. In other words, the mapping taking the $i$-th generator of $F$ to the $i$-th generator of $G$ must be an epimorphism. Usually this mapping will be an isomorphism, although this is not mandatory.

## `pMultiplicator(G, p): GrpFin, RngIntElt -> [ RngIntElt ]`

Given the group $G$ and a prime $p$, return the invariant factors of the $p$-part of the Schur multiplicator of $G$.

## `pCover(G, F, p): GrpPerm, GrpFP, RngIntElt -> GrpFinFP`

Given the group $G$ and the finitely presented group $F$ such that $G$ is an epimorphic image of $G$ in the sense described above, return a presentation for the $p$-cover of $G$, constructed as an extension of the $p$-multiplier by $F$.

## `CohomologicalDimension(G, M, i): GrpFin, ModRng, RngIntElt -> RngIntElt`

Given the group $G$, the $K[G]$-module $M$ and an integer $i$ (equal to 1 or 2), return the dimension of the $i$-th cohomology group of $G$ acting on $M$.

## `ExtensionProcess(G, M, F): GrpPerm, ModRng, GrpFP -> GrpFPExtProc`

Create an extension process for the group $G$ by the module $M$.

## `Extension(P, Q): Process -> GrpFinFP`

## `NextExtension(P): Process -> GrpFinFP`

Return the next extension of $G$ as defined by the process $P$.

Assume that $F$ is isomorphic to the permutation group $G$, and that we wish to determine presentations for one or more extensions of the $K$-module $M$ by $F$, where $K$ is the field of $p$ elements. We first create an extension process using `ExtensionProcess(G, M, F)`. The possible extensions of $M$ by $G$ are in one-one correspondence with the elements of the second cohomology group $H^2(G,M)$ of $G$ acting on $M$. Let $b_1, \ldots, b_l$ be a basis of $H^2(G,M)$. A general element of $H^2(G,M)$ therefore has the form $a_1b_1 + \cdots + a_lb_l$ and so can be defined by a sequence $Q$ of $l$ integers $[a_1, \ldots, a_l]$. Now, to construct the corresponding extension of $M$ by $G$ we call the function `Extension(P, Q)`. The required extension is returned as a finitely presented group. If all the extensions are required then they may be obtained successively by making $p^l$ calls to the function `NextExtension`.

## `SplitExtension(G, M, F): GrpPerm, ModRng, GrpFP -> GrpFP`

The split extension of the module $M$ by the group $G$.
