Roots and Coroots

The roots are stored as an indexed set

{@ α1, ..., αN, αN + 1, ..., α2N @},

where α1, ..., αN are the positive roots (in an order compatible with height), and αN + 1, ..., α2N are the corresponding negative roots (i.e. αi + N= - αi). The simple roots are α1, ..., α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); or
2.
"Root": the basis of simple (co)roots.

Contents

Accessing Roots and Coroots

RootSpace(R) : RootSys -> ModTupFld
CorootSpace(R) : RootSys -> ModTupFld
The vector spacecontaining the (co)roots of the root system R, i.e. X (respectively, Y).
SimpleRoots(R) : RootSys -> Mtrx
SimpleCoroots(R) : RootSys -> Mtrx
The simple (co)rootsof the root system R as the rows of a matrix, i.e. A (respectively, B).

Example RootSys_RootSpace (H103E9)

> R := RootSystem("G2");
> RootSpace(R);
Full Vector space of degree 2 over Rational Field
> CorootSpace(R);
Full Vector space of degree 2 over Rational Field
> SimpleRoots(R);
[1 0]
[0 1]
> SimpleCoroots(R);
[ 2 -3]
[-1  2]
> CartanMatrix(R);
[ 2 -1]
[-3  2]
NumberOfPositiveRoots(R) : RootSys -> RngIntElt
NumPosRoots(R) : RootSys -> RngIntElt
The number of positive roots of the root system R. This is also the number of positive coroots. The total number of (co)roots is twice the number of positive (co)roots.
Roots(R) : RootSys -> (@@)
Coroots(R) : RootSys -> (@@)
    Basis: MonStgElt                    Default: "Standard"
The indexed set of (co)roots of the root system R, i.e. {@ α1, ... α2N @} (respectively, {@ α1star, ... α2Nstar @}).
PositiveRoots(R) : RootSys -> (@@)
PositiveCoroots(R) : RootSys -> (@@)
    Basis: MonStgElt                    Default: "Standard"
The indexed set of positive (co)rootsof the root system R, i.e. {@ α1, ... αN @} (respectively, {@ α1star, ... αNstar @}).
Root(R, r) : RootSys, RngIntElt -> (@@)
Coroot(R, r) : RootSys, RngIntElt -> (@@)
    Basis: MonStgElt                    Default: "Standard"
The rth (co)root αr (respectively, αrstar) of the root system R.
RootPosition(R, v) : RootSys, . -> (@@)
CorootPosition(R, v) : RootSys, . -> (@@)
    Basis: MonStgElt                    Default: "Standard"
If v is a (co)root in the root system R, return its index; otherwise return 0. These functions will try to coerce v, which can be a vector or a sequence representing a vector, into the appropriate vector space; v should be written with respect to the basis specified by the parameter Basis.

Example RootSys_RootsCoroots (H103E10)

> A := Matrix(2,3, [1,-1,0, -1,1,-1]);
> B := Matrix(2,3, [1,-1,1, 0,1,-1]);
> R := RootSystem(A, B);
> Roots(R);
{@
    (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(R);
{@
    (1 -1  1),
    (0  1 -1),
    (1  2 -2),
    (2  1 -1),
    (1 0 0),
    (1  1 -1)
@}
> #Roots(R) eq 2*NumPosRoots(R);
true
> Root(R, 4);
(1 -1 -1)
> Root(R, 4 : Basis := "Root");
(2 1)
> RootPosition(R, [1,-1,-1]);
4
> RootPosition(R, [2,1] : Basis := "Root");
4
HighestRoot(R) : RootSys -> .
HighestCoroot(R) : RootSys -> .
    Basis: MonStgElt                    Default: "Standard"
The unique (co)root of greatest heightin the irreducible root system R.
HighestLongRoot(R) : RootSys -> .
HighestLongCoroot(R) : RootSys -> .
    Basis: MonStgElt                    Default: "Standard"
The unique long (co)root of greatest heightin the irreducible root system R.
HighestShortRoot(R) : RootSys -> .
HighestShortCoroot(R) : RootSys -> .
    Basis: MonStgElt                    Default: "Standard"
The unique short (co)root of greatest heightin the irreducible root system R.

Example RootSys_HeighestRoots (H103E11)

> R := RootSystem("G2");
> HighestRoot(R);
(3 2)
> HighestLongRoot(R);
(3 2)
> HighestShortRoot(R);
(2 1)
CoxeterForm(R) : RootSys -> AlgMatElt
DualCoxeterForm(R) : RootSys -> AlgMatElt
    Basis: MonStgElt                    Default: "Standard"
The matrix of an inner producton the (co)root space of the root system R 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 R. The inner product is normalised so that the short roots in each crystallographic component have length one.

Reflections

The root α acts on the root space via the reflection sα; the coroot αstar acts on the coroot space via the coreflection sαstar.

SimpleReflectionMatrices(R) : RootSys -> []
SimpleCoreflectionMatrices(R) : RootSys -> []
    Basis: MonStgElt                    Default: "Standard"
The sequence of matrices giving the action of the simple (co)roots of the root system R on the (co)root space, i.e. the matrices of sα1, ..., sαn (respectively, sα1star, ..., sαnstar).
ReflectionMatrices(R) : RootSys -> []
CoreflectionMatrices(R) : RootSys -> []
    Basis: MonStgElt                    Default: "Standard"
The sequence of matrices giving the action of the (co)roots of the root system R on the (co)root space, i.e. the matrices of sα1, ..., s_(α2N) (respectively, sα1star, ..., s_(α2N)star).
ReflectionMatrix(R, r) : RootSys, RngIntElt -> []
CoreflectionMatrix(R, r) : RootSys, RngIntElt -> []
    Basis: MonStgElt                    Default: "Standard"
The matrix giving the action of the rth (co)root of the root system R on the (co)root space, i.e. the matrix of sαr (respectively, sαrstar).
SimpleReflectionPermutations(R) : RootSys -> []
The sequence of permutations giving the action of the simple (co)roots of the root system R on the (co)roots. This action is the same for roots and coroots.
ReflectionPermutations(R) : RootSys -> []
The sequence of permutations giving the action of the (co)roots of the root system R on the (co)roots. This action is the same for roots and coroots.
ReflectionPermutation(R, r) : RootSys, RngIntElt -> []
The permutation giving the action of the rth (co)root of the root system R on the (co)roots. This action is the same for roots and coroots.
ReflectionWords(R) : RootSys -> []
The sequence of words in the simple reflections for all the reflections of the root system R. These words are given as sequences of integers. In other words, if [a1, ..., al] = ReflectionWords(R)[r], then sαr = s_(αa1) ... s_(αal).
ReflectionWord(R, r) : RootSys, RngIntElt -> []
The word in the simple reflections for the rth reflection of the root system R. The word is given as a sequence of integers. In other words, if [a1, ..., al] = ReflectionWord(R, r), then sαr = s_(αa1) ... s_(αal).

Example RootSys_Action (H103E12)

> R := RootSystem("B3");
> mx := ReflectionMatrix(R, 4);
> perm := ReflectionPermutation(R, 4);
> wd := ReflectionWord(R, 4);
> RootPosition(R, Root(R,2) * mx) eq 2^perm;
true
> perm eq &*[ ReflectionPermutation(R, r) : r in wd ];
true
>
> mx := CoreflectionMatrix(R, 4);
> CorootPosition(R, Coroot(R,2) * mx) eq 2^perm;
true

Operations and Properties for Roots and Coroot Indices

Sum(R, r, s) : RootSys, RngIntElt, RngIntElt -> RngIntElt
The index of the sum of the rth and sth roots in the crystallographic root system R, or 0 if the sum is not a root. In other words, if t=hbox(Sum(R,r,s))ne0 then αtr + αs. We require αr≠∓αs.
IsPositive(R, r) : RootSys, RngIntElt -> BoolElt
Returns true if, and only if, the rth (co)root of the root system R is a positive root.
IsNegative(R, r) : RootSys, RngIntElt -> BoolElt
Returns true if, and only if, the rth (co)root of the root system R is a negative root.
Negative(R, r) : RootSys, RngIntElt -> RngIntElt
The index of the negative of the rth (co)root of the root system R. In other words, if s = hbox(Negative(R,r)) then αs= - αr.

Example RootSys_RootArithmetic (H103E13)

> R := RootSystem("G2");
> Sum(R, 1, Negative(R,5));
10
> IsPositive(R, 10);
false
> Negative(R, 10);
4
> P := PositiveRoots(R);
> P[1] - P[5] eq -P[4];
true
RootHeight(R, r) : RootSys, RngIntElt -> RngIntElt
CorootHeight(R, r) : RootSys, RngIntElt -> RngIntElt
The height of the rth (co)root of the root system R, i.e. the sum of the coefficients of αr (respectively, αrstar) with respect to the simple (co)roots.
RootNorms(R) : RootSys -> [RngIntElt]
CorootNorms(R) : RootSys -> [RngIntElt]
The sequence of squares of the lengthsof the (co)roots of the root system R.
RootNorm(R, r) : RootSys, RngIntElt -> RngIntElt
CorootNorm(R, r) : RootSys, RngIntElt -> RngIntElt
The square of the length of the rth (co)root of the root system R.
IsLongRoot(R, r) : RootSys, RngIntElt -> BoolElt
Returns true if, and only if, the rth root of the root system R is long. This only makes sense for irreducible crystallographic root systems. Note that for non-reduced root systems, the roots which are not indivisible are actually longer than the long ones.
IsShortRoot(R, r) : RootSys, RngIntElt -> BoolElt
Returns true if, and only if, the rth root of the root system R is short. This only makes sense for irreducible crystallographic root systems.
IsIndivisibleRoot(R, r) : RootSys, RngIntElt -> BoolElt
Returns true if, and only if, the rth root of the root system R is indivisible, ie, αr/2 is not a root.
LeftString(R, r, s) : RootSys, RngIntElt, RngIntElt -> RngIntElt
Indices in the crystallographic root system R of the left string through αs in the direction of αr, i.e. the indices of αs - αr, αs - 2αr, ..., αs - pαr. In other words, this returns the sequence [r1, ..., rp] where αris - iαr and αs - (p + 1)αr is not a root. We require that αr≠∓αs.
RightString(R, r, s) : RootSys, RngIntElt, RngIntElt -> RngIntElt
Indices in the crystallographic root system R of the left string through αs in the direction of αr, i.e. the indices of αs + αr, αs + 2αr, ..., αs + qαr. In other words, this returns the sequence [r1, ..., rq] where αris + iαr and αs + (q + 1)αr is not a root. We require that αr≠∓αs.
LeftStringLength(R, r, s) : RootSys, RngIntElt, RngIntElt -> RngIntElt
The largest p such that αs - pαr is a root. We require that the root system R be crystallographic and αs≠∓αr.
RightStringLength(R, r, s) : RootSys, RngIntElt, RngIntElt -> RngIntElt
The largest q such that αs + qαr is a root. We require that the root system R be crystallographic and αs≠∓αr.

Example RootSys_RootOperations (H103E14)

> R := RootSystem("G2");
> RootHeight(R, 5);
4
> F := CoxeterForm(R);
> v := Root(R, 5);
> (v*F, v) eq RootNorm(R, 5);
true
> IsLongRoot(R, 5);
true
> LeftString(R, 1, 5);
[ 4, 3, 2 ]
> roots := Roots(R);
> for i in [1..3] do
>   RootPosition(R, roots[5]-i*roots[1]);
> end for;
4
3
2
> R := RootSystem("BC2");
> Root(R,2), IsIndivisibleRoot(R,2);
(0 1) true
> Root(R,4), IsIndivisibleRoot(R,4);
(0 2) false
AdditiveOrder(R) : RootSys -> SeqEnum
An additive orderon the positive roots of the root system R, ie. a sequence containing the numbers 1, ..., N in some order so that αr + αst implies t is between r and s. This is computed using the techniques of [Pap94].
IsAdditiveOrder(R, Q) : RootSys, [RngIntElt] -> BoolElt
Returns true if, and only if, the sequence Q gives an additive order on a set of positive roots of the root system R. Q must be a sequence of integers in the range [1..N], where N is the number of positive roots of R, with no gaps or repeats.

Example RootSys_AdditiveOrder (H103E15)

> R := RootSystem("A5");
> a := AdditiveOrder(R);
> Position(a, 2);
6
> Position(a, 3);
10
> Position(a, Sum(R, 2, 3));
7
V2.28, 13 July 2023