Let *Wφ* be a reflection coset on a vector space *V* and *Lwφ* a
reflection subcoset where *L* is a parabolic subgroup (the fixator of a
subspace of *V*). There are several interesting cases where the **relative
group** *N _{W}(Lwφ)/L*, or a subgroup of it normalizing some further data
attached to

A first example is the case where *φ=1* and *w=1*, *W* is the Weyl group
of a finite reductive group * G^{F}* and the Levi subgroup

A second example is when *L* is trivial and *wφ* is a ** ζ-regular
element**, that is the

A similar but more general example is when *V _{ζ}* is the

Finally, a still more general example, but which only occurs for Weyl
groups or Spetsial reflection groups, is when * L* is a

Further, in the above cases the relative group describes the decomposition of a Lusztig induction.

When * G^{F}* is a finite reductive group, and

Similarly, when * L* is a

The **CHEVIE** functions described in this chapter allow to explore these
situations.

`RelativeDegrees(`

`WF` [,`d`])

Let `WF` be a reflection group or a reflection coset. Here `d` specifies a
root of unity *ζ*: either `d` is an integer and specifies *ζ*
`=E(d)`

or is a fraction smaller *a/b* with *0<a<b* and specifies *ζ*
`=E(b)^a`

. If omitted, `d` is taken to be *0*, specifying *ζ=1*. Then
if *V _{ζ}* is the

`RelativeDegrees`

returns the reflection
degrees of this complex reflection group, which are a subset of those of
The point is that these degrees are obtained quickly by invariant-theoretic
computations: if *(d _{1},ε_{1}),...,(d_{n},ε_{n})* are the
generalized degrees of

gap> W:=CoxeterGroup("E",8); CoxeterGroup("E",8) gap> RelativeDegrees(W,4); [ 8, 12, 20, 24 ]

`RegularEigenvalues(`

`W`)

Let `W` be a reflection group or a reflection coset. A root of unity
*ζ* is a **regular eigenvalue** for `W` if some element of *<W>* has a
*ζ*-eigenvector which lies outside of the reflecting hyperplanes. The
function `RelativeDegree`

returns a list describing the regular eigenvalues
for `W`. If all the primitive *n*-th roots of unity are regular
eigenvalues, then *n* is put on the result list. Otherwise the fractions
*a/n* are added to the list for each *a* such that *E(n) ^{a}* is a primitive

gap> W:=CoxeterGroup("E",8);; gap> RegularEigenvalues(W); [ 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30 ] gap> W:=ComplexReflectionGroup(6);; gap> L:=Twistings(W,[2])[4]; Z3[I]<2>.(q-I) gap> RegularEigenvalues(L); [ 1/4, 7/12, 11/12 ]

`PositionRegularClass(`

`WF` [,`d`])

Let `WF` be a reflection group or a reflection coset. Here `d` specifies a
root of unity *ζ*: either `d` is an integer and specifies *ζ*
`=E(d)`

or is a fraction smaller *a/b* with *0<a<b* and specifies *ζ*
`=E(b)^a`

. If omitted, `d` is taken to be *0*, specifying *ζ=1*. The
root *ζ* should be a regular eigenvalue for `WF` (see
RegularEigenvalues). The function returns the index of the conjugacy
class of `WF` which has a *ζ*-regular eigenvector.

gap> W:=CoxeterGroup("E",8);; gap> PositionRegularClass(W,30); 65 gap> W:=ComplexReflectionGroup(6);; gap> L:=Twistings(W,[2])[4]; Z3[I]<2>.(q-I) gap> PositionRegularClass(L,7/12); 2

`EigenspaceProjector(`

`WF`, `w` ,`d`)

Let `WF` be a reflection group or a reflection coset. Here `d` specifies a
root of unity *ζ*: either `d` is an integer and specifies *ζ*
`=E(d)`

or is a fraction smaller *a/b* with *0<a<b* and specifies *ζ*
`=E(b)^a`

. The function returns the unique `w`-invariant projector on the
*ζ*-eigenspace of `w`.

gap> W:=CoxeterGroup("A",3); CoxeterGroup("A",3) gap> w:=EltWord(W,[1..3]); ( 1,12, 3, 2)( 4,11,10, 5)( 6, 9, 8, 7) gap> EigenspaceProjector(W,w,1/4); [ [ 1/4+1/4*E(4), 1/2*E(4), -1/4+1/4*E(4) ], [ 1/4-1/4*E(4), 1/2, 1/4+1/4*E(4) ], [ -1/4-1/4*E(4), -1/2*E(4), 1/4-1/4*E(4) ] ] gap> RankMat(last); 1

`SplitLevis(`

`WF` [, `d` [,`ad`]])

Let `WF` be a reflection group or a reflection coset. If `W` is a
reflection group it is treated as the trivial coset `Spets(W)`

.

Here `d` specifies a root of unity *ζ*: either `d` is an integer and
specifies *ζ*`=E(d)`

or is a fraction *a/b* with *0<a<b* and
specifies *ζ*`=E(b)^a`

. If omitted, `d` is taken to be *0*, specifying
*ζ=1*.

A **Levi** is a subcoset of the form *W _{1}F_{1}* where

The function returns a list of representatives of conjugacy classes of
*d*-split Levis of `W`. A *d*-split Levi is a subcoset of `WF` formed of
all the elements which act by *ζ* on a given subspace *V _{ζ}*. If the
additional argument

gap> W:=CoxeterGroup("A",3); CoxeterGroup("A",3) gap> SplitLevis(W,4); [ A3, (q+1)(q^2+1) ] gap> 3D4:=CoxeterCoset(CoxeterGroup("D",4),(1,2,4)); 3D4 gap> SplitLevis(3D4,3); [ 3D4, A2<1,3>.(q^2+q+1), (q^2+q+1)^2 ] gap> W:=CoxeterGroup("E",8); CoxeterGroup("E",8) gap> SplitLevis(W,4,2); [ D4<3,2,4,5>.(q^2+1)^2, (A1xA1)<5,7>x(A1xA1)<2,3>.(q^2+1)^2, 2(A2xA2)<3,1,5,6>.(q^2+1)^2 ]

gap3-jm

11 Mar 2019