We now describe functions to construct H2(G, U) for a finite soluble group G and finite abelian group U (a trivial G-module). We also present functions to construct central extensions of U by G.
Denote by Z2(G, U) the abelian group of all cocycles from G to U, under pointwise multiplication. The values ψ(g, h) of ψ ∈Z2(G, U) may be represented as a "cocyclic matrix" with entries in U.
If φ : G -> U is a set map with φ (1G) = 1U, then there is a coboundary ∂φ ∈Z2(G, U) defined by ∂φ(g, h) = φ(g) φ (h) φ(gh) - 1. The group of all coboundaries from G to U is denoted B2(G, U), and we have H2(G, U) = Z2(G, U)/B2(G, U). Then H2(G, U)=I x T, where I is the (faithful) image of Ext(G/G', U) ≤H2(G/G', U) under inflation, and T is the (faithful) image of Hom(H2(G), U) under a certain transgression homomorphism. Here we provide functions which construct representatives for the elements in a generating set for each of these two factors.
For details of the theory and the algorithm used, see [FO00].
SetVerbose ("Cocycle", 1) will provide additional information on the calculations in the functions.
Given a soluble group G and an abelian group U (both defined by pc-presentations) the function returns a sequence of tuples describing generators for Ext(G/G', U) as cocyclic matrices; the first entry in each tuple is a representative of a generator, the second is the order of the coset of the representative in H2(G, U).
Given a soluble group G and an abelian group U (both defined by pc-presentations) the function returns a sequence of tuples describing generators for Hom(H2 (G), U) as cocyclic matrices; the first entry in each tuple is a representative of a generator, the second is the order of the coset of the representative in H2(G, U).
For a soluble group G, the function returns an indexed set of elements of G listed in the order used by ExtGenerators and HomGenerators.
Let G be a soluble group G and U be an abelian group both defined by pc-presentations. Let Ext and Hom be the values returned by calling ExtGenerators and HomGenerators respectively. The function RepresentativeCocycles returns a complete and irredundant set of representatives for the elements of H2(G, U) as cocyclic matrices.
Let G be a soluble group G and U be an abelian group, both defined by pc-presentations. Further, let A be a cocyclic matrix (as determined by the function RepresentativeCocycles). Then, this function returns the central extension of U by G determined by the cocyclic matrix A.
If G is a soluble group G and U is an abelian group, both defined by pc-presentations, and Q is a sequence of cocyclic matrices (as determined by the function RepresentativeCocycles), this function returns the corresponding sequence of central extension of U by G determined by the sequence of cocyclic matrices A. Note that the central extensions thereby constructed need not be mutually non-isomorphic.
Given a soluble group G and an abelian group U (both defined by pc-presentations) the function creates a process P for central extensions of U by G. Note that the list of central extensions constructed by this process will contain all isomorphism types but the extensions need not be mutually non-isomorphic.
Given a central extension process P, construct the next central extension determined by P.
Return true if all central extensions determined by the process P have been constructed; otherwise return false.
> G := DihedralGroup(GrpPC, 4); > U := AbelianGroup(GrpPC, [2]); > > Ext := ExtGenerators(G, U); > Ext[1]; <[Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) Id(U) Id(U) Id(U) U.1 U.1 U.1 U.1] [Id(U) Id(U) Id(U) Id(U) U.1 U.1 U.1 U.1] [Id(U) Id(U) Id(U) Id(U) U.1 U.1 U.1 U.1] [Id(U) Id(U) Id(U) Id(U) U.1 U.1 U.1 U.1], 2>, > > Hom := HomGenerators(G, U); > Hom; [ <[Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) U.1 U.1 Id(U) Id(U) U.1 U.1 Id(U)] [Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U) Id(U)] [Id(U) U.1 U.1 Id(U) Id(U) U.1 U.1 Id(U)] [Id(U) Id(U) Id(U) U.1 Id(U) U.1 U.1 U.1] [Id(U) U.1 Id(U) Id(U) U.1 U.1 Id(U) U.1] [Id(U) Id(U) Id(U) U.1 Id(U) U.1 U.1 U.1] [Id(U) U.1 Id(U) Id(U) U.1 U.1 Id(U) U.1], 2> ] > > AbelianInvariants(Ext, Hom); [ 2, 2, 2 ]We now compute the central extension of U by G determined by a single cocyclic matrix.
> A := RepresentativeCocycles(G, U, Ext, Hom); > E := CentralExtension(G, U, A[2]); > E; GrpPC : E of order 16 = 2^4 PC-Relations: E.1^2 = E.4, E.2^2 = E.3 * E.4, E.2^E.1 = E.2 * E.3Alternatively we can build all central extensions of U by G.
> E := CentralExtensions(G, U, A); > "Number of extensions is ", #E; Number of extensions is 8Next, we provide an example of using the central extension process. Firstly, we create the groups and initialize the process.
> G := SmallGroup(12, 5); > U := AbelianGroup(GrpPC, [2, 3]); > P := CentralExtensionProcess(G, U);Now we run over the central extensions and count conjugacy classes.
> C := []; > while IsEmpty(P) eq false do > NextExtension(~P, ~E); > Append(~C, #Classes (E)); > end while; > "# conjugacy classes is ", C; # conjugacy classes is [ 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72, 45, 72 ]