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

Roots, Coroots and Weights

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 (for crystallographic root data); and alpha_(N + 1), ..., alpha_(2N) are the corresponding negative roots (ie. alpha_(i + N)= - alpha_i). We write alpha_r^star for the coroot corresponding to alpha_r. 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:

Subsections

Accessing (co)roots

NumberOfPositiveRoots( RD ) : RootDtm -> RngIntElt
NumPosRoots( RD ) : RootDtm -> RngIntElt
The number of positive roots of the root datum RD. This is also the number of positive coroots. The total number of (co)roots is twice the number of positive (co)roots.
Roots( RD ) : RootDtm -> {@@}
Coroots( RD ) : RootDtm -> {@@}
    basis: MonStgElt                    Default: "standard"
The indexed set containing the (co)roots of the root datum RD, ie. {@ alpha_1, dotsalpha_(2N) @} (resp. {@ alpha_1^star, dotsalpha_(2N)^star @}).
PositiveRoots( RD ) : RootDtm -> {@@}
PositiveCoroots( RD ) : RootDtm -> {@@}
    basis: MonStgElt                    Default: "standard"
An indexed set containing the positive (co)roots of the root datum RD, ie. {@ alpha_1, dotsalpha_N @} (resp. {@ alpha_1^star, dotsalpha_N^star @}).
Root( RD, r ) : RootDtm, RngIntElt -> {@@}
Coroot( RD, r ) : RootDtm, RngIntElt -> {@@}
    basis: MonStgElt                    Default: "standard"
The rth (co)root, alpha_r (resp. alpha_r^star), of the root datum RD.
RootPosition( RD, v ) : RootDtm, . -> {@@}
CorootPosition( RD, v ) : RootDtm, . -> {@@}
    basis: MonStgElt                    Default: "standard"
If v is a (co)root in the root datum RD, this returns its index; otherwise it returns 0. These functions will try to coerce a sequence or vector into the appropriate space; v should be written with respect to the basis given by the parameter basis.

Example RootDtm_RootsCoroots (H33E9)

> RD := RootDatum( "A3" : Isogeny := 2 );
> Roots( RD );
{@
    (1 0 0),
    (-1 -1 -3),
    (1 2 4),
    ( 0 -1 -3),
    (0 1 1),
    (1 1 1),
    (-1  0  0),
    (1 1 3),
    (-1 -2 -4),
    (0 1 3),
    ( 0 -1 -1),
    (-1 -1 -1)
@}
> PositiveCoroots( RD );
{@
    ( 2 -1  0),
    (-1  2 -1),
    (0 1 0),
    ( 1  1 -1),
    (-1  3 -1),
    ( 1  2 -1)
@}
> #Roots(RD) eq 2*NumPosRoots(RD);
true
> Root( RD, 4 );
( 0 -1 -3)
> Root( RD, 4 : basis := "root" );
(1 1 0)
> RootPosition( RD, [0,-1,-3] );
4

HighestRoot( RD ) : RootDtm -> .
HighestLongRoot( RD ) : RootDtm -> .
    basis: MonStgElt                    Default: "standard"
The unique (long) root of greatest height in the irreducible crystallographic root datum RD.
HighestShortRoot( RD ) : RootDtm -> .
    basis: MonStgElt                    Default: "standard"
The unique short root of greatest height in the irreducible crystallographic root datum RD.

Example RootDtm_HeighestRoots (H33E10)

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

Action of (co)roots

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

SimpleReflectionMatrices( RD ) : RootDtm -> []
SimpleCoreflectionMatrices( RD ) : RootDtm -> []
    basis: MonStgElt                    Default: "standard"
The sequence of matrices giving the action of the simple (co)roots of the root datum RD on the (co)root space, ie. the matrices of r_(alpha_1), ..., r_(alpha_n) (resp. r_(alpha_1)^star, ..., r_(alpha_n)^star).
ReflectionMatrices( RD ) : RootDtm -> []
CoreflectionMatrices( RD ) : RootDtm -> []
    basis: MonStgElt                    Default: "standard"
The sequence of matrices giving the action of the (co)roots of the root datum RD on the (co)root space, ie. the matrices of r_(alpha_1), ..., r_(alpha_(2N)) (resp. r_(alpha_1)^star, ..., r_(alpha_(2N))^star).
ReflectionMatrix( RD, r ) : RootDtm, RngIntElt -> []
CoreflectionMatrix( RD, r ) : RootDtm, RngIntElt -> []
    basis: MonStgElt                    Default: "standard"
The matrix giving the action of the rth (co)root of the root datum RD on the (co)root space, ie. the matrix of r_(alpha_r) (resp. r_(alpha_r)^star).
SimpleReflectionPermutations( RD ) : RootDtm -> []
The sequence of permutations giving the action of the simple (co)roots of the root datum RD on the (co)roots. Since this action is the same for roots and coroots, there is only one function.
ReflectionPermutations( RD ) : RootDtm -> []
The sequence of permutations giving the action of the (co)roots of the root datum RD on the (co)roots. Since this action is the same for roots and coroots, there is only one function.
ReflectionPermutation( RD, r ) : RootDtm, RngIntElt -> []
The permutation giving the action of the rth (co)root of the root datum RD on the (co)roots. Since this action is the same for roots and coroots, there is only one function.

Example RootDtm_Action (H33E11)

> RD := RootDatum( "A3" : Isogeny := 2 );
> mx := ReflectionMatrix( RD, 4 );
> perm := ReflectionPermutation( RD, 4 );
> RootPosition( RD, Root(RD,2) * mx ) eq 2^perm;
true
> mx := CoreflectionMatrix( RD, 4 );
> CorootPosition( RD, Coroot(RD,2) * mx ) eq 2^perm;
true

Operations and Properties for (co)roots

Sum( RD, r, s ) : RootDtm, RngIntElt, RngIntElt -> RngIntElt
The index of the sum of the rth and sth roots in the root datum RD, or 0 if the sum is not a root. In other words, if t = hbox( Sum(RD, r, s)) != 0 then alpha_t=alpha_r + alpha_s. We require that RD be crystallographic and alpha_r != +-alpha_s.
IsPositive( RD, r ) : RootDtm, RngIntElt -> BoolElt
Returns true if the rth (co)root of the root datum RD is a positive root.
IsNegative( RD, r ) : RootDtm, RngIntElt -> BoolElt
Returns true if the rth (co)root of the root datum RD is a negative root.
Negative( RD, r ) : RootDtm, RngIntElt -> RngIntElt
The index of the negative of the rth (co)root of the root datum RD. In other words, if s = hbox( Negative(RD, r)) then alpha_s= - alpha_r.

Example RootDtm_RootArithmetic (H33E12)

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

RootHeight( RD, r ) : RootDtm, RngIntElt -> RngIntElt
CorootHeight( RD, r ) : RootDtm, RngIntElt -> RngIntElt
The height of the rth (co)root of the root datum RD.

CoxeterForm( RD ) : RootDtm -> AlgMatElt
DualCoxeterForm( RD ) : RootDtm -> AlgMatElt
    basis: MonStgElt                    Default: "standard"
The matrix of an inner product on the (co)root space of RD which is invariant under the action of the (co)roots. This inner product is uniquely determined up to a constant on each irreducible component of RD. In the crystallographic case, we normalise the inner product so that the short roots in each component have length one.
RootNorms( RD ) : RootDtm -> [RngIntElt]
CorootNorms( RD ) : RootDtm -> [RngIntElt]
Returns a sequence containing the squares of the lengths of the (co)roots of the root datum RD.
RootNorm( RD, r ) : RootDtm, RngIntElt -> RngIntElt
CorootNorm( RD, r ) : RootDtm, RngIntElt -> RngIntElt
The square of the length of the rth (co)root of the root datum RD.
IsLongRoot( RD, r ) : RootDtm, RngIntElt -> BoolElt
Returns true if the rth root of the root datum RD is long, ie. if the rth coroot is short. This only makes sense for irreducible crystallographic root data.
IsShortRoot( RD, r ) : RootDtm, RngIntElt -> BoolElt
Returns true if the rth root of the root datum RD is short, ie. if the rth coroot is long. This only makes sense for irreducible crystallographic root data.
LeftString( RD, r, s ) : RootDtm, RngIntElt, RngIntElt -> RngIntElt
Indices in the root datum RD of the left string through alpha_s in the direction of alpha_r, ie. 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. RD must be crystallographic.
RightString( RD, r, s ) : RootDtm, RngIntElt, RngIntElt -> RngIntElt
Indices in the root datum RD of the left string through alpha_s in the direction of alpha_r, ie. 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. RD must be crystallographic.

Example RootDtm_RootOperations (H33E13)

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

Weights

The concept of a weight is only defined for crystallographic root data; see subsection Classification of Root Data.

WeightLattice( RD ) : RootDtm -> Lat
CoweightLattice( RD ) : RootDtm -> Lat
The weight lattice Lambda of the root datum RD. This consists of all lambda in R Phi such that < lambda, alpha^star > in Z for every coroot alpha^star. The coweight lattice is defined dually. RD must be crystallographic.
FundamentalWeights( RD ) : RootDtm -> Mtrx
FundamentalCoweights( RD ) : RootDtm -> Mtrx
    basis: MonStgElt                    Default: "standard"
The fundamental weights lambda_1, ..., lambda_n of the root datum RD given as the rows of a matrix. This is the basis dual to the coroots, ie. < lambda_i, alpha_j^star >=delta_(ij). The fundamental coweights are defined dually. RD must be crystallographic.

Example RootDtm_Weights (H33E14)

> RD := RootDatum( "E6" );
> WeightLattice( RD );
Lattice of rank 6 and degree 6
Basis:
( 4  3  5  6  4  2)
( 3  6  6  9  6  3)
( 5  6 10 12  8  4)
( 6  9 12 18 12  6)
( 4  6  8 12 10  5)
( 2  3  4  6  5  4)
Basis Denominator: 3
> FundamentalWeights( RD );    
[ 4/3    1  5/3    2  4/3  2/3]
[   1    2    2    3    2    1]
[ 5/3    2 10/3    4  8/3  4/3]
[   2    3    4    6    4    2]
[ 4/3    2  8/3    4 10/3  5/3]
[ 2/3    1  4/3    2  5/3  4/3]

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