Let G = < X | R > be a finitely presented group. Suppose that H is a subgroup of G having finite index m. Let V = { c1 (=H), c2, ..., cm } denote the set of distinct right cosets of H in G. This set admits a natural G-action f : V x G -> V where f : < ci, x > = ck iff ci * x = ck, for ci ∈V and x ∈G. The set V together with this action is a G-set called a right coset space for H in G. The action may also be represented using a coset table T.
If certain of the products ci * x are unknown, the corresponding images under f are undefined. In this case, T is not closed, and V is called an incomplete coset space for H in G.
A coset table is represented in Magma as a mapping. Given a finitely-presented group G and a subgroup H, the corresponding (right) coset table is a mapping f:{1, ..., r} x G -> {0, ..., r}, where r is the index of H in G. f(i, x) is the coset to which coset i is mapped under the action of x∈G. The value 0 is only included in the codomain if the coset table is not closed, and it denotes that the coset is not known.
The (right) coset table for G over subgroup H, constructed by means of the Todd-Coxeter procedure. If the coset table does not close then the codomain will include the value 0.
Experienced users can control the Todd-Coxeter procedure invoked by this function with a wide range of parameters. This function accepts the same parameters as the function CosetEnumerationProcess described in Chapter FINITELY PRESENTED GROUPS: ADVANCED.
Given a coset table T for a subgroup H of G, construct the permutation representation of G given by its action on the cosets of H, using the columns of T. The function returns:
- (a)
- The homomorphism f: G -> P;
- (b)
- The permutation group image P;
- (c)
- The kernel K of the action (a subgroup of G).
Given a coset table T for a subgroup H of G, construct the permutation group image of G given by its action on the cosets of H, using the columns of T. This is the second return value of CosetTableToRepresentation(G, T).
> G<a,b> := DihedralGroup(GrpFP, 0); > G; Finitely presented group G on 2 generators Relations b^2 = Id(G) (a * b)^2 = Id(G)We define a subgroup S of G and compute the coset table map for S in G.
> S := sub<G|a*b, a^10>; > ct := CosetTable(G, S); > ct; Mapping from: Cartesian Product<{ 1 .. 10 }, GrpFP: G> to { 1 .. 10 } $1 $2 -$1 1. 2 2 3 2. 4 1 1 3. 1 4 5 4. 6 3 2 5. 3 6 7 6. 8 5 4 7. 5 8 9 8. 10 7 6 9. 7 10 10 10. 9 9 8When printing the coset table, the action of the generators and of the non-trivial inverses of generators on the enumerated transversal is shown in table form.
Using the coset table, we now construct the permutation representation of G on the cosets of S in G. We assign the representation (a homomorphism), the image (a permutation group of degree [G:S] = 10) and the kernel of the permutation representation (a subgroup of G).
> fP, P, K := CosetTableToRepresentation(G, ct); > fP; Homomorphism of GrpFP: G into GrpPerm: P, Degree 10, Order 2^2 * 5 induced by a |--> (1, 2, 4, 6, 8, 10, 9, 7, 5, 3) b |--> (1, 2)(3, 4)(5, 6)(7, 8)(9, 10)Note that the images of a and b correspond to the first two columns of the printed coset table above.
> P; Permutation group P acting on a set of cardinality 10 Order = 20 = 2^2 * 5 (1, 2, 4, 6, 8, 10, 9, 7, 5, 3) (1, 2)(3, 4)(5, 6)(7, 8)(9, 10) > K; Finitely presented group K Index in group G is 20 = 2^2 * 5 Subgroup of group G defined by coset tableNow, we define a subgroup of infinite index in G and compute a coset table for it.
> H := sub<G|b>; > ct := CosetTable(G, H);Of course, the coset table cannot be complete; note that 0 is in its codomain, indicating unknown images of cosets.
> ct; Mapping from: Cartesian Product<{ 1 .. 1333331 }, GrpFP: G> to { 0 .. 1333331 }
The indexed (right) coset space V of the subgroup H of the group G is a G-set consisting of the set of integers { 1, ..., m}, where i represents the right coset ci of H in G. The action of G on this G-set is that induced by the natural G-action f : V x G -> V where f : < ci, x > = ck iff ci * x = ck, for ci ∈V and x ∈G. If certain of the products ci * x are unknown, the corresponding images under f are undefined, and V is called an incomplete coset space for H in G.
This function attempts to construct a coset space for the subgroup H in the group G by means of the Todd-Coxeter procedure. If the enumeration fails to complete, the function returns an incomplete coset space. The coset space is returned as an indexed right coset space. For a sample application of this function see Example H70E61.
Experienced users can control the Todd-Coxeter procedure invoked by this function with a wide range of parameters. This function accepts the same parameters as the function CosetEnumerationProcess described in Chapter FINITELY PRESENTED GROUPS: ADVANCED.
The explicit right coset space of the subgroup H of the group G is a G-set containing the set of right cosets of H in G. The elements of this G-set are the pairs < H, x >, where x runs through a transversal for H in G. Similarly, the explicit left coset space of H is a G-set containing the set of left cosets of H in G, represented as the pairs < x, H >. These functions use the Todd-Coxeter procedure to construct the explicit right (left) coset space of the subgroup H of the group G. For a sample application see Example H70E61.
Experienced users can control the Todd-Coxeter procedure invoked by these functions with a wide range of parameters. Both functions accept the same parameters as the function CosetEnumerationProcess described in Chapter FINITELY PRESENTED GROUPS: ADVANCED.
Right coset of the subgroup H of the group G, where g is an element of G (as an element of the right coset of H).
Coset to which the right coset C of the group G is mapped by the (right) action of g, where g is an element of G.
Given two right cosets of the same normal subgroup H of the group G, return the right coset that is the product of C and D.
Return true if element g of group G lies in the coset C.
Return true if element g of group G does not lie in the coset C.
Returns true if the coset C1 is equal to the coset C2.
Returns true if the coset C1 is not equal to the coset C2.
The cardinality of the coset space V.
The mapping V x G -> V giving the action of G on the coset space V. This mapping is a coset table.
The image of coset i as defined in the coset table T, under the action of word w.
The element of the explicit coset space that corresponds to indexed coset i.
The element of the indexed coset space V to which the element w of G corresponds.
The element of the indexed coset space V to which the explicit coset C of G corresponds.
The group G for which V is a coset space.
The subgroup H of G such that V is a coset space for G over H.
Returns true if the coset space V is complete.
Given a partial or complete coset space V for the group G over the subgroup H, or a coset table T corresponding to this coset space, this function returns the set of words E ={gi - 1hjgi | gi a generator of G, hj a generator of H, and, modulo V, gi - 1hjgi does not lie in H}. If E is empty, then H is a normal subgroup of G, while if E is non-empty, the addition of the elements of E to the generators of H will usually be a larger subgroup of the normal closure of H. This function may be used with incomplete coset spaces for G over H; it may then happen that some of the elements of E actually lie in H but there is insufficient information for this to be detected. This function is normally used in conjunction with the Todd-Coxeter algorithm when seeking some subgroup having index sufficiently small so that the Todd-Coxeter procedure completes. The conjugates are returned as a set of words.
Given a finitely presented group G and a subgroup H of G, this function returnsThese functions may require the computation of a coset table. Experienced users can control the behaviour of a possibly invoked coset enumeration with a set of global parameters. These global parameters can be changed using the function SetGlobalTCParameters. For a detailed description of the available parameters and their meanings, we refer to Chapter FINITELY PRESENTED GROUPS: ADVANCED.
- (a)
- A set of elements T of G forming a right transversal for G over H; and
- (b)
- The corresponding transversal mapping φ: G -> T. If T = [t1, ..., tr] and g ∈G, φis defined by φ(g) = ti, where g∈H * ti.
> G<a,b> := DihedralGroup(GrpFP, 0);We define a subgroup H of index 10 in G ...
> H := sub< G | a*b, a^10 >; > Index(G, H); 10... and construct a right transversal for H in G and the associate transversal map.
> RT, transmap := Transversal(G, H); > RT; {@ Id(G), a, a^-1, a^2, a^-2, a^3, a^-3, a^4, a^-4, a^5 @} > transmap; Mapping from: GrpFP: G to SetIndx: RTFrom this a left transversal is easily obtained:
> LT := {@ x^-1 : x in RT @}; > LT; {@ Id(G), a^-1, a, a^-2, a^2, a^-3, a^3, a^-4, a^4, a^-5 @}We construct the coset table and check whether the enumeration of the cosets is compatible to the enumeration of the right transversal RT.
> ct := CosetTable(G, H); > forall(culprit){ i : i in [1..Index(G, H)] > | ct(1, RT[i]) eq i}; trueIt is. Thus, we can very easily define a function RT x G -> RT, describing the action of G on the set of right cosets of H in G.
> action := func< r, g | RT[ct(Index(RT, r), g)] >;Note that the definition of the function action relies on the fact that the computed right transversal and its enumeration match the ones internally used for the coset table ct.
> action(Id(G), b); aI.e. H * b = H * a.
> action(a^-4, a*b); a^4I.e. Ha - 4 * (ab) = Ha4.
Consider the group G =< a, b | a8, b7, (ab)2, (a - 1b)3 > and the subgroup H of G, generated by a2 and a - 1b.
> F<x, y> := FreeGroup(2); > G<a, b> := quo< F | x^8, y^7, (x*y)^2, (x^-1*y)^3 >; > H := sub< G | a^2,a^-1*b >;We construct an indexed right coset space V and an explicit right coset space Vr for H in G.
> V := CosetSpace(G, H); > Vr := RightCosetSpace(G, H);The coset H always has index 1.
> trivial_coset := ExplicitCoset(Vr, 1); > trivial_coset; <GrpFP: H, Id(G)> > IndexedCoset(V, trivial_coset); 1We now pick a coset ...
> coset := ExplicitCoset(Vr, 42); > coset; <GrpFP: H, a^-1 * b^-1 * a^3 * b^-1>... multiply from the right with b ...
> coset * b; <GrpFP: H, a^-1 * b^-1 * a^3>... and check where this gets us in the indexed coset space V.
> IndexedCoset(V, coset * b); 23
> function DerSub(G) > > /* Initially define S to contain the commutator of each pair of distinct > generators of G */ > > S := { (x,y) : x, y in Generators(G) | (x,y) ne Id(G) }; > > /* successively extend S until it is closed under conjugation by the > generators of G */ > > repeat > V := CosetSpace(G, sub<G | S>); > E := ExcludedConjugates(V); > S := S join E; > until # E eq 0; > return sub<G | S>; > end function;
> function NormClosure(G, hgens) > xgens := hgens; > kgens := hgens; > indx := 0; > while # xgens ne 0 do > Include(~kgens, Representative(xgens)); > V := CosetSpace(G, sub<G | kgens>); > if IsComplete(V) then break; end if; > xgens := ExcludedConjugates(V); > end while; > if IsComplete(V) then > print "The subgroup generated by", kgens, "has index", #V; > return kgens; > else > print "The construction was unsuccessful"; > return { }; > end if; > end function;
The double coset H * g * K of the subgroups H and K of the group G, where g is an element of G.
Set of double cosets H * g * K of the group G.
This function may require the computation of a coset table. Experienced users can control the behaviour of a possibly invoked coset enumeration with a set of global parameters. These global parameters can be changed using the function SetGlobalTCParameters. For a detailed description of the available parameters and their meanings, we refer to Chapter FINITELY PRESENTED GROUPS: ADVANCED.
> G<a,b> := DihedralGroup(GrpFP, 0);... and the subgroup H of index 10 in G.
> H := sub< G | a*b, a^10 >;The set of H-H double cosets in G can be obtained with the statement
> DoubleCosets(G, H, H); { <GrpFP: H, Id(G), GrpFP: H>, <GrpFP: H, a^5, GrpFP: H>, <GrpFP: H, a^4, GrpFP: H>, <GrpFP: H, a^2, GrpFP: H>, <GrpFP: H, a, GrpFP: H>, <GrpFP: H, a^3, GrpFP: H> }
Given a fp-group G, and a partial or complete coset space V or coset table T for G over the subgroup H generated by the set of words S, these functions return representatives for the cosets of V which satisfy the conditions defined in the parameters. In the description of the parameters below, the symbol l will denote a Boolean value, while the symbol n will denote a positive integer in the range [1, #V].
The functions are not identical. CosetsSatisfying returns a set of coset representatives for V as defined in the parameters. CosetSatisfying is the same as CosetsSatisfying with the Limit parameter equal to 1; thus it returns a set containing a single coset representative, or an empty set if no cosets satisfy the conditions.
First: RngIntElt Default: 1Start looking for coset representatives satisfying the designated conditions beginning with coset i of V.
Last: RngIntElt Default: #VStop looking for coset representatives after examining coset j of V.
Limit: RngIntElt Default: ∞Terminate the search for coset representatives as soon as l have been found which satisfy the designated conditions. This parameter is not available for CosetSatisfying, since Limit is set to 1 for this function.
Normalizing: BoolElt Default: falseIf true, select coset representatives x such that, modulo V, the word x - 1h1x, ..., x1hsx is contained in H.
Order: RngIntElt Default: 0Select coset representatives x such that, modulo V, the word xn is contained in H.
Print: RngIntElt Default: 0If t > 0, print the coset representatives found to satisfy the designated conditions.
> G<a,b,c> := BraidGroup(GrpFP, 4); > H := sub< G | a,b >;We construct an -- obviously incomplete -- explicit right coset space for H in G.
> V := RightCosetSpace(G, H);Using the function CosetSatisfying, we compute an element of G, not contained in H, which normalises H.
> cs := CosetSatisfying(V, Generators(Subgroup(V)) > : Normalizing := true, First := 2); > cs; { <GrpFP: H, c * b * a^2 * b * c> } > rep := c * b * a^2 * b * c;The conjugates of a and b by this element had better be in H ...
> rep^-1 * a * rep in H; true > rep^-1 * b * rep in H; true... OK.
Given a subgroup H of the group G, this function constructs the permutation representation φof G given by the action of G on the cosets of H. It returns:The permutation representation is obtained by using the Todd-Coxeter procedure to construct the coset table for H in G. Note that G may be an infinite group: it is only necessary that the index of H in G be finite.
- (a)
- The homomorphism φ;
- (b)
- The image group φ(G).
- (c)
- (if possible) the kernel of φ.
Construct the permutation representation L of G given by the action of G on the coset space V. It returns the permutation representation φ(as a map) and its image.
Construct the image of G given by its action on the (right) coset space of H in G.
Construct the image of G as defined by its action on the coset space V.
The kernel of G in its action on the (right) coset space of H in G. (Only available when the index of H in G is very small).
This function may require the computation of a coset table. Experienced users can control the behaviour of a possibly invoked coset enumeration with a set of global parameters. These global parameters can be changed using the function SetGlobalTCParameters. For a detailed description of the available parameters and their meanings, we refer to Chapter FINITELY PRESENTED GROUPS: ADVANCED.
The kernel of G in its action on the (right) coset space V. (Only available when the index of the subgroup H of G defining the coset space is very small).
G = <a, b, c, d, e, f, g, h | a^2, b^2, c^2, d^2, e^2, f^2, g^2, h^2, (ab)^3, (ac)^2, (ad)^2, (ae)^4, (af)^2, (ag)^2, (ah)^3, (bc)^5, (bd)^2, (be)^2, (bf)^2, (bg)^4, (bh)^4, (cd)^3, (ce)^3, (cf)^4, (cg)^2, (ch)^2, (de)^2, (df)^3, (dg)^2, (dh)^2, (ef)^6, (eg)^2, (eh)^2, (fg)^4, (fh)^6, (gh)^2, a(cf)^2 = (adfh)^3 = b(ef)^3 = (baefg)^3 = 1, (cef)^7 = d(bh)^2 = d(aeh)^3 = e(bg)^2 = 1>under the homomorphism defined by the action of G on the cosets of the subgroup H = <a, b, c, d, e, f, g, (adefcefgh)39 >. The permutation group can be constructed as follows:
> F<s, t, u, v, w, x, y, z> := FreeGroup(8); > G<a, b, c, d, e, f, g, h> := quo<F | s^2, t^2, u^2, v^2, w^2, x^2, y^2, z^2, > (s*t)^3, (s*u)^2, (s*v)^2, (s*w)^4, (s*x)^2, (s*y)^2, (s*z)^3, > (t*u)^5, (t*v)^2, (t*w)^2, (t*x)^2, (t*y)^4, (t*z)^4, > (u*v)^3, (u*w)^3, (u*x)^4, (u*y)^2, (u*z)^2, > (v*w)^2, (v*x)^3, (v*y)^2, (v*z)^2, > (w*x)^6, (w*y)^2, (w*z)^2, > (x*y)^4, (x*z)^6, > (y*z)^2, > s*(u*x)^2 = (s*v*x*z)^3 = t*(w*x)^3 = (t*s*w*x*y)^3 = 1, > (u*w*x)^7 = v*(t*z)^2 = v*(s*w*z)^3 = w*(t*y)^2 = 1>; > H := sub< G | a, b, c, d, e, f, g, (a*d*e*f*c*e*f*g*h)^39 >; > V := CosetSpace(G, H: FillFactor := 100000); > Co1 := CosetImage(V); > Degree(Co1); 98280
> F<a,b,c,d,y,x,w> := FreeGroup(7); > z := y*c*a^2*b; > u := x*d; > t := w*c*a*d*b^2*c; > G<a,b,c,d,y,x,w>, g := > quo< F | a^4, b^4, c^2, d^2, (a,b), (a*c)^2, (b*c)^2, > (c*d)^2, d*a*d*b^-1, y^3, (a^-1*b)^y*d*a^-1*b^-1, > (c*d*a^-1*b)^y*b^-1*a*d*c, a*d*y*d*a^-1*y, x^3, > a^x*b^-1, b^x*a*b, c^x*c, (x*d)^2, (u*z)^6, w^3, > (w,y), (a*b)^w*b^-1*a*d*c, (c*d*a^-1*b)^w*d*c*b^2, > (b^2*c*d)^w*a^-1*b^-1, (c*a^2*b*w)^2, > (a^-1*b)^w*d*a^-1*b^-1, (t*u)^3 >; > z1 := g(z); > u1 := g(u); > t1 := g(t); > H := sub< G | z1*a^2*b^2, u1*c, t1*a^2*b^2 >; > f, G1, K := CosetAction(G, H); > Degree(G1); 351 > print Order(G1), FactoredOrder(G1); 4245696 [ <2, 6>, <3, 6>, <7, 1>, <13, 1> ] > CompositionFactors(G1); G | G(2, 3) 1 > S := sub< G1 | f(a), f(b), f(c), f(d) >; > BSGS(S); > S; Permutation group S of degree 351 Order = 64 = 2^6Thus the images of a, b, c and d in G1 generate the Sylow 2-subgroup