# 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\subseteq \{1,\dots,\hbox{\tt Rank(W)}\}$, the corresponding standard parabolic is denoted $W_J$. 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, SetEnum -> GrpPermCox`

The reflection subgroup of the permutation Coxeter group $W$ generated by the roots $\alpha_{a_1},\dots,\alpha_{a_k}$ where $a=\{a_1,\dots,a_k\}$ 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 $\alpha_{s_1},\dots,\alpha_{s_k}$ where $s=[s_1,\dots,s_k]$ 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, SetEnum -> GrpPermCox`

The standard parabolic subgroup of the Coxeter group $W$ generated by the simple roots $\alpha_{j_1},\dots,\alpha_{j_k}$ where $J=\{j_1,\dots,j_k\}\subseteq\{1,\dots,\hbox{\tt 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: Reflection Subgroups (ex-0f53d0)`

```magma
> 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 -> SetIndx`

The indexed set of (right) coset representatives of 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 -> SetIndx`

The indexed set of words of (right) coset representatives of 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: Transversals (ex-a0c74a)`

```magma
> 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 $W_J \le 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 $W_J,W_K$-double cosets representatives of minimal length in $W$. Restricted to $W$ finite. The second return value gives the generators of the standard parabolic subgroup $W_J\cap W_K^d$ for each double coset representative $d$.

## `DirectProduct(W1, W2): GrpPermCox, GrpPermCox -> GrpPermCox`

The direct product of the Coxeter groups $W_1$ and $W_2$.

## `Dual(W): GrpPermCox -> GrpPermCox`

The dual of the Coxeter group $W$, obtained by swapping the roots and coroots.

## `Example: Sum Dual (ex-4748b7)`

```magma
> 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($)

```
