|
| RootSystem (const int_Matrix &Cartan_matrix) |
|
| RootSystem (const RootSystem &rs, tags::DualTag) |
|
size_t | rank () const |
|
unsigned long | numPosRoots () const |
|
unsigned long | numRoots () const |
|
int | cartan (weyl::Generator i, weyl::Generator j) const |
|
int_Matrix | cartanMatrix () const |
|
LieType | Lie_type () const |
|
int_Matrix | cartanMatrix (const RootNbrList &sub) const |
| Returns the Cartan matrix of the root subsystem with basis |rb|. More...
|
|
LieType | Lie_type (RootNbrList sub) const |
|
int_Vector | root_expr (RootNbr alpha) const |
|
int_Vector | coroot_expr (RootNbr alpha) const |
|
int | level (RootNbr alpha) const |
|
int | colevel (RootNbr alpha) const |
|
template<typename I , typename O > |
void | toRootBasis (I, I, O) const |
|
template<typename I , typename O > |
void | toRootBasis (I, I, O, const RootNbrList &) const |
|
template<typename I , typename O > |
void | toSimpleWeights (I, I, O, const RootNbrList &) const |
|
bool | is_simple_root (RootNbr alpha) const |
|
bool | is_posroot (RootNbr alpha) const |
|
bool | is_negroot (RootNbr alpha) const |
|
RootNbr | simpleRootNbr (weyl::Generator i) const |
|
RootNbr | posRootNbr (size_t alpha) const |
|
RootNbr | simpleRootIndex (size_t alpha) const |
|
RootNbr | posRootIndex (size_t alpha) const |
|
RootNbr | rootMinus (RootNbr alpha) const |
|
RootNbr | rt_abs (RootNbr alpha) const |
|
RootNbrSet | simpleRootSet () const |
|
RootNbrList | simpleRootList () const |
|
RootNbrSet | posRootSet () const |
|
const Permutation & | simple_root_permutation (weyl::Generator i) const |
|
RankFlags | descent_set (RootNbr alpha) const |
|
RankFlags | ascent_set (RootNbr alpha) const |
|
size_t | find_descent (RootNbr alpha) const |
|
bool | is_descent (weyl::Generator i, RootNbr alpha) const |
|
bool | is_ascent (weyl::Generator i, RootNbr alpha) const |
|
RootNbr | simple_reflected_root (weyl::Generator i, RootNbr r) const |
|
void | simple_reflect_root (weyl::Generator i, RootNbr &r) const |
|
RootNbr | permuted_root (const WeylWord &ww, RootNbr r) const |
|
RootNbr | permuted_root (RootNbr r, const WeylWord &ww) const |
|
const Permutation & | root_permutation (RootNbr alpha) const |
|
bool | isOrthogonal (RootNbr alpha, RootNbr beta) const |
|
int | bracket (RootNbr alpha, RootNbr beta) const |
|
Permutation | root_permutation (const Permutation &twist) const |
|
Permutation | extend_to_roots (const RootNbrList &simple_images) const |
|
WeylWord | reflectionWord (RootNbr r) const |
|
matrix::Vector< int > | pos_system_vec (const RootNbrList &Delta) const |
|
RootNbrList | simpleBasis (RootNbrSet rs) const |
|
bool | sumIsRoot (RootNbr alpha, RootNbr beta, RootNbr &gamma) const |
|
bool | sumIsRoot (RootNbr alpha, RootNbr beta) const |
|
RootNbrSet | long_orthogonalize (const RootNbrSet &rest) const |
| Makes the orthogonal system |rset| into an equaivalent (for |refl_prod|) one that is additively closed inside the full root system. More...
|
|
RootNbrList | high_roots () const |
|
template<typename I , typename O >
void atlas::rootdata::RootSystem::toRootBasis |
( |
I |
first, |
|
|
I |
last, |
|
|
O |
out, |
|
|
const RootNbrList & |
rb |
|
) |
| const |
In this template, |I| is an Input_iterator with |value_type| |RootNbr|, and |O| is an OutputIterator with |value_type| |Weight|. We assume that |rb| contains a basis of some sub rootsystem of |rd|, and that |I| inputs |RootNbr|s corresponding to roots in that subsystem. Then we write to |out| the expression of the root in the basis |rb|.
The idea is to use the coroots of the vectors in |rb| to get the expression of both the input roots and those from |rb| itself in the simple weight basis for |rb| (this is done by |toSimpleWeights| below); the latter matrix (the Cartan matrix of |rb|) is square, so we can then apply |baseChange|, which amounts to left-multiplication by the inverse of that Cartan matrix.
template<typename I , typename O >
void atlas::rootdata::RootSystem::toSimpleWeights |
( |
I |
first, |
|
|
I |
last, |
|
|
O |
out, |
|
|
const RootNbrList & |
rb |
|
) |
| const |
In this template we assume that |I| is an InputIterator with value type |RootNbr|, that |O| is an OutputIterator with |value_type| |Weight|, and that |rb| flags a basis for some sub rootsystem of our |RootSystem|. The range $[first,last)$ should access root numbers of roots in the subsystem. Then for each |v| in this range we output to |out| the expression of |v| in the simple weight basis of the root subsystem |rb|; this is obtained simply by taking scalar products with the coroots of the roots in |rb|.