Subgroups of pc-groups are treated as independent pc-groups in their own right, with the subgroup relationship maintained in internal data structures. Thus, a subgroup has generators and a pc-presentation and one can apply any of the functions described earlier for groups. Furthermore, there are a variety of functions and operations specifically involving subgroups.
The most flexible method of defining a subgroup is to list generators or normal generators for the subgroup.
Construct the subgroup H of the pc-group G generated by the elements specified by the terms of the generator list L.A term L[i] of the generator list may consist of any of the following objects:
The collection of words and groups specified by the list must all belong to the group G and H will be constructed as a subgroup of G.
- (a)
- An element liftable to G (in particular, any element of G);
- (b)
- A subgroup of G;
- (c)
- A set or sequence of (a), or (b).
The subgroup H is defined to be generated by the words specified directly by terms L[i] together with the stored generating words for any groups specified by terms of L[i]. Magma will compute a set of pc-generators for H and, if H is a p-group, a minimal generating set.
The inclusion map from H to G is returned as well.
Construct the subgroup N of the pc-group G as the normal closure of the subgroup generated by the elements specified by the terms of the generator list L.The possible forms of a term L[i] of the generator list are the same as for the sub-constructor.
The inclusion map from N to G is returned as well.
> G<a,b,c,d> := PolycyclicGroup<a,b,c,d| a^3, b^5, c^5, d^5, > b^a = c, c^a = d, d^a = b>; > H := sub<G| b,c>; > Order(H); 25 > IsAbelian(H); true > IsNormal(G, H); false > N := ncl<G| b,c>; > IsNormal(G, N); true > Order(N); 125
There are several functions and operators which allow one to take advantage of the subgroup relationship to rewrite elements from one presentation to another. That is, if x is an element of H which is a subgroup of G, then x has a representation as a normal word in the pc-generators of H, but also has a representation as a (different) normal word in the pc-generators of G. The coercion operator and inclusion map allow one to compute one of these words based on the other, thus shifting where we view the element in question.
Magma keeps track of the various relationships between subgroups in a group. Thus, if H is a subgroup of K which is a subgroup of G, then H can also be considered a subgroup G. Similarly, in situations involving elements of two groups, A and B, Magma will often try to find a covering group C which contains both of A and B. In this case, the elements may be automatically coerced into the covering group.
Given an element g and a group G, return true if g is an element of G, false otherwise. In order for this comparison to make sense, both g and G must be contained in some covering group.
Given an element g and a group G, return true if g is not an element of G, false otherwise. In order for this comparison to make sense, both g and G must be contained in some covering group.
Given an element g belonging to some subgroup H of the group G, rewrite g as an element of G.
Given an element g belonging to the group G, and given a subgroup H of G containing g, rewrite g as an element of H.
Given an element g belonging to the group H, and a group K, such that H and K are subgroups of a covering group G, and both H and K contain g, rewrite g as an element of K.
> G := DihedralGroup(GrpPC, 10); > C := sub<G| G.2>; > H := sub<G| G.1, G.3>; > H.1 in C; false > H.2 in C; true > Parent(H.1); GrpPC : H of order 10 = 2 * 5 PC-Relations: H.1^2 = Id(H), H.2^5 = Id(H), H.2^H.1 = H.2^4 > G!(H.1); G.1Magma will compute appropriate covering groups as needed.
> H.1*C.1; G.1 * G.2 * G.3^2 > x := (H.1, C.2); > x; G.3^2 > H!x; H.2^2 > C!x; C.2^2 > C!(H.2); C.2
Given a group G and a set S of elements belonging to a group H, where G and H have some covering group, return true if S is a subset of G, false otherwise.
Given a group G and a set S of elements belonging to a group H, where G and H have some covering group, return true if S is not a subset of G, false otherwise.
Given groups G and H, subgroups of some covering group, return true if H is a subgroup of G, false otherwise.
Given groups G and H, subgroups of some covering group, return true if H is not a subgroup of G, false otherwise.
Given groups G and H, subgroups of some covering group, return true if G and H are the same group, false otherwise.
Given groups G and H, subgroups of some covering group, return true if G and H are distinct groups, false otherwise.
The map from the subgroup H of G to G.
The operators and functions which construct a subgroup of a pc-group always return the subgroup as a pc-group.
Construct the conjugate g - 1 * H * g of the group H under the action of the element g. The group H and the element g must belong to a common group.
The intersection of groups H and K. The algorithm used for non-p-groups is described in [GS90].
Replace H with the intersection of groups H and K.
Construct the commutator subgroup of groups H and K, where H and K are subgroups of a common group G.
The centralizer of the element g in the group G.
The centralizer of the subgroup H in the group G.
The maximal normal subgroup of G that is contained in the subgroup H of G.
The normal closure of the subgroup H in the group G.
The normalizer of the subgroup H of the group G. The algorithm used for non-p-groups is described in [GS90].
> G := DirectProduct(CyclicGroup(GrpPC,6), DihedralGroup(GrpPC,5)); > x := G.3; > C := Centralizer(G,x); > C; GrpPC : C of order 12 = 2^2 * 3 PC-Relations: C.1^2 = Id(C), C.2^2 = Id(C), C.3^3 = Id(C) > H := sub<G|G.2,G.4>; > Order(H); 15We can compute the intersection using the meet operator.
> K := H meet C; > K; GrpPC : K of order 3 PC-Relations: K.1^3 = Id(K)To get the join of two subgroups, we simply use the sub-constructor.
> J := sub<G|H, C>; > J eq G; true
The index of the subgroup H in the group G, returned as an ordinary integer.
The factored index of the subgroup H in the group G.
Returns true if the subgroup H of the group G lies in the centre of G, false otherwise.
Given a group G and subgroups H and K belonging to G, return the value true if H and K are conjugate in G. The function returns a second value in the event that the subgroups are conjugate: an element z which conjugates H into K.
Returns true if the subgroup H of the group G is a maximal subgroup of G, false otherwise.
Returns true if the subgroup H of the group G is a normal subgroup of G, false otherwise.
Returns true if the subgroup H of the group G is self-normalizing in G, false otherwise.
Returns true if the subgroup H of the group G is subnormal in G, false otherwise.
> G := PCGroup(Sym(4)); > G; GrpPC : G of order 24 = 2^3 * 3 PC-Relations: G.1^2 = Id(G), G.2^3 = Id(G), G.3^2 = Id(G), G.4^2 = Id(G), G.2^G.1 = G.2^2, G.3^G.1 = G.3 * G.4, G.3^G.2 = G.4, G.4^G.2 = G.3 * G.4 > U := sub<G|G.4>; > IsNormal(G,U); false > IsSubnormal(G,U); trueNow, we try to construct a subnormal chain by taking normalizers.
> N1 := Normalizer(G,U); > Index(G,N1); 3 > N2 := Normalizer(G,N1); > Index(G,N2); 3 > N1 eq N2; trueWe're stuck. However, we can work our way down with NormalClosure.
> M1 := NormalClosure(G,U); > U subset M1; true > M1 subset U; false > M2 := NormalClosure(M1,U); > M2 eq U; trueNow, we work inside the Sylow 2-subgroup and look for complements of the cyclic group of order 4 by brute force.
> S := Sylow(G,2); > S; GrpPC : S of order 8 = 2^3 PC-Relations: S.2^S.1 = S.2 * S.3 > T := sub<S|S.1*S.2>; > list := []; > for x in S do > if (Order(x) ne 2) or (x in T) then > continue; > end if; > Append(~list, sub<S|x>); > end for; > #list; 4 > for i in [1..3], j in [i+1..4] do > print i,j,IsConjugate(S,list[i],list[j]); > end for; 1 2 true S.1 1 3 false 1 4 false 2 3 false 2 4 false 3 4 true S.2We see that T has two conjugacy classes of complements.
The functions given here all assume that G is a soluble group having order p1e1p2e2 ... pkek.
A complement basis of the soluble group G. This is a sequence of k subgroups of G, where the i-th subgroup has order p1e1 ... pi - 1^ (ei - 1) pi + 1ei + 1 ... pkek, i.e. the complements of the k Sylow subgroups of G.
The Hall π-subgroup of G, where π is defined by S. The argument S may be a set of primes, a single prime, or the negation of a single prime. If S = - p, then the Hall p'-subgroup of G is returned.
The core of the Hall π-subgroup, where π is defined by the argument S, which has the same interpretation as for HallSubgroup.
A Sylow basis for the soluble group G. This is a sequence of k subgroups of G, having orders p1e1, ..., pkek, i.e. the k Sylow subgroups of G.
A Sylow p-subgroup for the group G.
The system normalizer for the group G. The system normalizer of the complement basis Σ = { H1, ..., Hk } is defined to be the intersection of the normalizers in G of each Hi, ie. N(Σ) = ∩i=1k NG(Hi). The algorithm used is derived directly from the definition.
> H := DihedralGroup(GrpPerm, 5); > G := WreathProduct(DihedralGroup(GrpPC, 3), DihedralGroup(GrpPC, 5), > [H.2, H.1]); > H2 := HallSubgroup(G, 2); > Order(H2); 64The Hall 2'-subgroup of the same group is constructed as follows:
> H35 := HallSubgroup(G, -2); > Order(H35); 1215
Magma has functions for computing the subgroups of a group that return the subgroups either as a list of conjugacy class representatives as or as a poset. Details of these functions may be found in Chapter GROUPS. Here we mention the basic functions for convenience.
Conjugacy class representatives for all subgroups of G. The algorithm was developed by M. Slattery and is essentially that of [Hul99] without the action of automorphisms.
Conjugacy class representatives for all subgroups of the indicated type in G. The algorithm used is essentially that of [Hul99] without the action of automorphisms. Appropriate filters are applied to select the desired groups at each successive quotient in the computation.
Conjugacy class representatives for all subgroups of G having index ≤n in G.
A sequence of conjugacy class representatives for the maximal subgroups of G. The algorithm, developed by Charles Leedham-Green, relies on computing a special presentation for G.
The lattice of conjugacy classes of subgroups of G.
The Burnside matrix corresponding to the lattice of subgroups of G. The (i, j)th entry of the matrix is the number of subgroups in class i contained in a single subgroup of class j when i≤j, and is the number of subgroups of class i containing a given subgroup in class j when i≥j.
Burnside's table of marks corresponding to the lattice of subgroups of G. Rows correspond to marks for transitive permutation representations of G, while the entries in column j are the number of fixed points of subgroup class j in each transitive representation.
Pretty-print the Burnside matrix corresponding to the lattice of subgroups of G.
> G := DirectProduct(CyclicGroup(GrpPC,3), > DihedralGroup(GrpPC,3)); > ns := NormalSubgroups(G); > ns; Conjugacy classes of subgroups ------------------------------ [1] Order 1 Length 1 GrpPC of order 1 PC-Relations: [2] Order 3 Length 1 GrpPC of order 3 PC-Relations: $.1^3 = Id($) [3] Order 3 Length 1 GrpPC of order 3 PC-Relations: $.1^3 = Id($) [4] Order 6 Length 1 GrpPC of order 6 = 2 * 3 PC-Relations: $.1^2 = Id($), $.2^3 = Id($), $.2^$.1 = $.2^2 [5] Order 9 Length 1 GrpPC of order 9 = 3^2 PC-Relations: $.1^3 = Id($), $.2^3 = Id($) [6] Order 18 Length 1 GrpPC of order 18 = 2 * 3^2 PC-Relations: $.1^2 = Id($), $.2^3 = Id($), $.3^3 = Id($), $.3^$.1 = $.3^2The normal subgroups sequence has a special printing routine. Each entry in the sequence is actually a record.
> ns[2]; rec<recformat<order, length, subgroup, presentation> | order := 3, length := 1, subgroup := GrpPC of order 3 PC-Relations: $.1^3 = Id($)>We extract the two normal subgroups of order 3. Each of them turn out to have one conjugacy class of complements in G. However, one of the complements is normal and the other is not.
> N1 := ns[2]`subgroup; > N2 := ns[3]`subgroup; > c1 := Complements(G,N1); > c1; [ GrpPC of order 6 = 2 * 3 PC-Relations: $.1^2 = Id($), $.2^3 = Id($), $.2^$.1 = $.2^2 ] > c2 := Complements(G,N2); > c2; [ GrpPC of order 6 = 2 * 3 PC-Relations: $.1^2 = Id($), $.2^3 = Id($) ] > Index(G,Normalizer(G,c1[1])); 1 > Index(G,Normalizer(G,c2[1])); 3We can look at the full list of classes of subgroups of G to see that there are three classes of non-normal subgroups as well as the normal subgroups. There are two non-normal subgroups of order 3 in addition to N1 and N2.
> Subgroups(G); Conjugacy classes of subgroups ------------------------------ [ 1] Order 1 Length 1 GrpPC of order 1 PC-Relations: [ 2] Order 2 Length 3 GrpPC of order 2 PC-Relations: $.1^2 = Id($) [ 3] Order 3 Length 1 GrpPC of order 3 PC-Relations: $.1^3 = Id($) [ 4] Order 3 Length 1 GrpPC of order 3 PC-Relations: $.1^3 = Id($) [ 5] Order 3 Length 2 GrpPC of order 3 PC-Relations: $.1^3 = Id($) [ 6] Order 6 Length 1 GrpPC of order 6 = 2 * 3 PC-Relations: $.1^2 = Id($), $.2^3 = Id($), $.2^$.1 = $.2^2 [ 7] Order 6 Length 3 GrpPC of order 6 = 2 * 3 PC-Relations: $.1^2 = Id($), $.2^3 = Id($) [ 8] Order 9 Length 1 GrpPC of order 9 = 3^2 PC-Relations: $.1^3 = Id($), $.2^3 = Id($) [ 9] Order 18 Length 1 GrpPC of order 18 = 2 * 3^2 PC-Relations: $.1^2 = Id($), $.2^3 = Id($), $.3^3 = Id($), $.3^$.1 = $.3^2