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
The vector space containing the (co)roots of the root system R, i.e. X (resp. Y).
The simple (co)roots of the root system R as the rows of a matrix, i.e. A (resp. B).
> 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]
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.
Basis: MonStgElt Default: "Standard"
The indexed set of (co)roots of the root system R, i.e. {@ alpha_1, dotsalpha_(2N) @} (resp. {@ alpha_1^star, dotsalpha_(2N)^star @}).
Basis: MonStgElt Default: "Standard"
The indexed set of positive (co)roots of the root system R, i.e. {@ alpha_1, dotsalpha_N @} (resp. {@ alpha_1^star, dotsalpha_N^star @}).
Basis: MonStgElt Default: "Standard"
The rth (co)root alpha_r (resp. alpha_r^star) of the root system R.
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 into the appropriate vector space; v should be written with respect to the basis specified by the parameter Basis.
> 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
Basis: MonStgElt Default: "Standard"
The unique (long) root of greatest height in the irreducible root system R.
Basis: MonStgElt Default: "Standard"
The unique short root of greatest height in the irreducible crystallographic root system R.
> R := RootSystem( "G2" ); > HighestRoot( R ); (3 2) > HighestLongRoot( R ); (3 2) > HighestShortRoot( R ); (2 1)
Basis: MonStgElt Default: "Standard"
The matrix of an inner product on the (co)root space of 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. We normalise the inner product so that the short roots in each crystallographic component have length one.
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.
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_(alpha_1), ..., s_(alpha_n) (resp. s_(alpha_1)^star, ..., s_(alpha_n)^star).
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_(alpha_1), ..., s_(alpha_(2N)) (resp. s_(alpha_1)^star, ..., s_(alpha_(2N))^star).
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_(alpha_r) (resp. s_(alpha_r)^star).
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.
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.
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.
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 a = [a_1, ..., a_l] = ReflectionWords(R)[r], then s_(alpha_r) = s_(alpha_(a_1)) ... s_(alpha_(a_l)).
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 a = [a_1, ..., a_l] = ReflectionWord(R, r), then s_(alpha_r) = s_(alpha_(a_1)) ... s_(alpha_(a_l)).
> 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
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 alpha_t=alpha_r + alpha_s. We require alpha_r != +-alpha_s.
Returns true if, and only if, the rth (co)root of the root system R is a positive root.
Returns true if, and only if, the rth (co)root of the root system R is a negative root.
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 alpha_s= - alpha_r.
> 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
The height of the rth (co)root of the root system R, i.e. the sum of the coefficients of alpha_r (resp. alpha_r^star) with respect to the simple (co)roots.
The sequence of squares of the lengths of the (co)roots of the root system R.
The square of the length of the rth (co)root of the root system R.
Returns true if, and only if, the rth root of the root system R is long, i.e. the rth coroot is short. This only makes sense for irreducible crystallographic root systems.
Returns true if, and only if, the rth root of the root system R is short, i.e. the rth coroot is long. This only makes sense for irreducible crystallographic root systems.
Indices in the crystallographic root system R 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.
Indices in the crystallographic root system R 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.
The largest p such that alpha_s - palpha_r is a root. We require that R be crystallographic and alpha_s != +-alpha_r.
The largest q such that alpha_s + qalpha_r is a root. We require that R be crystallographic and alpha_s != +-alpha_r.
> 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
An additive order on the positive roots of the root system R, ie. a sequence containing the numbers 1, ..., N in some order so that alpha_r + alpha_s=alpha_t implies t is between r and s. This is computed using the techniques of [Pap94]
> R := RootSystem( "A5" ); > a := AdditiveOrder( R ); > Position( a, 2 ); 6 > Position( a, 3 ); 10 > Position( a, Sum( R, 2, 3 ) ); 7