[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Roots, Coroots and Reflections

We store the roots as an indexed set

{@ alpha_1, ..., alpha_N, alpha_(N + 1), ..., alpha_(2N) @},

where alpha_1, ..., alpha_N are the positive roots in an order compatible with height; and alpha_(N + 1), ..., alpha_(2N) are the corresponding negative roots (i.e. alpha_(i + N)= - alpha_i). The simple roots are alpha_1, ..., alpha_n where n is the rank.

Many of these functions have an optional argument Basis which may take one of the following values

1.
"Standard": the standard basis for the (co)root space. This is the default.
2.
"Root": the basis of simple (co)roots.
3.
"Weight": the basis of fundamental (co)weights (see Subsection Weights below).
Subsections

Accessing Roots and Coroots

RootSpace( W ) : GrpPermCox -> .
CorootSpace( W ) : GrpPermCox -> .
The (co)root space of the Coxeter group W. This can be a vector space over a field of characteristic zero (Chapter VECTOR SPACES), or an integer lattice in the crystallographic case (Chapter LATTICES). The (co)reflection group of W acts on the (co)root space.
SimpleRoots( W ) : GrpPermCox -> Mtrx
SimpleCoroots( W ) : GrpPermCox -> Mtrx
The simple (co)roots of the Coxeter group W as the rows of a matrix.

Example GrpPermCox_RootSpace (H84E12)

> W := CoxeterGroup( "G2" );
> RootSpace( W );
Full Vector space of degree 2 over Rational Field
> CorootSpace( W );
Full Vector space of degree 2 over Rational Field
> SimpleRoots( W );
[1 0]
[0 1]
> SimpleCoroots( W );
[ 2 -3]
[-1  2]
> CartanMatrix( W );
[ 2 -1]
[-3  2]

NumberOfPositiveRoots( W ) : GrpPermCox -> RngIntElt
NumPosRoots( W ) : GrpPermCox -> RngIntElt
The number of positive roots of the Coxeter group W.
Roots( W ) : GrpPermCox -> {@@}
Coroots( W ) : GrpPermCox -> {@@}
    Basis: MonStgElt                    Default: "Standard"
An indexed set containing the (co)roots of the Coxeter group W.
PositiveRoots( W ) : GrpPermCox -> {@@}
PositiveCoroots( W ) : GrpPermCox -> {@@}
    Basis: MonStgElt                    Default: "Standard"
An indexed set containing the positive (co)roots of the Coxeter group W.
Root( W, r ) : GrpPermCox, RngIntElt -> {@@}
Coroot( W, r ) : GrpPermCox, RngIntElt -> {@@}
    Basis: MonStgElt                    Default: "Standard"
The rth (co)root of the Coxeter group W.
RootPosition( W, v ) : GrpPermCox, . -> {@@}
CorootPosition( W, v ) : GrpPermCox, . -> {@@}
    Basis: MonStgElt                    Default: "Standard"
If v is a (co)root of the Coxeter group W, this returns its position; otherwise it returns 0.

Example GrpPermCox_RootsCoroots (H84E13)

> A := Matrix( 2,3, [1,-1,0, -1,1,-1]);
> B := Matrix( 2,3, [1,-1,1, 0,1,-1]);
> W := CoxeterGroup( A, B );
> Roots( W );
{@
    ( 1 -1  0),
    (-1  1 -1),
    ( 0  0 -1),
    ( 1 -1 -1),
    ( 2 -2 -1),
    ( 1 -1 -2),
    (-1  1  0),
    ( 1 -1  1),
    (0 0 1),
    (-1  1  1),
    (-2  2  1),
    (-1  1  2)
@}
> PositiveCoroots( W );
{@
    ( 1 -1  1),
    ( 0  1 -1),
    ( 1  2 -2),
    ( 2  1 -1),
    (1 0 0),
    ( 1  1 -1)
@}
> #Roots(W) eq 2*NumPosRoots(W);
true
> Root( W, 4 );
( 1 -1 -1)
> Root( W, 4 : Basis := "Root" );
(2 1)
> RootPosition( W, [1,-1,-1] );
4
> RootPosition( W, [2,1] : Basis := "Root" );
4

HighestRoot( W ) : GrpPermCox -> .
HighestLongRoot( W ) : GrpFPCox -> .
    Basis: MonStgElt                    Default: "Standard"
The unique (long) root of greatest height of the irreducible Coxeter group W.
HighestShortRoot( W ) : GrpPermCox -> .
    Basis: MonStgElt                    Default: "Standard"
The unique short root of greatest height of the irreducible Coxeter group W.

Example GrpPermCox_HeighestRoots (H84E14)

> W := RootDatum( "G2" );
> HighestRoot( W );
(3 2)
> HighestLongRoot( W );
(3 2)
> HighestShortRoot( W );
(2 1)

CoxeterForm( W ) : GrpPermCox -> AlgMatElt
DualCoxeterForm( W ) : GrpPermCox -> AlgMatElt
    Basis: MonStgElt                    Default: "Standard"
The matrix of an inner product on the (co)root space of the finite Coxeter group W which is invariant under the action of W. This inner product is uniquely determined up to a constant on each irreducible component of W. We normalise the inner product so that the short roots in each crystallographic component have length one.

Reflections

The root alpha acts on the root space via the reflection s_alpha; the coroot alpha^star acts on the coroot space via the coreflection s_alpha^star.

IsReflection( w ) : GrpPermCoxElt -> BoolElt, ., ., RngInt
Returns true if, and only if, w is a reflection, i.e. w is conjugate to a Coxeter generator. If w is a reflection, the root, coroot and root index are also returned.
Reflections( W ) : GrpPermCox -> GrpFPCoxElt
ReflectionPermutations( W ) : GrpPermCox -> GrpFPCoxElt
The sequence of reflections in the Coxeter group W. The rth reflection in the sequence corresponds to the rth (co)root.
Reflection( W, r ) : GrpPermCox, RngIntElt -> GrpFPCoxElt
ReflectionPermutation( W, r ) : GrpPermCox, RngIntElt -> GrpFPCoxElt
The reflection in Coxeter group W corresponding to the rth (co)root. If r=1, ..., n, this is a generator of W.
SimpleReflectionMatrices( W ) : GrpPermCox -> []
SimpleCoreflectionMatrices( W ) : GrpPermCox -> []
    Basis: MonStgElt                    Default: "Standard"
The matrices giving the action of the simple (co)roots on the (co)root space.
ReflectionMatrices( W ) : GrpPermCox -> []
CoreflectionMatrices( W ) : GrpPermCox -> []
    Basis: MonStgElt                    Default: "Standard"
The matrices giving the action of the (co)roots on the (co)root space.
ReflectionMatrix( W, r ) : GrpPermCox, RngIntElt -> []
CoreflectionMatrix( W, r ) : GrpPermCox, RngIntElt -> []
    Basis: MonStgElt                    Default: "Standard"
The matrix giving the action of the rth (co)root on the (co)root space.
ReflectionWords( R ) : GrpPermCox -> []
The sequence of words in the simple reflections for all the reflections of the Coxeter group W. These words are given as sequences of integers. In other words, if a = [a_1, ..., a_l] = ReflectionWords(R)[r], then s_(alpha_r) = s_(alpha_(a_1)) ... s_(alpha_(a_l)).
ReflectionWord( R, r ) : GrpPermCox, RngIntElt -> []
The word in the simple reflections for the rth reflection of the Coxeter group W. The word is given as a sequence of integers. In other words, if a = [a_1, ..., a_l] = ReflectionWord(R, r), then s_(alpha_r) = s_(alpha_(a_1)) ... s_(alpha_(a_l)).

Example GrpPermCox_Action (H84E15)

> W := CoxeterGroup( "B3" );
> IsReflection( W.1*W.2 );
false
> mx := ReflectionMatrix( W, 4 );
> perm := Reflection( W, 4 );
> wd := ReflectionWord( W, 4 );
> rt := VectorSpace( Rationals(), 3 ) ! Root(W,2);
> RootPosition( W, rt * mx ) eq 2^perm;
true
> perm eq &*[ Reflection( W, r ) : r in wd ];
true
> 
> mx := CoreflectionMatrix( W, 4 );
> CorootPosition( W, Coroot(W,2) * mx ) eq 2^perm;
true

Operations and Properties for Root and Coroot indices

Sum( W, r, s ) : GrpPermCox, RngIntElt, RngIntElt -> RngIntElt
The index of the sum of the rth and sth roots in the Coxeter group W, or 0 if the sum is not a root. In other words, if t = hbox( Sum(W,r,s)) != 0 then alpha_t=alpha_r + alpha_s. We require alpha_r != +-alpha_s. If W is noncrystallographic, an error is flagged
IsPositive( W, r ) : GrpPermCox, RngIntElt -> BoolElt
Returns true if, and only if, the rth (co)root of the Coxeter group W is a positive root.
IsNegative( W, r ) : GrpPermCox, RngIntElt -> BoolElt
Returns true if, and only if, the rth (co)root of the Coxeter group W is a negative root.
Negative( W, r ) : GrpPermCox, RngIntElt -> RngIntElt
The index of the negative of the rth (co)root of the Coxeter group W. In other words, if s = hbox( Negative(W,r)) then alpha_s= - alpha_r.
LeftString( W, r, s ) : GrpPermCox, RngIntElt, RngIntElt -> RngIntElt
Root indices in the Coxeter group W of the left string through alpha_s in the direction of alpha_r, i.e. the indices of alpha_s - alpha_r, alpha_s - 2alpha_r, ..., alpha_s - palpha_r. In other words, this returns the sequence [r_1, ..., r_p] where alpha_(r_i)=alpha_s - ialpha_r and alpha_s - (p + 1)alpha_r is not a root. We require that alpha_r != +-alpha_s. If W is noncrystallographic, an error is flagged
RightString( W, r, s ) : GrpPermCox, RngIntElt, RngIntElt -> RngIntElt
Root indices of the Coxeter group W of the left string through alpha_s in the direction of alpha_r, i.e. the indices of alpha_s + alpha_r, alpha_s + 2alpha_r, ..., alpha_s + qalpha_r. In other words, this returns the sequence [r_1, ..., r_q] where alpha_(r_i)=alpha_s + ialpha_r and alpha_s + (q + 1)alpha_r is not a root. We require that alpha_r != +-alpha_s. If W is noncrystallographic, an error is flagged
LeftStringLength( W, r, s ) : GrpPermCox, RngIntElt, RngIntElt -> RngIntElt
The largest p such that alpha_s - palpha_r is a root. We require that alpha_s != +-alpha_r. If W is noncrystallographic, an error is flagged
RightStringLength( W, r, s ) : GrpPermCox, RngIntElt, RngIntElt -> RngIntElt
The largest q such that alpha_s + qalpha_r is a root. We require that alpha_s != +-alpha_r. If W is noncrystallographic, an error is flagged

Example GrpPermCox_RootArithmetic (H84E16)

> W := RootDatum( "G2" );
> Sum( W, 1, Negative( W,5 ) );
10
> IsPositive( W, 10 );
false
> Negative( W, 10 );
4
> P := PositiveRoots(W);
> P[1] - P[5] eq -P[4];
true

RootHeight( W, r ) : GrpPermCox, RngIntElt -> RngIntElt
CorootHeight( W, r ) : GrpPermCox, RngIntElt -> RngIntElt
The height of the rth (co)root of the Coxeter group W, i.e. the sum of the coefficients of alpha_r (resp. alpha_r^star) with respect to the simple (co)roots.
RootNorms( W ) : GrpPermCox -> [RngIntElt]
CorootNorms( W ) : GrpPermCox -> [RngIntElt]
The sequence of squares of the lengths of the (co)roots of the Coxeter group W.
RootNorm( W, r ) : GrpPermCox, RngIntElt -> RngIntElt
CorootNorm( W, r ) : GrpPermCox, RngIntElt -> RngIntElt
The square of the length of the rth (co)root of the Coxeter group W.
IsLongRoot( W, r ) : GrpPermCox, RngIntElt -> BoolElt
Returns true if, and only if, the rth root of the Coxeter group W is long, i.e. the rth coroot is short. An error is flagged unless W is irreducible and crystallographic.
IsShortRoot( W, r ) : GrpPermCox, RngIntElt -> BoolElt
Returns true if, and only if, the rth root of the Coxeter group W is short, i.e. the rth coroot is long. An error is flagged unless W is irreducible and crystallographic.

Example GrpPermCox_RootOperations (H84E17)

> W := RootDatum( "G2" );
> RootHeight( W, 5 );
4
> F := CoxeterForm( W );
> v := VectorSpace(Rationals(),2) ! Root( W, 5 );
> ( v*F, v ) eq RootNorm( W, 5 );
true
> IsLongRoot( W, 5 );
true
> LeftString( W, 1, 5 );
[ 4, 3, 2 ]
> roots := Roots( W );
> for i in [1..3] do
>   RootPosition( W, roots[5]-i*roots[1] );
> end for;
4
3
2

Weights

WeightLattice( W ) : RootDtm -> Lat
CoweightLattice( W ) : RootDtm -> Lat
The (co)weight lattice of the Coxeter group W. The roots and coroots of W must have integral components.
FundamentalWeights( W ) : GrpPermCox -> SeqEnum
FundamentalCoweights( W ) : GrpPermCox -> SeqEnum
    Basis: MonStgElt                    Default: "Standard"
The fundamental (co)weights of the Coxeter group W. The roots and coroots of W must have integral components.
DominantWeight( W, v ) : GrpPermCox, . -> ModTupFldElt, []
    Basis: MonStgElt                    Default: "Standard"
The unique element in the W-orbit of the weight v which lies in the fundamental Weyl chamber, and the word in the generators which sends v to this element. W must have a root datum.
WeightOrbit( W, v ) : GrpPermCox, . -> @ @
    Basis: MonStgElt                    Default: "Standard"
The orbit of the weight v under the action of W. W must have a root datum.

Example GrpPermCox_DominantWeights (H84E18)

> W := CoxeterGroup( "B3" );
> DominantWeight( W, [1,-1,0] : Basis:="Weight" );  
(1 0 0)
[ 2, 3, 2, 1 ]
> #WeightOrbit( W, [1,-1,0] : Basis:="Weight" );   
6


 [Next][Prev] [Right] [Left] [Up] [Index] [Root]