Given the cohomology module CM for the group G acting on the module M and an element s of H2(G, M), this function returns the corresponding extension E of the module M by G as a finitely presented group. The generators of E are chosen so that the generators of the acting group G (or rather strong generators for G when G is a permutation or matrix group) come first, and the generators of M come last. The argument s should be either an element of H2(G, M) or a sequence of integers defining such an element.The projection from E to G and the injection from an abelian group isomorphic to M to E are also returned.
This function may only be applied when the module M used to define CM is defined over a finite field of prime order, the integers, or as an abelian group in a call of CohomologyModule(G, Q, T).
Given the cohomology module CM for the group G acting on the module M, this function returns the split extension E of the module M by G as a finitely presented group. The generators of E are chosen so that the generators of the acting group G (or strong generators for G when G is a permutation or matrix group) come first, and the generators of M come last. The extension returned is the same as for Extension(CM, s) with s taken as the zero element of H2(G, M), but SplitExtension is much faster, and does not require H2(G, M) to be calculated first. This function will also work when the group used to define CM was a finitely presented group.The projection from E to G and the injection from an abelian group isomorphic to M to E are also returned.
This function may only be applied when the module M used to define CM is defined over a finite field of prime order, the integers, or as an abelian group in a call of CohomologyModule(G, Q, T).
Given the permutation group G and a prime p dividing the order of G, return the invariant factors of the p-part of the Schur multiplicator of G. This function calls Derek Holt's original cohomology code (see [Hol84]).
Given the permutation group G and the finitely presented group F such that G is an epimorphic image of F in the sense described below, and a prime p, return a presentation for the p-cover of G, constructed as an extension of the p-multiplier by F. Note that the epimorphism of F onto G must satisfy the conditions that, firstly, the generators of F are in one-to-one correspondence with those of G and, secondly, the relations of F are satisfied by the 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. This function calls Derek Holt's original cohomology code (see [Hol85a]).
> G := Alt(8); > M := PermutationModule(G,GF(3)); > X := CohomologyModule(G,M); > C := CohomologyGroup(X,2); > C; Full Vector space of degree 1 over GF(3)
The function Extension is used to construct a non-split extension E of the module M by the group G.
> E := Extension(X,[1]);
The object E is a finitely presented group, in which the 8 module generators come last. We now construct a (rather large-degree) faithful permutation representation of E.
> n := Ngens(E); > D := sub< E | [E.i : i in [n-7..n-1]] >; > ct := CosetTable(E,D:CosetLimit:=10^6,Hard:=true); > P := CosetTableToPermutationGroup(E,ct); > Degree(P); 60480 > #P eq 3^8 * #G; true
We extract the normal subgroup of order 38 of the extension E, and verify that the extension is non-split.
> Q := sub<P | [P.i : i in [n-7..n]] >; > #Q eq 3^8; true > IsNormal(P,Q); true > Complements(P,Q); []
> G := Alt(5); > M := PermutationModule(G,Integers()); > X := CohomologyModule(G,M); > CohomologyGroup(X,0); Full Quotient RSpace of degree 1 over Integer Ring Column moduli: [ 0 ] > CohomologyGroup(X,1); Full Quotient RSpace of degree 0 over Integer Ring Column moduli: [ ] > CohomologyGroup(X,2); Full Quotient RSpace of degree 1 over Integer Ring Column moduli: [ 3 ]
While we can form extensions of M in this case, we are unable to determine the distinct extensions.
> E := Extension(X,[1]); > E; Finitely presented group E on 8 generators Relations (E.4, E.5) = Id(E) (E.4, E.6) = Id(E) (E.4, E.7) = Id(E) (E.4, E.8) = Id(E) (E.5, E.6) = Id(E) (E.5, E.7) = Id(E) (E.5, E.8) = Id(E) (E.6, E.7) = Id(E) (E.6, E.8) = Id(E) (E.7, E.8) = Id(E) (E.1, E.4^-1) = Id(E) (E.1, E.5^-1) = Id(E) E.1^-1 * E.6 * E.1 * E.7^-1 = Id(E) E.1^-1 * E.7 * E.1 * E.8^-1 = Id(E) E.1^-1 * E.8 * E.1 * E.6^-1 = Id(E) E.2^-1 * E.4 * E.2 * E.5^-1 = Id(E) E.2^-1 * E.5 * E.2 * E.6^-1 = Id(E) E.2^-1 * E.6 * E.2 * E.4^-1 = Id(E) (E.2, E.7^-1) = Id(E) (E.2, E.8^-1) = Id(E) (E.3, E.4^-1) = Id(E) E.3^-1 * E.5 * E.3 * E.6^-1 = Id(E) E.3^-1 * E.6 * E.3 * E.7^-1 = Id(E) E.3^-1 * E.7 * E.3 * E.5^-1 = Id(E) (E.3, E.8^-1) = Id(E) E.1^-3 * E.4^-1 * E.5^-2 = Id(E) (E.1^-1 * E.3^-1)^2 = Id(E) E.3^-3 * E.4 * E.8^2 = Id(E) E.2^-1 * E.1 * E.3^-1 * E.2 * E.1^-1 * E.4^-1 * E.8^2 = Id(E) E.2 * E.3 * E.2 * E.3 * E.8^-4 = Id(E) E.2^-1 * E.3^-1 * E.2^2 * E.3^-1 * E.4 * E.5 * E.6^-2 * E.7 = Id(E) > DE := DistinctExtensions(X); Sorry, can only compute distinct extensions over prime field or finite abelian group