Let W be a finite Coxeter group, corresponding to a root system R in an Euclidean space V. Let S be the set of generators corresponding to some system of fundamental roots in R. Then {wsw^{-1} mid w in W, s in S} is the set of all reflections in W. A reflection subgroup H of W is a subgroup generated by the reflections it contains. If H is generated by reflections with respect to a subset of the fundamental roots it is called a standard parabolic subgroup of W. A parabolic subgroup is a subgroup H of W which is conjugate to some standard parabolic subgroup. A parabolic subgroup H is characterized among all reflection subgroups of W by the fact that the set of all roots in R for which the corresponding reflection lies in H is closed under (real) linear combinations.
It is a theorem discovered by Deodhar Deo89 and Dyer Dye90
independently at the same time that a reflection subgroup H has a
canonical set of fundamental roots even if it is not parabolic: Let Q
be the set of all roots for which the corresponding reflection lies in
H; then a fundamental system of roots for H is given by the positive
roots t in Q such that the set of roots whose sign is changed by the
reflection with root t meets Q in the single element t. This is
used by the routine ReflectionSubgroup
to determine the root system Q
of a reflection subgroup H. This function takes the original record
for W and a list of indices for the roots as input.
gap> W := CoxeterGroup( "G", 2 ); CoxeterGroup("G", 2) gap> W.roots[4]; [ 1, 2 ] gap> H := ReflectionSubgroup( W, [ 2, 4 ] ); ReflectionSubgroup(CoxeterGroup("G", 2), [ 2, 3 ]) gap> PrintDynkinDiagram( H ); ~A2 2 - 3 # not a parabolic subgroup
We also see that the result of the above algorithm is that W.roots[2]
and W.roots[3]
form a system of simple roots in H.
The line containing the Dynkin diagram of H introduces a convention:
we use the notation "~A"
to denote a root subsystem of type "A"
generated by short roots.
The record for the subgroup contains additional components the most
important of which is rootInclusion
which gives the positions of the
roots in Q in the original root system R:
gap> H.rootInclusion; [ 2, 3, 4, 8, 9, 10 ]The inverse map is stored in
H.rootRestriction
. If H is a standard
parabolic subgroup of W then the length function on H (with respect
to its set of generators) is the restriction of the length function on
W. This need not no longer be true for arbitrary reflection subgroups
of W:
gap> CoxeterLength( W, H.generators[2] ); 3 gap> CoxeterLength( H, H.generators[2] ); 1
In GAP, the Coxeter group W is represented as a permutation group on
R. Consequently, a reflection subgroup H subseteq W is a
permutation subgroup, i.e., its elements are represented as permutations
of the roots of the it parent group. This has to be kept in mind when
working with reduced expressions and functions like CoxeterWord
, and
PermCoxeterWord
.
Reduced words in simple reflections of H:
gap> el := CoxeterWords( H ); [ [ ], [ 2 ], [ 3 ], [ 2, 3 ], [ 3, 2 ], [ 2, 3, 2 ] ]
Reduced words in the generators of H:
gap> el1 := List( el, x -> H.rootRestriction{ x } ); [ [ ], [ 1 ], [ 2 ], [ 1, 2 ], [ 2, 1 ], [ 1, 2, 1 ] ]
Permutations on the roots of W:
gap> el2 := List( el, x -> PermCoxeterWord( H, x ) ); [ (), ( 1, 5)( 2, 8)( 3, 4)( 7,11)( 9,10), ( 1,12)( 2, 4)( 3, 9)( 6, 7)( 8,10), ( 1, 5,12)( 2,10, 3)( 4, 9, 8)( 6, 7,11), ( 1,12, 5)( 2, 3,10)( 4, 8, 9)( 6,11, 7), ( 2, 9)( 3, 8)( 4,10)( 5,12)( 6,11) ]
Reduced words in the generators of W:
gap> List( el2, x -> CoxeterWord( W, x ) ); [ [ ], [ 2 ], [ 1, 2, 1 ], [ 2, 1, 2, 1 ], [ 1, 2, 1, 2 ], [ 2, 1, 2, 1, 2 ] ]
Another basic result about reflection subgroups is that each coset of H in W contains a unique element of minimal length. Since a coset is a subset of W, the length of elements is taken with respect to the roots of W.) See ReducedRightCosetRepresentatives.
In many applications it is useful to know the decomposition of the
irreducible characters of W when we restrict them from W to a
reflection subgroup H (defined as in Section~refReflection
subgroups). In order to apply the usual GAP functions for inducing
and restricting characters and computing scalar products, we need to know
the fusion map for the conjugacy classes of H into those of W. This
is done, as usual, with the GAP function FusionConjugacyClasses
,
which calls a special implementation for Coxeter groups. The
decomposition of induced characters into irreducibles then is a simple
matter of combining some functions which already exist in GAP. There
is an additional function, InductionTable
, which performs this job.
gap> W := CoxeterGroup( "G", 2 );; gap> W.roots[4]; [ 1, 2 ] gap> H := ReflectionSubgroup( W, [ 2, 4 ] );; gap> Display( InductionTable( H, W ) ); Induction from ~A2 into G2tt |
111 21 3 ______________________ phi_{1,0}tt |
. . 1 phi_{1,6}tt |
1 . . phi_{1,3}'tt |
. . 1 phi_{1,3}''tt |
1 . . phi_{2,1}tt |
. 1 . phi_{2,2}tt |
. 1 .
We have similar functions for the j-induction and the J-induction of characters. These operations are obtained by truncating the induced characters by using the a-invariants and b-invariants associated with jInductionTable for Macdonald-Lusztig-Spaltenstein induction and JInductionTable).
GAP 3.4.4