The functions below compute the distinct extensions of one group by another.
Given the cohomology module (CM) for the group G acting on the module M, this function returns a sequence containing all of the distinct extensions of the module M by G, each in the form returned by Extension(CM, s). Two such extensions E1, E2 are regarded as being distinct if there is no group isomorphism from one to the other that maps the subgroup of E1 corresponding to M to the subgroup of E2 corresponding to M.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).
> G := DirectProduct(CyclicGroup(2),CyclicGroup(2)); > M := TrivialModule(G,GF(2)); > C := CohomologyModule(G,M); > CohomologicalDimension(C,2); 3 > D := DistinctExtensions(C); > #D; 4
So there are 23 = 8 equivalence classes of extensions. But only four are distinct up to an isomorphism fixing the module. To examine them, we form permutation representations:
> DP := [ CosetImage(g,sub<g|>) : g in D ]; > [IsAbelian(d): d in DP]; [ true, true, false, false ] // the first two are abelian > [IsIsomorphic(d,DihedralGroup(4)) : d in DP]; [ false, false, true, false ] // The third one is dihedral > #[g : g in DP[4] | Order(g) eq 4]; 6
So the fourth group must be the quaternion group.
Given a prime p, a positive integer d, and a permutation group G, this function returns a list of finitely presented groups which are isomorphic to the distinct extensions of an elementary abelian group N of order pd by G. Two such extensions E1 and E2 with normal subgroups N1 and N2 isomorphic to N are considered to be distinct if there is no group isomorphism G1 -> G2 that maps N1 to N2. Each extension E is defined on d + r generators, where r is the number of generators of G. The last d of these generators generate the normal subgroup N, and the quotient of E by N is a presentation of G on its own generators.
> E := ExtensionsOfElementaryAbelianGroup(2,2,Alt(4)); > #E; 4
So there are four distinct extensions of an elementary group of order 4 by A4
> EP := [ CosetImage(g,sub<g|>) : g in E ]; > [#Centre(e): e in EP]; [ 1, 1, 4, 4 ]
The first two have nontrivial action on the module. The module generators in the extensions come last, so these will be e.3 and e.4. We can use this to test which of the extensions are non-split.
> [ Complements(e,sub<e|e.3,e.4>) eq [] : e in EP]; [ false, true, false, true ] > AbelianInvariants(Sylow(EP[2],2)); [ 4, 4 ]
So the first and fourth extensions split and the second and third do not. EP[2] has a normal abelian subgroup of type [4, 4].
Given permutation groups G and H, where H is soluble, this function returns a sequence of finitely presented groups, the terms of which are isomorphic to the distinct extensions of H by G. Two such extensions E1 and E2 with normal subgroups H1 and H2 isomorphic to H are considered to be distinct if there is no group isomorphism G1 -> G2 that maps H1 to H2. Each extension E is defined on d + r generators, where the last d generators generate the normal subgroup H, and the quotient of E by H is a presentation for G on its own generators. (The last d generators of E do not correspond to the original generators of H, but to a PC-generating sequence for H.)
> D4 := DihedralGroup(4); > time S := ExtensionsOfSolubleGroup(D4, D4); Time: 120.210 > #S; 20 > ES := [CosetImage(g,sub<g|>) : g in S ]; > [#Centre(g): g in ES]; [ 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2 ] > [NilpotencyClass(g) : g in ES ]; [ 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ] > [Exponent(g): g in ES]; [ 4, 8, 4, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 ]
> Z := Integers(); > G := PermutationGroup<4 | (1,2,4,3)>; > Q := [2, 4, 4]; > T := [ Matrix(Z,3,3,[1,2,0,0,0,1,0,1,2]) ]; > CM := CohomologyModule(G, Q, T); > extns := DistinctExtensions(CM); > extns; [ Finitely presented group on 4 generators Relations $.2^2 = Id($) $.3^4 = Id($) $.4^4 = Id($) ($.2, $.3) = Id($) ($.2, $.4) = Id($) ($.3, $.4) = Id($) $.1^-1 * $.2 * $.1 * $.3^-2 * $.2^-1 = Id($) $.1^-1 * $.3 * $.1 * $.4^-1 = Id($) $.1^-1 * $.4 * $.1 * $.4^-2 * $.3^-1 = Id($) $.1^4 = Id($), Finitely presented group on 4 generators Relations $.2^2 = Id($) $.3^4 = Id($) $.4^4 = Id($) ($.2, $.3) = Id($) ($.2, $.4) = Id($) ($.3, $.4) = Id($) $.1^-1 * $.2 * $.1 * $.3^-2 * $.2^-1 = Id($) $.1^-1 * $.3 * $.1 * $.4^-1 = Id($) $.1^-1 * $.4 * $.1 * $.4^-2 * $.3^-1 = Id($) $.1^4 * $.2^-1 * $.3^-1 * $.4^-3 = Id($), Finitely presented group on 4 generators Relations $.2^2 = Id($) $.3^4 = Id($) $.4^4 = Id($) ($.2, $.3) = Id($) ($.2, $.4) = Id($) ($.3, $.4) = Id($) $.1^-1 * $.2 * $.1 * $.3^-2 * $.2^-1 = Id($) $.1^-1 * $.3 * $.1 * $.4^-1 = Id($) $.1^-1 * $.4 * $.1 * $.4^-2 * $.3^-1 = Id($) $.1^4 * $.3^-2 * $.4^-2 = Id($) ]Since the extensions are soluble groups, we construct pc-presentations of each and verify that no two of the groups are isomorphic.
> E1 := SolubleQuotient(extns[1]); > E2 := SolubleQuotient(extns[2]); > E3 := SolubleQuotient(extns[3]); > IsIsomorphic(E1, E2); false > IsIsomorphic(E1, E3); false > IsIsomorphic(E2, E3); false
Degree: RngInt Default: 0
MaxId: RngInt Default: 15
DegreeBound: RngInt Default: ∞
For a given permutation group G, find normal abelian subgroup A<G such that G can be obtained by extending G/A by A. The function returns a sequence of tuples T containingIf DegreeBound is given, only subgroups A are considered such that G/A has less than DegreeBound many elements. The list considered contains only subgroups that are maximal under the restrictions. If Degree is given, G/A must have exactly Degree many elements.
- - the cohomology module of G/A acting on A
- - the 2-cocycle as an element in H2(G/A, A) corresponding to G
- - the actual 2-cocycle as a user defined function
- - a pair < a, b > giving the degree a of the transitive group G/A and the number b identifying the group in the data base. If b is larger than 20 (or MaxId) the hash value of the group is returned instead.
- - the abelian invariants of A
- - a set containing all pairs < a, b > such that aTb can be obtained through this extension process.
Degree: RngInt Default: 0
MaxId: RngInt Default: 15
DegreeBound: RngInt Default: ∞
For all groups G in L, IsExtensionOf is called. The first sequence returned contains tuples as in IsExtensionOf above. The sequence is minimal such that all groups in L can be generated using the cohomology modules in the sequence. The second return value contains a set of pairs < a, b > describing all transitive groups that can be obtained through the processes.