Reflection Subgroups

A reflection subgroup of a Coxeter group is a subgroup which is generated by a set of reflections. Note that reflection subgroups are also Coxeter groups. The most important class of reflection subgroups are the standard parabolic subgroups, which are generated by a subset of the simple roots. Given a set of indices J⊆{1, ..., Rank(W)}, the corresponding standard parabolic is denoted WJ. A parabolic subgroup is a subgroup which is conjugate to a standard parabolic subgroup. Note that in a reflection subgroup, the elements are given as permutations of the roots of the larger group.

Most of the functions in this section are currently only implemented for permutation Coxeter groups with a root datum (rather than a root system).

ReflectionSubgroup(W, a) : GrpPermCox, () -> GrpPermCox
The reflection subgroup of the permutation Coxeter group W generated by the roots αa1, ..., αak where a={a1, ..., ak} is a set of integers. This only works if W has an underlying root datum.
ReflectionSubgroup(W, s) : GrpPermCox, [] -> GrpPermCox
The reflection subgroup of the permutation Coxeter group W generated by simple roots αs1, ..., αsk where s=[s1, ..., sk] is a sequence of integers. In this version the roots must be simple in the root subdatum (ie. none of them may be a summand of another) otherwise an error is signalled. The simple roots will appear in the reflection subgroup in the given order. This only works if W has an underlying root datum.
StandardParabolicSubgroup(W, J) : GrpPermCox, () -> GrpPermCox
The standard parabolic subgroupof the Coxeter group W generated by the simple roots αj1, ..., αjk where J={j1, ..., jk}⊆{1, ..., Rank(W)}. This function works for both finitely presented and permutation Coxeter groups.
IsReflectionSubgroup(W, H) : GrpPermCox, GrpPermCox -> BoolElt
Returns true if, and only if, H is a reflection subgroup of the permutation Coxeter group W.
IsParabolicSubgroup(W, H) : GrpPermCox, GrpPermCox -> BoolElt
Returns true if, and only if, H is a parabolic subgroup of the permutation Coxeter group W.
IsStandardParabolicSubgroup(W, H) : GrpPermCox, GrpPermCox -> BoolElt
Returns true if, and only if, H is a standard parabolic subgroup of the permutation Coxeter group W.
Overgroup(H) : GrpPermCox -> GrpPermCox
The overgroup of H, ie. the Coxeter group whose roots are permuted by the elements of the permutation Coxeter subgroup H.
Overdatum(H) : GrpPermCox -> RootDtm
The root datum whose roots are permuted by the elements of the permutation Coxeter subgroup H.
LocalCoxeterGroup(H) : GrpPermCox -> GrpPermCox, Map
Given a Coxeter subgroup H this returns the Coxeter group L isomorphic to H but acting on the roots of H itself rather than the roots of its overgroup, together with the isomorphism L to H.

Example GrpCox_ReflectionSubgroups (H105E24)

> W := CoxeterGroup("A4");
> P := StandardParabolicSubgroup(W, {1,2});
> Overgroup(P) eq W;
true
> L, h := LocalCoxeterGroup(P);
> hinv := Inverse(h);
> L.1;
(1, 4)(2, 3)(5, 6)
> h(L.1);
(1, 11)(2, 5)(6, 8)(9, 10)(12, 15)(16, 18)(19, 20)
> hinv(h(L.1));
(1, 4)(2, 3)(5, 6)
Transversal(W, H) : GrpPermCox, GrpPermCox -> @ @
The indexed set of (right) coset representativesof the reflection subgroup H of the Coxeter group W. This contains the unique element of shortest length in each coset. The algorithm is due to Don Taylor (personal communication).
TransversalWords(W, H) : GrpPermCox, GrpPermCox -> @ @
The indexed set of words of (right) coset representativesof the reflection subgroup H of the Coxeter group W. The algorithm is due to Don Taylor (personal communication).
TransversalElt(W, H, x) : GrpPermCox, GrpPermCox, GrpPermElt -> GrpPermElt
The representative of the coset Hx in the Coxeter group W. This is the unique element of Hx of shortest length in W and also the unique element of Hx which sends every positive root of H to another positive root. The algorithm is due to Don Taylor (personal communication).

Example GrpCox_Transversals (H105E25)

> W := CoxeterGroup("A4");
> P := StandardParabolicSubgroup(W, {1,2});
> x := W.1 * W.2 * W.3;
> x := TransversalElt(W, P, x);
> x eq W.3;
true
> x in Transversal(W, P);
true
TransversalElt(W, x, H) : GrpPermCox, GrpPermElt, GrpPermCox -> GrpPermElt
The representative of the coset xH in the Coxeter group W. This is the unique element of xH of shortest length in W and also the unique element of xH which sends every positive root of H to another positive root.
TransversalElt(W, H, x, J) : GrpPermCox, GrpPermCox, GrpPermElt, GrpPermCox -> GrpPermElt
The representative of the coset HxJ in the Coxeter group W. This is the unique element of HxJ of shortest length in W and also the unique element of HxJ which sends every positive root of HJ to another positive root.
Transversal(W, J) : GrpFPCox, (RngIntElt} -> (@ GrpFPCoxElt @)
Transversal(W, J, L) : GrpFPCox, (RngIntElt}, RngIntElt -> (@ GrpFPCoxElt @)
The set of right coset representatives of minimal length for the standard parabolic subgroup WJ ≤W. In the first form W must be finite and the result is a full transversal. In the second form W may be infinite, but the transversal produced is limited to words of length at most L.
Transversal(W, J, K) : GrpFPCox, (RngIntElt}, (RngIntElt} -> [ GrpFPCoxElt ], [ ]
The sequence of WJ, WK-double cosets representatives of minimal length in W. Restricted to W finite. The second return value gives the generators of the standard parabolic subgroup WJ∩WKd for each double coset representative d.
DirectProduct(W1, W2) : GrpPermCox, GrpPermCox -> GrpPermCox
The direct product of the Coxeter groups W1 and W2.
Dual(W) : GrpPermCox -> GrpPermCox
The dual of the Coxeter group W, obtained by swapping the roots and coroots.

Example GrpCox_SumDual (H105E26)

> W1 := CoxeterGroup("G2");
> W2 := CoxeterGroup("C3");
> DirectProduct(W1, Dual(W2));
Coxeter group: Permutation group acting on a set of cardinality 30
Order = 576 = 2^6 * 3^2
    (1, 7)(2, 5)(3, 4)(8, 11)(9, 10)
    (1, 3)(2, 8)(5, 6)(7, 9)(11, 12)
    (13, 22)(14, 16)(17, 20)(19, 21)(23, 25)(26, 29)(28, 30)
    (13, 16)(14, 23)(15, 17)(18, 21)(22, 25)(24, 26)(27, 30)
    (14, 19)(15, 24)(16, 21)(23, 28)(25, 30)
> W1 := CoxeterGroup(GrpFPCox, "G2");
> W2 := CoxeterGroup(GrpFPCox, "A2");
> DirectProduct(W1, W2);
Coxeter group: Finitely presented group on 4 generators
Relations
    $.1 * $.2 * $.1 = $.2 * $.1 * $.2
    $.1 * $.3 = $.3 * $.1
    $.1 * $.4 = $.4 * $.1
    $.2 * $.3 = $.3 * $.2
    $.2 * $.4 = $.4 * $.2
    $.3 * $.4 * $.3 = $.4 * $.3 * $.4
    $.1^2 = Id($)
    $.2^2 = Id($)
    $.3^2 = Id($)
    $.4^2 = Id($)
V2.28, 13 July 2023