Let *R* be a root system in the real vector space *V* as in
Chapter~refRoot systems and finite Coxeter groups. Let *F_0* be an
automorphism of *V*. We say that *F_0* is an **automorphism of R** if it
is of finite order, if

An automorphism *F_0* of *R* normalizes the reflection group *W:=W(R)*.
More precisely it induces an automorphism *F:;W rightarrow W*, defined
by *wmapsto F_0wF_0^{-1}*. A **Coxeter coset** is the coset *WF_0* in the
group of automorphisms of *V*, generated by *W* and *F_0*.

Let *Deltasubset R* be a set of simple roots of *R*. Then the set
*Delta F_0* is again a set of simple roots. So there is a unique element
*w_1 in W* such that *phi = w_1F_0* stabilizes *Delta*.

A subset *C* of a Coxeter coset *WF_0* is called a **conjugacy class** if
one of the following three equivalent conditions is fulfilled:
item
*C* is the orbit of an element in *WF_0* under the conjugation action of
*W*.
item
*C* is a conjugacy class of * < W,F_0 > * contained in *WF_0*.
item
The set *{w in Wmid;wF_0 in C}* is an *F*-conjugacy class of *W* (two
elements *v,w in W* are called *F*-conjugate, if and only if there exists
*x in W* with *v = xwF(x^{-1})*).

Let us consider the map from the set of irreducible characters of
* < W,F_0 > * to the set of characters of *W* given by
restriction. We get the following facts from Clifford theory: The
characters having a nonzero value on a class in the coset *WF_0* are
exactly those characters which restrict to irreducible ones on *W*. The
irreducible characters of *W* in the image of this map are exactly those
which are fixed under the canonical action of *F*. Let *chi in hat{W}*
be such a character and *chi_1,ldots,chi_r* the characters of * <
W,F_0 > * which restrict to *chi*. Then *r* is the smallest
positive integer such that *F_0^r in W* and the restrictions of the
*chi_i*, *i=1,ldots,r* to the conjugacy classes of *WF_0* are equal up
to scalar multiplication with *r*-th roots of unity.

In CHEVIE we choose (following Lusztig) for each *F*-stable character
of *W* a single (not canonical) extension to a character of * <
W,F_0 > *, which we will call a **preferred extension**. The table of
the restrictions of the preferred extensions to the coset *WF_0* is
called the **character table** of the coset *WF_0*. (See also the
subsequent section on `CharTable`

for Coxeter cosets.)

We define a scalar product on the class functions of a Coxeter coset
*WF_0* by
[langle chi,psi rangle := frac1mid Wmidsum_win W
chi(wF_0)barpsi(wF_0).]
Then the character table of *WF_0* contains an orthonormal set of class
functions on *WF_0*.

A **subcoset** *W_1w_0F_0* of *WF_0* is given by a reflection subgroup
*W_1* of *W* and an element *w_0* of *W* such that *w_0F_0* is an
automorphism of the root system *R_1* of *W_1*.

We then have a natural notion of **restriction** of class functions on
*WF_0* to class functions on *W_1w_0F_0* as well as of **induction** in the
other direction. These maps are adjoint with respect to the scalar
product defined above (see BMM93, p.15).
The question of finding the conjugacy classes and character table of a
Coxeter coset can be reduced to the case of irreducible root systems
*R*: First we assume that *F_0=phi*, i.e., *F_0* fixes a chosen set
*Delta* of simple roots, and consider the canonical monomorphism
* < W,F_0 > rightarrow Wrtimes < F> *, where *F*
is the automorphism of *W* defined above. It is clear that this map
induces a bijection from *WF_0* to *WFsubset Wrtimes < F> *
which preserves conjugacy classes in the cosets. The preferred
extensions are defined such that they factorize over this map. Let
*W_1,W_2leq W* be *F*-stable reflection subgroups of *W* such that
*W=W_1times W_2* and let *F_i* the restriction of *F* on *W_i*, *i=1,2*.
Here the preferred extension is defined via restriction to the image of
*Wrtimes < F> hookrightarrow (W_1rtimes < F_1> )
times (W_2rtimes < F_2> )*. Thus we can reduce the
determination of conjugacy classes and the character table of *WF_0* to
the case were *W* is decomposed in irreducible components *W=W_1times
cdots times W_k* which are cyclically permuted by *F*. In this case
there are natural bijections from the *F*-conjugacy classes of *W* to the
*F^k*-conjugacy classes of *W_1* as well as from the *F*-stable
characters of *W* to the *F^k*-stable characters of *W_1*. The definition
of preferred extensions on *WF* can be reduced to the definition of
preferred extensions for *W_1F^k*. So, we are reduced to the case that
*W* is the Coxeter group of an irreducible root system and *F* permutes
the simple roots, hence induces a graph automorphism on the corresponding
Dynkin diagram. If *F=1* then conjugacy classes and characters coincide
with those of the Coxeter group *W*. The nontrivial cases to consider
are (the order of *F* is written as left exponent to the type):
*^2A_n*, *^2D_n*, *^3D_4*, *^2E_6* and *^2I_2(2k+1)*. (Note that the
exceptional automorphisms of order *2* which permute the Coxeter
generators of the Coxeter groups of type *B_2*, *G_2*, *F_4* or *I_2(2k)*
do not come from automorphisms of the underlying root systems.)

In case *^3D_4* the group *Wrtimes < F> * can be embedded into
the Coxeter group of type *F_4*, which induces a labeling for the
conjugacy classes of the coset. The preferred extension is chosen as the
(single) extension with rational values. In case *^2D_n* the group
*Wrtimes < F> * is isomorphic to a Coxeter group of type
*B_n*. This induces a canonical labeling for the conjugacy classes of
the coset and allows to define the preferred extension in a combinatorial
way using the labels (pairs of partitions) for the characters of the
Coxeter group of type *B_n*. In the remaining cases the group
*Wrtimes < F> * is in fact isomorphic to a direct product
*Wtimes < w_0F> * where *w_0* is the longest element of *W*.
So, there is a canonical labeling of the conjugacy classes and characters
of the coset by those of *W*. The preferred extensions are defined by
describing the signs of the character values on *w_0F*.

In **GAP** we construct the Coxeter coset by starting from a Coxeter datum
specified by the matrices of `simpleRoots`

and `simpleCoroots`

, and
giving in addition the matrix `F0Mat`

of the map *F_0:V rightarrow V*
(see the commands `CoxeterCoset`

and `CoxeterSubCoset`

). As it is true
for the Coxeter groups the elements of *WF_0* are uniquely determined by
the permutation they induce on the set of roots *R*. We consider these
permutations as `Elements`

of the Coxeter coset.

<<<<<<< CHAP084.htm
Coxeter cosets are implemented in **GAP** by a record which points to a
Coxeter datum record and has additional fields holding `F0Mat`

, `F0Perm`

and the corresponding reduced element `phi`

. Functions on the coset work
with elements of the group coset *W F_0* (for example,
`ChevieClassInfo`

); however, most definitions for elements of untwisted
Coxeter groups apply without change to elements in *W F_0*: e.g., if we
define the length of an element *wphi in W F_0* as the number of
positive roots it sends to negative ones, it is the same as the length of
*w*, i.e., *phi* is of length *0*, since *phi* has been chosen to
preserve the set of positive roots. Similarly, the `CoxeterWord`

describing *wphi* is the same as the one for *w*, etc*ldots*

We associate to a Coxeter coset *WF_0* a **twisted Dynkin diagram**,
consisting of the Dynkin diagram of *W* and the graph automorphism
induced by *phi* on this diagram (this specifies the group
*Wrtimes < F> *, mentioned above, up to isomorphism). See the
commands `CartanType`

, `CartanName`

and `PrintDynkinDiagram`

for Coxeter
cosets.

The motivation for introducing this notion comes from the theory of
Chevalley groups, or more generally reductive algebraic groups over
finite fields. Let *bG* be a reductive algebraic group over the
algebraic closure *overlineFF_q* of a finite field *FF_q*, which is
defined over *FF_q*, with corresponding Frobenius endomorphism *F*, so
the finite group of rational points *bG(FF_q)* identifies to the
subgroup *bG^F* of fixed points under *F*. Let *bT* be an *F*-stable
maximal torus of *bG*. The Weyl group of *bG* with respect to *bT* is
the quotient *W=N_bG(bT)/bT*. Let *X(bT)* be the character group of
*bT*, that is the group of rational homomorphisms *bTtooverline
FF_q*. The group *W* acts naturally on *X(bT)*, and thus also on the
vector space *V=RR otimes X(bT)*. It is a fundamental fact in the
theory of reductive groups that there is a canonical root system *Phi*
in *V* defined by *(bG,bT)* such that *W* is the Weyl group of that
root system.

The Frobenius endomorphism *F* acts also naturally on *X(T)* and defines
thus an endomorphism of *V*, which is of the form *q F_0*, where * F_0*
is an automorphism of finite order of *V*. We get thus a Coxeter datum
*(V,W, F_0)*.

To completely specify *bG^F* up to isomorphism, we need a little more
information. Let *Y(bT)* be the group of cocharacters of *bT*, that is
of rational homomorphisms *overlineFF_qtobT*. The *ZZ*-modules
*X(bT)* and *Y(bT)* are naturally dual to each other, and there is a
canonical root system *Phidual* in *Y(bT)* dual to *Phi*. Let
*Vdual= RR otimes Y(bT)*. The classification theorems on reductive
groups show that the isomorphism type of *bG^F* is completely determined
by the datum *(V,Phi,Vdual,Phidual, F_0)*, and the integer *q*.
Thus we can think of this datum as a way of representing in **GAP** the
essential information which determines a Chevalley group. Indeed, all
properties of Chevalley groups can be computed from its Weyl datum:
symbols representing unipotent characters, conjugacy classes, and finally
the whole character table of *bG^F*.

It turns out that an interesting part of the objects attached to this
datum depends only on *(V,W, F_0)*: the order of the maximal tori, the
``fake degrees", the order of *bG^F*, Deligne-Lusztig induction in
terms of ``almost characters", symbols representing unipotent characters
and Deligne-Lusztig induction, etc*ldots* (see, e.g., BMM93). It
is thus possible to extend their construction to non-crystallographic
groups (or even to more general complex reflection groups); this is why
we did not include *Phi* in the definition of a Coxeter coset.

However, in **GAP** we will always have the whole datum
*(V,Phi,Vdual,Phidual, F_0)*. We assume that we have chosen a Borel
subgroup of *bG* containing *bT*. This defines an order on the roots,
and thus a basis *Pi* of *Phi* as well as a basis *Pidual* of
*Phidual*. Any element of *W F_0* induces a permutation of the roots,
and there is a unique element *phi in W F_0*, which we call the **reduced
element** in the coset, which preserves the set of positive roots. This
element is stored in the component `phi`

of the coset, and can be used to
test isomorphism of cosets. The coset *W F_0* is completely defined by
the permutation `F0Perm`

of the roots induced by *F_0* when *bG* is
semi-simple (in which case *Phi* generates *V*). So in this case we
just need to specify `F0Perm`

when defining the coset.

We should mention also a special case of Chevalley groups which does not
exactly fit the above description: the Ree and Suzuki groups. In these
cases, the group is defined as *bG^F* where *F* is not a Frobenius
endomorphism, but an isogeny such that either *F^2* or *F^3* is a
Frobenius endomorphism. Here, *F* still defines an endomorphism of *V*
which normalizes *W* (and induces the automorphism of order 2 of *W* ---
*W* is of type *G_2*, *B_2* or *F_4*), but this endomorphism is no longer
*q* times an endomorphism of finite order; however, up to some power of
*q*, * F_0* still takes a form independent of *q* (but here, *q* is a
power of a fixed prime *p* equal to *2* or *3* depending on the group
considered). This has not yet been implemented.

- CoxeterCoset
- CoxeterSubCoset
- Functions on Coxeter cosets
- CartanType for Coxeter cosets
- ChevieClassInfo for Coxeter cosets
- CharTable for Coxeter cosets
- Frobenius
- PhiFactors

`CoxeterCoset( `

`W`[, `F0Mat` ] )

`CoxeterCoset( `

`W`[, `F0Perm`] )

This function returns a Coxeter coset as a **GAP** object. The argument
`W` must be a Coxeter group (created by `CoxeterGroup`

or
`ReflectionSubgroup`

). In the first form the argument `F0Mat` must be an
invertible matrix with `Rank(`

rows, representing an automorphism
`W`)*F_0* of the root system of the parent of `W`. In the second form
`F0Perm` is a permutation which describes the images of the simple roots
under *F_0* (and only these images are used). Of course this form is
only allowed if the semisimple rank of `W` equals the rank (i.e., the
simple roots are a basis of *V*). If there is no second argument the
default for `F0Mat` is the identity matrix.

`CoxeterCoset`

returns a record from which we document the following
components:

`isDomain`

,`isFinite`

:

true

`coxeter`

:

the Coxeter group`W`

`F0Mat`

:

the matrix acting on*V*which represents*F_0*

`F0Perm`

:

the permutation on the roots of`W`induced by`F0Mat`

`phi`

:

the shortest element in the coset (as permutation)

`w1`

:

`phi`

/`F0Perm`

In the first example we create a Coxeter coset corresponding to the
general unitary groups *GU_3(q)* over finite fields with *q* elements.

gap> W := CoxeterGroup( [ [ 1, -1, 0 ], [ 0, 1, -1 ] ], > [ [ 1, -1, 0 ], [ 0, 1, -1 ] ] );; gap> gu3 := CoxeterCoset( W, -IdentityMat( 3 ) ); CoxeterCoset(CoxeterGroup([ [ 1, -1, 0 ], [ 0, 1, -1 ] ], [ [ 1, -1, 0 ], [ 0, 1, -1 ] ]), [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ 0, 0, -1 ] ]) gap> F4 := CoxeterGroup( "F", 4 );; gap> D4 := ReflectionSubgroup( F4, [ 1, 2, 16, 48 ] ); ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 9, 16 ]) gap> PrintDynkinDiagram( D4 ); D4 9 \ 1 - 16 / 2 gap> 3D4 := CoxeterCoset( D4, (2,9,16) ); CoxeterCoset(ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 9, 16 ]), ( 2, 9,16))

These functions require the package "chevie" (see RequirePackage).

`CoxeterSubCoset( `

`WF`, `r`, [`w`] )

Returns the reflection subcoset of the Coxeter coset `WF` generated by
the reflections with roots specified by `r`. `r` is a list of indices
specifying a subset of the roots of `W` where `W` is the Coxeter group
`CoxeterGroup(`

. If specified, `WF`)`w` must be an element of *W* such
that `w*WF.F0Perm`

normalizes the subroot system generated by `r`. If
absent, the default value for `w` is `()`

. It is an error, if
`w*WF.F0Perm`

does not normalize the subsystem.

gap> CoxeterSubCoset( CoxeterCoset( CoxeterGroup( "A", 2 ), (1,2) ), > [ 1 ] ); Error, must give w, such that w * WF.F0Perm normalizes subroot system. in CoxeterSubCoset(CoxeterCoset(CoxeterGroup("A", 2), (1,2)), [ 1 ]) called from main loop brk> gap> f4coset := CoxeterCoset( CoxeterGroup( "F", 4 ) ); CoxeterCoset(CoxeterGroup("F", 4)) gap> w := RepresentativeOperation( CoxeterGroup( f4coset ), > [ 1, 2, 9, 16 ], [ 1, 9, 16, 2], OnTuples );; gap> 3d4again := CoxeterSubCoset( f4coset, [ 1, 2, 9, 16], w ); CoxeterSubCoset(CoxeterCoset(CoxeterGroup("F", 4)), [ 1, 2, 9, 16 ], ( 2, 9,16)( 3, 4,31)( 5,11,18)( 6,13,10)( 7,27,28)( 8,15,12)(14,22,20) (17,19,21)(26,33,40)(29,35,42)(30,37,34)(32,39,36)(38,46,44) (41,43,45)) gap> PrintDynkinDiagram( 3d4again ); phi acts as ( 2, 9,16) on the component below D4 9 \ 1 - 2 / 16

This function requires the package "chevie" (see RequirePackage).

`CoxeterGroup(`

:`WF`)

returns the Coxeter group of which`WF`is a coset.

Quite a few functions defined for domains, permutation groups or Coxeter groups have been implemented to work with Coxeter cosets.

`Elements`

,`Random`

,`Representative`

,`Size`

,`in`

:

these functions use the corresponding functions for`CoxeterGroup(`

.`WF`)

`ConjugacyClasses(`

:`WF`)

returns the conjugacy classes of the Coxeter coset`WF`(see also the introduction of this Chapter). Let`W`be`CoxeterGroup(`

. Then the classes are defined to be the`WF`)*W*-orbits on*W F_0*, where*W*acts by conjugation (they coincide with the*W F_0*-orbits,*W F_0*acting by the conjugation); by the translation*wmapsto wphi^{-1}*they are sent to the*phi*-conjugacy classes of*W*.

`PositionClass(`

:`WF`,`x`)

for any element`x`in`WF`this returns the number`i`

such that`x`is an element of`ConjugacyClasses(`

(to work fast, the classification of Coxeter groups is used).`WF`)[i]

`FusionConjugacyClasses(`

:`WF1`,`WF`)

works in the same way as for groups. See the section`CoxeterSubCoset`

.

`Print(`

:`WF`)

if

is bound then this is printed, else this function prints the coset in a form which can be input back into`WF`.name**GAP**.

`InductionTable(`

:`HF`,`WF`)

works in the same way as for groups. It gives the induction table from the Coxeter subcoset`HF`to the Coxeter coset`WF`. If*H wF_0*is a Coxeter subcoset of*W F_0*, restriction of characters is defined as restriction of functions from*W F_0*to*H wF_0*, and induction as the adjoint map for the natural scalar product*< f, g> ={1over #W}sum_{v in W} f(v F_0)overline g(v F_0)*.

If the Coxeter coset`WF`represents the reductive group*bG*, and`HF`corresponds to a Levi subgroup*bL*, then the induction from`HF`to`WF`describes the Lusztig induction of uniform unipotent almost characters from*bL*to*bG*.

Harish-Chandra induction in the basis of almost characters:

gap> WF := CoxeterCoset( CoxeterGroup( "A", 4 ), (1,4)(2,3) ); CoxeterCoset(CoxeterGroup("A", 4), (1,4)(2,3)) gap> Display( InductionTable( CoxeterSubCoset( WF, [ 2, 3 ] ), WF ) );tt |

111 21 3 ________________ 11111tt |

1 . . 2111tt |

. 1 . 221tt |

1 . . 311tt |

1 . 1 32tt |

. . 1 41tt |

. 1 . 5tt |

` . . 1`

Lusztig induction from a diagonal Levi:

gap> HF := CoxeterSubCoset( WF, [1, 2], > LongestCoxeterElement( CoxeterGroup( WF ) ) );; gap> Display( InductionTable( HF, WF ) );tt |

111 21 3 _________________ 11111tt |

-1 . . 2111tt |

-2 -1 . 221tt |

-1 -2 . 311tt |

1 2 -1 32tt |

. -2 1 41tt |

. 1 -2 5tt |

` . . 1`

A descent of scalars:

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3)(2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3)(2,4)) gap> Display( InductionTable( CoxeterSubCoset( W, [ 1, 3 ] ), W ) );tt |

11 2 __________ 111tt |

1 . 21tt |

1 1 3tt |

` . 1 `

`CartanName(`

:`WF`)

returns a string which describes the isomorphism type of the group*Wrtimes < F>*, associated to`WF`, as described in the introduction of this Chapter. An orbit of*phi=*`WF`.`phi`

on the components is put in brackets if of length*k*greater than*1*, and is preceded by the order of*phi^k*on it, if this is not*1*. For example`"2(A2xA2)"`

denotes 2 components of type*A_2*permuted by*F_0*, and such that*phi^2*induces the non-trivial diagram automorphism on any of them, while`3D4`

denotes an orbit of length 1 on which*phi*is of order 3.

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "G", 2, "A", 2 ), > (1,5,2,6) ); CoxeterCoset(CoxeterGroup("A", 2, "G", 2, "A", 2), (1,5,2,6)) gap> CartanName( W ); "2(A2xA2)xG2"

`PrintDynkinDiagram(`

:`WF`)

this is a purely descriptive routine (as was already the case for finite Coxeter groups themselves). It prints the Dynkin diagram of`CoxeterGroup(`

together with the information how`WF`)

acts on it.`WF`.phi

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3,2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3,2,4)) gap> PrintDynkinDiagram( W ); phi permutes the next 2 components phi^2 acts as (1,2) on the component below A2 1 - 2 A2 3 - 4

`ChevieClassInfo( `

, see the explicit description in
ChevieClassInfo for Coxeter cosets.
`WF` )

`ChevieCharInfo`

:

This function returns additional information on the irreducible characters, see ChevieCharInfo for more details.

`CharParams( `

`WF` )`CharName( `

`WF` )

Note that some functions for elements of a Coxeter group work naturally
for elements of a Coxeter coset: `CoxeterWord`

, `PermCoxeterWord`

,
`CoxeterLength`

, `ReducedInCoxeterCoset`

, `LeftDescentSet`

,
`RightDescentSet`

, etc*ldots*

`CartanType( `

`WF` )

returns the type of the Coxeter coset `WF`. This consists of a list of
records, one for each orbit of

on the irreducible components
of the Dynkin diagram of `WF`.phi`CoxeterGroup(`

, which have two fields:`WF`)

`orbit`

:

is a list of types of the irreducible components in the orbit. These types are the same as returned by the function`CartanType`

for an irreducible untwisted Coxeter group (see`CartanType`

in chapter Root systems and finite Coxeter groups): a couple`[`

(a triple for type`type`,`indices`]*I_2(n)*). The components are ordered according to the action of

, so`WF`.phi

maps the generating permutations with indices in the first type to indices in the second type in the same order as stored in the type, etc`WF`.phi*ldots*

`phi`

:

if*k*is the number of irreducible components in the orbit, this is the permutation which describes the action of`WF`.phi*^k*on the simple roots of the first irreducible component in the orbit.

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3,2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3,2,4)) gap> CartanType( W ); [ rec( orbit := [ [ "A", [ 1, 2 ] ], [ "A", [ 3, 4 ] ] ], phi := (1,2) ) ]

This function requires the package "chevie" (see RequirePackage).

`ChevieClassInfo( `

`WF` )

returns information about the conjugacy classes of the Coxeter coset
`WF`. The result is a record with three components: `classtext`

contains a list of reduced words for the representatives in
`ConjugacyClasses(`

, `WF`)`classnames`

contains corresponding names for
the classes, and `classparams`

gives corresponding parameters for the
classes. Let `W` be the Coxeter group `CoxeterGroup(`

. In the case
where `WF`)*-1notin W*, i.e., *phi=-w_0*, they are obtained by multiplying
by *w_0* a set of representatives of it maximal length of the classes
of *W*.

gap> W := CoxeterGroup( "D", 4 );; gap> ChevieClassInfo( CoxeterCoset( W, (1,2,4) ) ); rec( classtext := [ [ 1 ], [ ], [ 1, 2, 3, 1, 2, 3 ], [ 3 ], [ 1, 3 ], [ 1, 2, 3, 1, 2, 4, 3, 2 ], [ 1, 2, 3, 2 ] ], classparams := [ [ "C_3" ], [ "~A_2" ], [ "C_3+A_1" ], [ "~A_2+A_1" ], [ "F_4" ], [ "~A_2+A_2" ], [ "F_4(a_1)" ] ], classnames := [ "C_3", "~A_2", "C_3+A_1", "~A_2+A_1", "F_4", "~A_2+A_2", "F_4(a_1)" ] )

This function requires the package "chevie" (see RequirePackage).

`CharTable( `

`WF` )

This function returns the character table of the Coxeter coset `WF` (see
also the introduction of this Chapter). We call ``characters'' of the
Coxeter coset *WF* with corresponding Coxeter group *W* the restriction
to *W F_0* of a set containing one extension of each *F_0*-invariant
character of *W* to the semidirect product of *W* with the cyclic group
generated by *F_0*. (We choose, following Lusztig, in each case one
non-canonical extension, called the preferred extension.)

The returned record contains almost all components present in the
character table of a Coxeter group. But if *F_0* is not trivial then
there are no components `powermap`

(since powers of elements in the coset
need not be in the coset) and `orders`

(if you really need them, use
`MatXPerm`

to determine the order of elements in the coset).

gap> W := CoxeterCoset( CoxeterGroup( "D", 4 ), (1,2,4) ); CoxeterCoset(CoxeterGroup("D", 4), (1,2,4)) gap> Display( CharTable( W ) ); W( 3D4 )2 2 2 2 2 2 3 3 3 1 1 1 . . 1 1

C_3 ~A_2 C_3+A_1 ~A_2+A_1 F_4 ~A_2+A_2 F_4(a_1)

.4 1 1 1 1 1 1 1 .1111 -1 1 1 -1 1 1 1 .22 . 2 2 . -1 -1 -1 11.2 . . . . -1 3 3 1.3 1 1 -1 -1 . -2 2 1.111 -1 1 -1 1 . -2 2 1.21 . 2 -2 . . 2 -2

This function requires the package "chevie" (see RequirePackage).

`Frobenius( `

`WF` )( `word` )

`Frobenius( `

`WF` )( `permutation` )

`Frobenius( `

`WF` )( `rec` )

Given a Coxeter coset `WF`, `Frobenius(`

returns a function which
makes `WF`)

act on its argument which may be either a
CoxeterWord, a permutation, a braid or a Hecke element. For instance, if
`WF`.F0Perm*H* is an Hecke algebra for `CoxeterGroup(WF)`

, to compute *(T_w F_0)^2*
in that algebra one can do
`Basis(H,"T")(w)*Frobenius(WF)((Basis(H,"T")(w)))`

.

This function requires the package "chevie" (see RequirePackage).

`PhiFactors( `

`WF` )

Let `W` be the Coxeter group corresponding to the Coxeter coset `WF`, and
let *V* be the vector space of dimension `W.rank`

on which `W` acts as a
reflection group. Let *f_1,ldots,f_n* be the basic invariants of `W` on
the symmetric algebra *SV* of *V*. The matrix `WF.F0Mat`

has the *f_i* as
eigenvectors. The corresponding eigenvalues, sorted in order of
increasing degrees of the *f_i* are called the **factors** of *F_0* acting
on *V*.

gap> W := CoxeterGroup( "E", 6 );; WF := CoxeterCoset( W ); CoxeterCoset(CoxeterGroup("E", 6)) gap> phi := PermCoxeterWord( W, > [ 6, 5, 4, 2, 3, 1, 4, 3, 5, 4, 2, 6, 5, 4, 3, 1 ] );; gap> HF := CoxeterSubCoset( WF, [ 2..5 ], phi );; gap> PrintDynkinDiagram( HF ); phi acts as (2,3,5) on the component below D4 2 \ 4 - 5 / 3 gap> PhiFactors( HF ); [ E(3), E(3)^2, 1, E(3), E(3)^2, 1 ] gap> ReflectionDegrees( CoxeterGroup( HF ) ); [ 1, 1, 2, 4, 4, 6 ]

This function requires the package "chevie" (see RequirePackage).

GAP 3.4.4

April 1997======= Coxeter cosets are implemented in

`F0Mat`

, `F0Perm`

and the corresponding reduced element `phi`

. Functions on the coset work
with elements of the group coset `ChevieClassInfo`

); however, most definitions for elements of untwisted
Coxeter groups apply without change to elements in `CoxeterWord`

describing
We associate to a Coxeter coset *WF_0* a **twisted Dynkin diagram**,
consisting of the Dynkin diagram of *W* and the graph automorphism
induced by *phi* on this diagram (this specifies the group
*Wrtimes < F> *, mentioned above, up to isomorphism). See the
commands `CartanType`

, `CartanName`

and `PrintDynkinDiagram`

for Coxeter
cosets.

The motivation for introducing this notion comes from the theory of
Chevalley groups, or more generally reductive algebraic groups over
finite fields. Let *bG* be a reductive algebraic group over the
algebraic closure *overlineFF_q* of a finite field *FF_q*, which is
defined over *FF_q*, with corresponding Frobenius endomorphism *F*, so
the finite group of rational points *bG(FF_q)* identifies to the
subgroup *bG^F* of fixed points under *F*. Let *bT* be an *F*-stable
maximal torus of *bG*. The Weyl group of *bG* with respect to *bT* is
the quotient *W=N_bG(bT)/bT*. Let *X(bT)* be the character group of
*bT*, that is the group of rational homomorphisms *bTtooverline
FF_q*. The group *W* acts naturally on *X(bT)*, and thus also on the
vector space *V=RR otimes X(bT)*. It is a fundamental fact in the
theory of reductive groups that there is a canonical root system *Phi*
in *V* defined by *(bG,bT)* such that *W* is the Weyl group of that
root system.

The Frobenius endomorphism *F* acts also naturally on *X(T)* and defines
thus an endomorphism of *V*, which is of the form *q F_0*, where * F_0*
is an automorphism of finite order of *V*. We get thus a Coxeter datum
*(V,W, F_0)*.

To completely specify *bG^F* up to isomorphism, we need a little more
information. Let *Y(bT)* be the group of cocharacters of *bT*, that is
of rational homomorphisms *overlineFF_qtobT*. The *ZZ*-modules
*X(bT)* and *Y(bT)* are naturally dual to each other, and there is a
canonical root system *Phidual* in *Y(bT)* dual to *Phi*. Let
*Vdual= RR otimes Y(bT)*. The classification theorems on reductive
groups show that the isomorphism type of *bG^F* is completely determined
by the datum *(V,Phi,Vdual,Phidual, F_0)*, and the integer *q*.
Thus we can think of this datum as a way of representing in **GAP** the
essential information which determines a Chevalley group. Indeed, all
properties of Chevalley groups can be computed from its Weyl datum:
symbols representing unipotent characters, conjugacy classes, and finally
the whole character table of *bG^F*.

It turns out that an interesting part of the objects attached to this
datum depends only on *(V,W, F_0)*: the order of the maximal tori, the
``fake degrees", the order of *bG^F*, Deligne-Lusztig induction in
terms of ``almost characters", symbols representing unipotent characters
and Deligne-Lusztig induction, etc*ldots* (see, e.g., BMM93). It
is thus possible to extend their construction to non-crystallographic
groups (or even to more general complex reflection groups); this is why
we did not include *Phi* in the definition of a Coxeter coset.

However, in **GAP** we will always have the whole datum
*(V,Phi,Vdual,Phidual, F_0)*. We assume that we have chosen a Borel
subgroup of *bG* containing *bT*. This defines an order on the roots,
and thus a basis *Pi* of *Phi* as well as a basis *Pidual* of
*Phidual*. Any element of *W F_0* induces a permutation of the roots,
and there is a unique element *phi in W F_0*, which we call the **reduced
element** in the coset, which preserves the set of positive roots. This
element is stored in the component `phi`

of the coset, and can be used to
test isomorphism of cosets. The coset *W F_0* is completely defined by
the permutation `F0Perm`

of the roots induced by *F_0* when *bG* is
semi-simple (in which case *Phi* generates *V*). So in this case we
just need to specify `F0Perm`

when defining the coset.

We should mention also a special case of Chevalley groups which does not
exactly fit the above description: the Ree and Suzuki groups. In these
cases, the group is defined as *bG^F* where *F* is not a Frobenius
endomorphism, but an isogeny such that either *F^2* or *F^3* is a
Frobenius endomorphism. Here, *F* still defines an endomorphism of *V*
which normalizes *W* (and induces the automorphism of order 2 of *W* ---
*W* is of type *G_2*, *B_2* or *F_4*), but this endomorphism is no longer
*q* times an endomorphism of finite order; however, up to some power of
*q*, * F_0* still takes a form independent of *q* (but here, *q* is a
power of a fixed prime *p* equal to *2* or *3* depending on the group
considered). This has not yet been implemented.

- CoxeterCoset
- CoxeterSubCoset
- Functions on Coxeter cosets
- CartanType for Coxeter cosets
- ChevieClassInfo for Coxeter cosets
- CharTable for Coxeter cosets
- Frobenius
- PhiFactors

`CoxeterCoset( `

`W`[, `F0Mat` ] )

`CoxeterCoset( `

`W`[, `F0Perm`] )

This function returns a Coxeter coset as a **GAP** object. The argument
`W` must be a Coxeter group (created by `CoxeterGroup`

or
`ReflectionSubgroup`

). In the first form the argument `F0Mat` must be an
invertible matrix with `Rank(`

rows, representing an automorphism
`W`)*F_0* of the root system of the parent of `W`. In the second form
`F0Perm` is a permutation which describes the images of the simple roots
under *F_0* (and only these images are used). Of course this form is
only allowed if the semisimple rank of `W` equals the rank (i.e., the
simple roots are a basis of *V*). If there is no second argument the
default for `F0Mat` is the identity matrix.

`CoxeterCoset`

returns a record from which we document the following
components:

`isDomain`

,`isFinite`

:

true

`coxeter`

:

the Coxeter group`W`

`F0Mat`

:

the matrix acting on*V*which represents*F_0*

`F0Perm`

:

the permutation on the roots of`W`induced by`F0Mat`

`phi`

:

the shortest element in the coset (as permutation)

`w1`

:

`phi`

/`F0Perm`

In the first example we create a Coxeter coset corresponding to the
general unitary groups *GU_3(q)* over finite fields with *q* elements.

gap> W := CoxeterGroup( [ [ 1, -1, 0 ], [ 0, 1, -1 ] ], > [ [ 1, -1, 0 ], [ 0, 1, -1 ] ] );; gap> gu3 := CoxeterCoset( W, -IdentityMat( 3 ) ); CoxeterCoset(CoxeterGroup([ [ 1, -1, 0 ], [ 0, 1, -1 ] ], [ [ 1, -1, 0 ], [ 0, 1, -1 ] ]), [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ 0, 0, -1 ] ]) gap> F4 := CoxeterGroup( "F", 4 );; gap> D4 := ReflectionSubgroup( F4, [ 1, 2, 16, 48 ] ); ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 9, 16 ]) gap> PrintDynkinDiagram( D4 ); D4 9 \ 1 - 16 / 2 gap> 3D4 := CoxeterCoset( D4, (2,9,16) ); CoxeterCoset(ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 9, 16 ]), ( 2, 9,16))

These functions require the package "chevie" (see RequirePackage).

`CoxeterSubCoset( `

`WF`, `r`, [`w`] )

Returns the reflection subcoset of the Coxeter coset `WF` generated by
the reflections with roots specified by `r`. `r` is a list of indices
specifying a subset of the roots of `W` where `W` is the Coxeter group
`CoxeterGroup(`

. If specified, `WF`)`w` must be an element of *W* such
that `w*WF.F0Perm`

normalizes the subroot system generated by `r`. If
absent, the default value for `w` is `()`

. It is an error, if
`w*WF.F0Perm`

does not normalize the subsystem.

gap> CoxeterSubCoset( CoxeterCoset( CoxeterGroup( "A", 2 ), (1,2) ), > [ 1 ] ); Error, must give w, such that w * WF.F0Perm normalizes subroot system. in CoxeterSubCoset(CoxeterCoset(CoxeterGroup("A", 2), (1,2)), [ 1 ]) called from main loop brk> gap> f4coset := CoxeterCoset( CoxeterGroup( "F", 4 ) ); CoxeterCoset(CoxeterGroup("F", 4)) gap> w := RepresentativeOperation( CoxeterGroup( f4coset ), > [ 1, 2, 9, 16 ], [ 1, 9, 16, 2], OnTuples );; gap> 3d4again := CoxeterSubCoset( f4coset, [ 1, 2, 9, 16], w ); CoxeterSubCoset(CoxeterCoset(CoxeterGroup("F", 4)), [ 1, 2, 9, 16 ], ( 2, 9,16)( 3, 4,31)( 5,11,18)( 6,13,10)( 7,27,28)( 8,15,12)(14,22,20) (17,19,21)(26,33,40)(29,35,42)(30,37,34)(32,39,36)(38,46,44) (41,43,45)) gap> PrintDynkinDiagram( 3d4again ); phi acts as ( 2, 9,16) on the component below D4 9 \ 1 - 2 / 16

This function requires the package "chevie" (see RequirePackage).

`CoxeterGroup(`

:`WF`)

returns the Coxeter group of which`WF`is a coset.

Quite a few functions defined for domains, permutation groups or Coxeter groups have been implemented to work with Coxeter cosets.

`Elements`

,`Random`

,`Representative`

,`Size`

,`in`

:

these functions use the corresponding functions for`CoxeterGroup(`

.`WF`)

`ConjugacyClasses(`

:`WF`)

returns the conjugacy classes of the Coxeter coset`WF`(see also the introduction of this Chapter). Let`W`be`CoxeterGroup(`

. Then the classes are defined to be the`WF`)*W*-orbits on*W F_0*, where*W*acts by conjugation (they coincide with the*W F_0*-orbits,*W F_0*acting by the conjugation); by the translation*wmapsto wphi^{-1}*they are sent to the*phi*-conjugacy classes of*W*.

`PositionClass(`

:`WF`,`x`)

for any element`x`in`WF`this returns the number`i`

such that`x`is an element of`ConjugacyClasses(`

(to work fast, the classification of Coxeter groups is used).`WF`)[i]

`FusionConjugacyClasses(`

:`WF1`,`WF`)

works in the same way as for groups. See the section`CoxeterSubCoset`

.

`Print(`

:`WF`)

if

is bound then this is printed, else this function prints the coset in a form which can be input back into`WF`.name**GAP**.

`InductionTable(`

:`HF`,`WF`)

works in the same way as for groups. It gives the induction table from the Coxeter subcoset`HF`to the Coxeter coset`WF`. If*H wF_0*is a Coxeter subcoset of*W F_0*, restriction of characters is defined as restriction of functions from*W F_0*to*H wF_0*, and induction as the adjoint map for the natural scalar product*< f, g> ={1over #W}sum_{v in W} f(v F_0)overline g(v F_0)*.

If the Coxeter coset`WF`represents the reductive group*bG*, and`HF`corresponds to a Levi subgroup*bL*, then the induction from`HF`to`WF`describes the Lusztig induction of uniform unipotent almost characters from*bL*to*bG*.

Harish-Chandra induction in the basis of almost characters:

gap> WF := CoxeterCoset( CoxeterGroup( "A", 4 ), (1,4)(2,3) ); CoxeterCoset(CoxeterGroup("A", 4), (1,4)(2,3)) gap> Display( InductionTable( CoxeterSubCoset( WF, [ 2, 3 ] ), WF ) );tt |

111 21 3 ________________ 11111tt |

1 . . 2111tt |

. 1 . 221tt |

1 . . 311tt |

1 . 1 32tt |

. . 1 41tt |

. 1 . 5tt |

` . . 1`

Lusztig induction from a diagonal Levi:

gap> HF := CoxeterSubCoset( WF, [1, 2], > LongestCoxeterElement( CoxeterGroup( WF ) ) );; gap> Display( InductionTable( HF, WF ) );tt |

111 21 3 _________________ 11111tt |

-1 . . 2111tt |

-2 -1 . 221tt |

-1 -2 . 311tt |

1 2 -1 32tt |

. -2 1 41tt |

. 1 -2 5tt |

` . . 1`

A descent of scalars:

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3)(2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3)(2,4)) gap> Display( InductionTable( CoxeterSubCoset( W, [ 1, 3 ] ), W ) );tt |

11 2 __________ 111tt |

1 . 21tt |

1 1 3tt |

` . 1 `

`CartanName(`

:`WF`)

returns a string which describes the isomorphism type of the group*Wrtimes < F>*, associated to`WF`, as described in the introduction of this Chapter. An orbit of*phi=*`WF`.`phi`

on the components is put in brackets if of length*k*greater than*1*, and is preceded by the order of*phi^k*on it, if this is not*1*. For example`"2(A2xA2)"`

denotes 2 components of type*A_2*permuted by*F_0*, and such that*phi^2*induces the non-trivial diagram automorphism on any of them, while`3D4`

denotes an orbit of length 1 on which*phi*is of order 3.

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "G", 2, "A", 2 ), > (1,5,2,6) ); CoxeterCoset(CoxeterGroup("A", 2, "G", 2, "A", 2), (1,5,2,6)) gap> CartanName( W ); "2(A2xA2)xG2"

`PrintDynkinDiagram(`

:`WF`)

this is a purely descriptive routine (as was already the case for finite Coxeter groups themselves). It prints the Dynkin diagram of`CoxeterGroup(`

together with the information how`WF`)

acts on it.`WF`.phi

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3,2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3,2,4)) gap> PrintDynkinDiagram( W ); phi permutes the next 2 components phi^2 acts as (1,2) on the component below A2 1 - 2 A2 3 - 4

`ChevieClassInfo( `

, see the explicit description in
ChevieClassInfo for Coxeter cosets.
`WF` )

`ChevieCharInfo`

:

This function returns additional information on the irreducible characters, see ChevieCharInfo for more details.

`CharParams( `

`WF` )`CharName( `

`WF` )

Note that some functions for elements of a Coxeter group work naturally
for elements of a Coxeter coset: `CoxeterWord`

, `PermCoxeterWord`

,
`CoxeterLength`

, `ReducedInCoxeterCoset`

, `LeftDescentSet`

,
`RightDescentSet`

, etc*ldots*

`CartanType( `

`WF` )

returns the type of the Coxeter coset `WF`. This consists of a list of
records, one for each orbit of

on the irreducible components
of the Dynkin diagram of `WF`.phi`CoxeterGroup(`

, which have two fields:`WF`)

`orbit`

:

is a list of types of the irreducible components in the orbit. These types are the same as returned by the function`CartanType`

for an irreducible untwisted Coxeter group (see`CartanType`

in chapter Root systems and finite Coxeter groups): a couple`[`

(a triple for type`type`,`indices`]*I_2(n)*). The components are ordered according to the action of

, so`WF`.phi

maps the generating permutations with indices in the first type to indices in the second type in the same order as stored in the type, etc`WF`.phi*ldots*

`phi`

:

if*k*is the number of irreducible components in the orbit, this is the permutation which describes the action of`WF`.phi*^k*on the simple roots of the first irreducible component in the orbit.

gap> W := CoxeterCoset( CoxeterGroup( "A", 2, "A", 2 ), (1,3,2,4) ); CoxeterCoset(CoxeterGroup("A", 2, "A", 2), (1,3,2,4)) gap> CartanType( W ); [ rec( orbit := [ [ "A", [ 1, 2 ] ], [ "A", [ 3, 4 ] ] ], phi := (1,2) ) ]

This function requires the package "chevie" (see RequirePackage).

`ChevieClassInfo( `

`WF` )

returns information about the conjugacy classes of the Coxeter coset
`WF`. The result is a record with three components: `classtext`

contains a list of reduced words for the representatives in
`ConjugacyClasses(`

, `WF`)`classnames`

contains corresponding names for
the classes, and `classparams`

gives corresponding parameters for the
classes. Let `W` be the Coxeter group `CoxeterGroup(`

. In the case
where `WF`)*-1notin W*, i.e., *phi=-w_0*, they are obtained by multiplying
by *w_0* a set of representatives of it maximal length of the classes
of *W*.

gap> W := CoxeterGroup( "D", 4 );; gap> ChevieClassInfo( CoxeterCoset( W, (1,2,4) ) ); rec( classtext := [ [ 1 ], [ ], [ 1, 2, 3, 1, 2, 3 ], [ 3 ], [ 1, 3 ], [ 1, 2, 3, 1, 2, 4, 3, 2 ], [ 1, 2, 3, 2 ] ], classparams := [ [ "C_3" ], [ "~A_2" ], [ "C_3+A_1" ], [ "~A_2+A_1" ], [ "F_4" ], [ "~A_2+A_2" ], [ "F_4(a_1)" ] ], classnames := [ "C_3", "~A_2", "C_3+A_1", "~A_2+A_1", "F_4", "~A_2+A_2", "F_4(a_1)" ] )

This function requires the package "chevie" (see RequirePackage).

`CharTable( `

`WF` )

This function returns the character table of the Coxeter coset `WF` (see
also the introduction of this Chapter). We call ``characters'' of the
Coxeter coset *WF* with corresponding Coxeter group *W* the restriction
to *W F_0* of a set containing one extension of each *F_0*-invariant
character of *W* to the semidirect product of *W* with the cyclic group
generated by *F_0*. (We choose, following Lusztig, in each case one
non-canonical extension, called the preferred extension.)

The returned record contains almost all components present in the
character table of a Coxeter group. But if *F_0* is not trivial then
there are no components `powermap`

(since powers of elements in the coset
need not be in the coset) and `orders`

(if you really need them, use
`MatXPerm`

to determine the order of elements in the coset).

gap> W := CoxeterCoset( CoxeterGroup( "D", 4 ), (1,2,4) ); CoxeterCoset(CoxeterGroup("D", 4), (1,2,4)) gap> Display( CharTable( W ) ); W( 3D4 )2 2 2 2 2 2 3 3 3 1 1 1 . . 1 1

C_3 ~A_2 C_3+A_1 ~A_2+A_1 F_4 ~A_2+A_2 F_4(a_1)

.4 1 1 1 1 1 1 1 .1111 -1 1 1 -1 1 1 1 .22 . 2 2 . -1 -1 -1 11.2 . . . . -1 3 3 1.3 1 1 -1 -1 . -2 2 1.111 -1 1 -1 1 . -2 2 1.21 . 2 -2 . . 2 -2

This function requires the package "chevie" (see RequirePackage).

`Frobenius( `

`WF` )( `word` )

`Frobenius( `

`WF` )( `permutation` )

`Frobenius( `

`WF` )( `rec` )

Given a Coxeter coset `WF`, `Frobenius(`

returns a function which
makes `WF`)

act on its argument which may be either a
CoxeterWord, a permutation, a braid or a Hecke element. For instance, if
`WF`.F0Perm*H* is an Hecke algebra for `CoxeterGroup(WF)`

, to compute *(T_w F_0)^2*
in that algebra one can do
`Basis(H,"T")(w)*Frobenius(WF)((Basis(H,"T")(w)))`

.

This function requires the package "chevie" (see RequirePackage).

`PhiFactors( `

`WF` )

Let `W` be the Coxeter group corresponding to the Coxeter coset `WF`, and
let *V* be the vector space of dimension `W.rank`

on which `W` acts as a
reflection group. Let *f_1,ldots,f_n* be the basic invariants of `W` on
the symmetric algebra *SV* of *V*. The matrix `WF.F0Mat`

has the *f_i* as
eigenvectors. The corresponding eigenvalues, sorted in order of
increasing degrees of the *f_i* are called the **factors** of *F_0* acting
on *V*.

gap> W := CoxeterGroup( "E", 6 );; WF := CoxeterCoset( W ); CoxeterCoset(CoxeterGroup("E", 6)) gap> phi := PermCoxeterWord( W, > [ 6, 5, 4, 2, 3, 1, 4, 3, 5, 4, 2, 6, 5, 4, 3, 1 ] );; gap> HF := CoxeterSubCoset( WF, [ 2..5 ], phi );; gap> PrintDynkinDiagram( HF ); phi acts as (2,3,5) on the component below D4 2 \ 4 - 5 / 3 gap> PhiFactors( HF ); [ E(3), E(3)^2, 1, E(3), E(3)^2, 1 ] gap> ReflectionDegrees( CoxeterGroup( HF ) ); [ 1, 1, 2, 4, 4, 6 ]

This function requires the package "chevie" (see RequirePackage).

GAP 3.4.4

January 1997