[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Subgroup Constructions

Subgroup Constructions

The operations of this section all assume that the complete coset tables for the subgroups H and K of the fp-group G can be constructed.

Subsections
H ^ u : GrpFP, GrpFPElt -> GrpFP
Conjugate(H, u): GrpFP, GrpFPElt -> GrpFP
Given a subgroup H of finite index in the fp-group G, and a word u of G, construct the subgroup obtained by conjugating H by u. Note that this operation only requires that generating words for H in G be known: the complete coset table is not required.
H meet K : GrpFP, GrpFP -> GrpFP
Given subgroups H and K, both of finite index in the fp-group G, return the subgroup which is the intersection of H and K.
Core(G, H) : GrpFP, GrpFP -> GrpFP
Given a subgroup H of finite index in the fp-group G, construct the core of H in G.
GeneratingWords(G, H) : GrpFP, GrpFP -> { GrpFPElt }
If H has been defined as a subgroup of the fp-group G, this function returns generators of H as words in the generators of G (assuming they are known).
MaximalOvergroup(G, H) : GrpFP, GrpFP -> GrpFP
Given a subgroup H of finite index in the fp-group G, construct a maximal overgroup of H in G. A maximal overgroup of H is a maximal subgroup of G that contains H. If H is already maximal, the group G is returned.
MinimalOvergroup(G, H) : GrpFP, GrpFP -> GrpFP
Given a subgroup H of finite index in the fp-group G, construct a minimal overgroup of H in G. A minimal overgroup of a subgroup H is a subgroup K of G such that K contains H as a maximal subgroup. If H is already maximal in G, the group G is returned.
NormalClosure(G, H) : GrpFP, GrpFP -> GrpFP
Given a subgroup H of finite index in the fp-group G, construct the normal closure of H in G.
Normalizer(G, H) : GrpFP, GrpFP -> GrpFP
Given a subgroup H of finite index in the fp-group G, construct the normalizer of H in G.
SchreierGenerators(G, H) : GrpFP, GrpFP -> { GrpFPElt }
Given a subgroup H of finite index in the fp-group G, return the Schreier generators for H as a set of words in G.
SchreierSystem(G, H) : GrpFP, GrpFP -> {@ GrpFPElt @}, Map
Transversal(G, H) : GrpFP, GrpFP -> {@ GrpFPElt @}, Map
Given a subgroup H of finite index in the fp-group G, construct a (right) Schreier system of coset representatives for H in G. The function returns

(a) the Schreier system as a set of words in G;

(b) the corresponding Schreier coset function.

Transversal(G, H, K) : GrpFP, GrpFP, GrpFP -> {@ GrpFPElt @}, Map
Given subgroups H and K, both of finite index in the fp-group G, return an indexed set of words which comprise a set of representatives for the double cosets HuK of H and K in G, as well as a map from G to the representatives. It should be noted that this function is evaluated by first constructing the right cosets of H in G and then computing the orbits of the cosets under the action of the generators of the subgroup K. Thus, the applicability of this function is limited to subgroups H whose cosets may be enumerated by the Todd-Coxeter procedure.

Example GrpFP_SubgroupOps (H16E19)

We illustrate some of the subgroup constructions by applying them to construct subgroups of small index in the two-dimensional space group p4g which has presentation < r, s | r^2, s^4, (r, s)^2 >.

> p4g<r, s> := Group< r, s | r^2 = s^4 = (r*s^-1*r*s)^2 = 1 >;
> p4g;
GrpFP: p4g on 2 generators
Relations
      r^2 = Id(p4g)
      s^4 = Id(p4g)
      (r * s^-1 * r * s)^2 = Id(p4g)
> h := sub< p4g | (s^-1 * r)^4, s * r >;
> k := sub< p4g | (s^-1 * r)^2, (s * r)^2 >;
> Index(p4g, h);
8
> Index(p4g, k);
8
> n := NormalClosure(p4g, h);
> n;
Finitely presented group n on 5 generators
Index in group p4g is 2
Generators as words in group p4g
      n.1 = s * r
      n.2 = (s^-1 * r)^4
      n.3 = r^-1 * s * r^2
      n.4 = r * s
      n.5 = s^2 * r * s^-1
> m := MinimalOvergroup(p4g, h);
> m;
Finitely presented group m on 3 generators
Index in group p4g is 4 = 2^2
Generators as words in group p4g
      m.1 = s * r
      m.2 = (s^-1 * r)^4
      m.3 = (r * s)^2
> n := MaximalOvergroup(p4g, k);
> n;
Finitely presented group n on 4 generators
Index in group p4g is 2
Generators as words in group p4g
      n.1 = r
      n.2 = s^-2
      n.3 = s * r * s^2 * r * s^-2 * r * s^-2 * r * s^-1
      n.4 = s * r * s
> l := h meet k;
> l;
Finitely presented group l
Subgroup of group p4g defined by coset table
> j := h^s;
> j;
Finitely presented group j on 2 generators
Generators as words in group p4g
      j.1 = r * s
      j.2 = (s^-2 * r * s)^4
> j eq h;
false
> IsConjugate(p4g, h, j);
true r^-1
> c := Core(p4g, h);
> c;
Finitely presented group C on 17 generators
Index in group p4g is 32 = 2^5
Generators as words in group p4g
      C.1 = s^4
      C.2 = r * s^4 * r
      C.3 = (s * r)^4
      C.4 = (s * r * s^-1 * r)^2
      C.5 = (s^-1 * r * s * r)^2
      C.6 = (s^-1 * r)^4
      C.7 = s * r * s^2 * r * s^-1 * r * s^-2 * r
      C.8 = s * r * s^4 * r * s^-1
      C.9 = s^2 * r * s * r * s^-2 * r * s^-1 * r
      C.10 = s^2 * r * s^-1 * r * s^-2 * r * s * r
      C.11 = s^-1 * r * s^2 * r * s * r * s^-2 * r
      C.12 = s^-1 * r * s^4 * r * s
      C.13 = r * s * r * s^4 * r * s^-1 * r
      C.14 = r * s^-1 * r * s^4 * r * s * r
      C.15 = s^2 * r * s^2 * r * s^-2 * r * s^-2 * r
      C.16 = s^2 * r * s^4 * r * s^-2
      C.17 = r * s^2 * r * s^4 * r * s^-2 * r

Properties of Subgroups

The operations of this subsection all assume that the complete coset tables for the subgroups H and K of the fp-group G can be constructed.

u in H : GrpFPElt, GrpFP -> BoolElt
Given a subgroup H of finite index in the fp-group G, and a word u of G, return true if u is an element of H.
u notin H : GrpFPElt, GrpFP -> BoolElt
Given a subgroup H of finite index in the fp-group G, and a word u of G, return true if u is not an element of H.
H eq K : GrpFP, GrpFP -> BoolElt
Given subgroups H and K, both of finite index in the fp-group G, return true if H and K are equal.
H ne K : GrpFP, GrpFP -> BoolElt
Given subgroups H and K, both of finite index in the fp-group G, return true if H and K are not equal.
H subset K : GrpFP, GrpFP -> BoolElt
Given subgroups H and K, both of finite index in the fp-group G, return true if H is contained in K.
H notsubset K : GrpFP, GrpFP -> BoolElt
Given subgroups H and K, both of finite index in the fp-group G, return true if H is not contained in K.
IsConjugate(G, H, K) : GrpFP, GrpFP, GrpFP -> BoolElt, GrpFPElt
Given subgroups H and K, both of finite index in the fp-group G, return true and a conjugating element if H and K are conjugate subgroups of G and false otherwise.
IsNormal(G, H) : GrpFP, GrpFP -> BoolElt
Given a subgroup H of finite index in the fp-group G, return true if H is a normal subgroup of G.
IsMaximal(G, H) : GrpFP, GrpFP -> BoolElt
Given a subgroup H of finite index in the fp-group G, return true if H is a maximal subgroup of G.
IsSelfNormalizing(G, H) : GrpFP, GrpFP -> BoolElt
Given a subgroup H of finite index in the fp-group G, return true if H is a self-normalizing subgroup of G.

Example GrpFP_BuildSubgroups (H16E20)

The constructions of the previous section together with the Boolean function IsMaximal may be used to locate large maximal subgroups in a finite group. Consider the Hall-Janko group J_2, which may be defined by the presentation <a, b, c | a^3, b^3, c^3, abab^{-1}a^{-1}b^{-1}, (ca)^5, (cb)^5, (cb^{-1}cb)^2, a^{-1}baca^{-1}bac^{-1}a^{-1}b^{-1}ac^{-1}, aba^{-1}caba^{-1}c^{-1}ab^{-1}a^{-1}c^{-1}>. We examine subgroups generated by pairs of randomly chosen short words. Whenever we obtain a proper subgroup, if it is not already maximal we replace it by a maximal subgroup that contains it.

> J2<a, b, c> := Group<a, b, c | a^3, b^3, c^3, a*b*a*b^-1*a^-1*b^-1, (c*a)^5,
> 				(c*b)^5, (c*b^-1*c*b)^2,
> 				a^-1*b*a*c*a^-1*b*a*c^-1*a^-1*b^-1*a*c^-1,
> 				a*b*a^-1*c*a*b*a^-1*c^-1*a*b^-1*a^-1*c^-1>;
> 
> Seen := { 0, 1 };
> Found := { };
> Sgs := [ ];
> for i := 1 to 30 do
>     u := Random(J2, 1, 1);
>     v := Random(J2, 3, 5);
>     H := sub< J2 | u, v >;
>     Indx := Index(J2, H);
>     if Indx notin Seen then
>        Include(~Seen, Indx);
>          if not IsMaximal(J2, H) then 
>            H := MaximalOvergroup(J2, H);
>         end if; 
>        if Indx notin Found then
>            Include(~Sgs, H);  
>            Include(~Seen, Indx); 
>            Include(~Found, Indx); 
>        end if;
>    end if;
> end for;
> Sgs;

[ Finitely presented group on 3 generators Index in group J2 is 315 = 3^2 * 5 * 7 Generators as words in group J2 $.1 = b^-1 $.2 = a^-2 * c * a^-1 $.3 = c,

Finitely presented group on 3 generators Index in group J2 is 1008 = 2^4 * 3^2 * 7 Generators as words in group J2 $.1 = b^-1 $.2 = c^-1 * a^-1 * c^-1 * b $.3 = a * c * b * c^-1 * a^-1 * c * b * c^-1,

Finitely presented group on 3 generators Index in group J2 is 100 = 2^2 * 5^2 Generators as words in group J2 $.1 = c $.2 = (b * a^-1)^2 $.3 = a * b^-1 ]

Thus after taking 30 2-generator random subgroups, we have obtained three maximal subgroups, including the two largest maximal subgroups.
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]