 Research
 Open access
 Published:
Extending Snow’s algorithm for computations in the finite Weyl groups
Fixed Point Theory and Algorithms for Sciences and Engineering volume 2023, Article number: 15 (2023)
Abstract
In 1990, D. Snow proposed an effective algorithm for computing the orbits of finite Weyl groups. Snow’s algorithm is designed for computation of weights, Worbits, and elements of the Weyl group. An extension of Snow’s algorithm is proposed, which allows to find pairs of mutually inverse elements together with the calculation of Worbits in the same runtime cycle. This simplifies the calculation of conjugacy classes in the Weyl group. As an example, the complete list of elements of the Weyl group \(W(D_{4})\) obtained using the extended Snow’s algorithm. The elements of \(W(D_{4})\) are specified in two ways: as reduced expressions and as matrices of the faithful representation. Then we give a partition of this group into conjugacy classes with elements specified as reduced expressions. Various forms are given for representatives of the conjugacy classes of \(W(D_{4})\): with Carter diagrams, with reduced expressions, and with signed cycletypes. In the Appendix, we provide an implementation of the algorithm in Python.
1 Introduction
1.1 Snow’s algorithm: finding Worbits
In 1990, D. Snow in [8] proposed an effective algorithm for computing the orbits of the finite Weyl groups. The algorithm starts with a certain dominant weight and acts on it by all simple reflections. This operation produces the complete list of weights of level 1 and the complete list of all elements of length 1 in the Weyl group W. In the next step, we again use reflections to obtain a list of level 2 weights and all elements of length 2, and so on. This approach has a repetition problem: the same weight can be obtained in several ways, and the list of elements of the Weyl group lying in some level contains duplicate elements. Snow presented a solution showing which weight v should be taken on the level \(L_{k}\) and which reflection \(s_{i}\) should be applied to v to get the given weight ξ at the level \(L_{k+1}\). Using Snow’s algorithm, the choice of v and \(s_{i}\) can be done in the unique way. This solution avoids duplicate elements, see Sect. 2.4.
The computation of the elements of the Weyl group in Snow’s algorithm is based on the following fact: there is a onetoone correspondence between the Weyl chambers and the elements of the Weyl group, and the Weyl group acts transitively on the set of Weyl chambers. Each element from the closure of the fundamental Weyl chamber generates a Weyl group orbit (Worbit) whose length coincides with the order of the Weyl group. The Worbit is constructed under the action of the Weyl group on some dominant weight. The weights of the Worbit are constructed together with the elements of the Weyl group W.
Let Φ be the root system associated with a certain semisimple Lie algebra \(\mathcal{L}\), W be the Weyl group associated to Φ, and \(\mathcal{E}\) be a real space spanned by the roots of Φ. A weight is an element \(\xi \in \mathcal{E}\) such that \(\langle \xi , \alpha \rangle \in \mathbb{Z}\) for all roots \(\alpha \in \varPhi \). The set of weights Λ forms a subgroup of \(\mathcal{E}\), i.e., \(\varPhi \subset \Lambda \subset \mathcal{E}\). The significance of the weights theory is largely determined by the highest weight theorem in the representation theory of semisimple Lie algebras.^{Footnote 1}
Snow’s algorithm produces the weights of Worbits and elements of the Weyl group by levels. For any \(\xi \in \mathcal{E}\) there exist \(w \in W\) and v from the closure C̅ of the fundamental Weyl chamber such that \(\xi = w(v)\), see Theorem A.1. The level of ξ is as follows:
where \(l(w)\) is the smallest length of w given as a reduced expression, [2, Ch. IV, §1, n^{o}1]. The level of weight ξ is equal to the number of reflections needed to move ξ to some dominant weight lying in the closure of the fundamental chamber C̅, see Proposition A.3. Following Snow, [8], the level of \(w \in W\) is also defined as \(l(w)\):
Using Snow’s algorithm, searching for elements of the Weyl group and their partitioning is carried out in accordance with the level of the element, see tables in Sect. 5.
In Sect. 2, we will look at some details of Snow’s algorithm. The sizes of all levels and the total computation time for cases \(B_{7}\), \(D_{8}\), \(E_{7}\), \(B_{8}\) are gathered in Table 1.
1.2 Extended Snow’s algorithm: finding inverse elements
To construct conjugacy classes of a group, one must first find all pairs of mutually inverse elements of the group. In the case of the Weyl group, each element and its inverse belong to the same level. However, even searching within a level can be quite an expensive task, especially for very large levels, see Table 1, where the length of the levels is several hundred thousand elements. Let
be an element of the level \(L_{k}\). We can find the inverse element \(w^{1}\) by reversing the order of the reduced expression w:
However, the inverse element must be found in accordance to the repetition prevention mechanism from Theorem 2.1. Then the reduced expression may differ from the reverse order of w.
An extension of Snow’s algorithm is designed to get around this obstacle: for any element \(w \in W\), one must obtain the inverse element \(w^{1}\), but this must be done in the order specified by Theorem 2.1. The reduced expression of the calculated inverse element will not necessarily be of the form (1.3). Bypassing the specified obstacle achieved through the exchange of information between any element and its inverse during the traversal performed by Snow’s algorithm. This information exchange is carried out using the dictionary mechanism described in Sect. 3.
The Weyl group \(W(D_{4})\) contains 192 elements. In Sect. 4, Carter diagrams and signed cycletypes are used to study of conjugacy classes in \(W(D_{4})\). In Sect. 5, all elements of \(W(D_{4})\) are divided into 12 levels. The elements of \(W(D_{4})\) are specified in two ways: as matrices and as reduced expressions, see Tables 6–24. For each element w, we provide also the reduced expression of the inverse element and its location.
The partition of the group \(W(D_{4})\) into conjugate classes is given in Sect. 6. There are 13 conjugacy classes including the trivial class containing only identity element e, see Tables 26–37. For each element w of the conjugacy class, we provide the level number k such that \(w \in L_{k}\) and the position of w in the level \(L_{k}\). With this information, the element w can be found in the tables of levels of Sect. 5.
The execution time of the extended Snow’s algorithm for Weyl groups \(B_{7}\), \(D_{8}\), \(E_{7}\), \(B_{8}\) on CPU 3.7 GHz/Python 3.7.3 are as follows:
For the execution time for each level, see Table 1.
Appendix A lists some properties of weights related to Lie algebras and Weyl groups. An implementation of the extended Snow’s algorithm in Python is given in Appendix B. An example of procedure for obtaining conjugacy classes is presented in Appendix C.
2 Snow’s algorithm: computation of Worbits and levels
2.1 Computation of the Worbits
Snow’s algorithm starts with a certain dominant weight and acts on it with all simple reflections. This produces all the weights of level 1 and a list of all elements of length 1 in W. If we apply this procedure again, ignoring duplicates, we obtain the weights of level 2 and a required list of elements of length 2 in W. By repeating this procedure, we compute a list of weights of any level, and the entire group W can be generated if an appropriate initial weight is chosen.
2.2 Computation of \(\operatorname{level}(\xi )\)
The algorithm provides a simple criterion for adding an orbit element to the list of weights. Let \(\xi = (x_{1}, \dots , x_{n})\) be any weight in the basis consisting of fundamental dominant weights, see Sect. A.2.2. What is the level of \(s_{i}(\xi )\) for any simple reflection \(s_{i}\)?
Let w be the element in W such that \(\xi = w(v)\) for some v from the fundamental domain C̅ with \(\operatorname{level}(\xi ) = l(w)\). By definition of the fundamental weights (A.7), we have
By (A.3) the sign of \(x_{i}\) coincides with the sign of \((w(v), \alpha _{i})\), then
Here, the first line in (2.2) follows from (A.11). Thus, in the case of \(x_{i} = 0\), the reflection \(s_{i}\) does not change the level:
Further, since the Cartan–Killing form is invariant under the Weyl group W, we have
Since v is a dominant weight, we have \(\langle v, \alpha \rangle \geq 0\) for all \(\alpha \in \varPhi \), see Sect. A.2. Then by Theorem A.5, we have
Thus the level is updated as follows:
2.3 Arranging the weights by levels
We start from a dominant weight \(\mu \in \Lambda ^{+}\), see Eq. (A.6). Let \(L_{k}\) be the kth level of \(W\cdotp \mu \), i.e.,
Then, the orbit \(W\cdotp \mu \) is the disjoint union of all levels:
where N is the maximal possible level in \(W\cdot \mu \). By Proposition A.6, the number N is the number of positive roots in C, since this is the maximal length of a Weyl group element.
To construct level \(L_{k+1}\) from the previously computed level \(L_{k}\), we apply reflections \(s_{i}\). By (2.6), if \(x_{i} > 0\) only reflection \(s_{i}\) move ξ from \(L_{k}\) to \(L_{k+1}\):
2.4 Snow’s solution to the repetition problem
2.4.1 An example of the repetition problem
For explanations about bases \(\{\alpha \}\) of simple roots and \(\{\bar{\omega}\}\) of fundamental weights, see Sect. A.3.5 and Sect. A.3.6. The main formulas used in calculation are (A.11) and (A.16).
We start with the dominant weight \(\lambda _{0}=(1,1,1,1)\) and act on this weight by two different elements of level 2 of the Weyl group \(W(D_{4})\):
By Eq. (A.16), we apply \(w_{1}\) and \(w_{2}\) to the row vector \(\lambda _{0}\) as follows:
Using (A.11), we act by reflection \(s_{2}\) onto weight \(\lambda _{1}\) (one could also use (A.16) as in (2.9)). Here, \(m_{2} = 1\), \(\bar{c}_{2} = (1, 2, 1, 1)\). Similarly, we act by reflection \(s_{3}\) on \(\lambda _{2}\), where \(m_{3} = 1\), \(\overline{c}_{3} = (0, 1, 2, 0)\).
So, \((\lambda _{0})s_{3}s_{2}s_{3} = (\lambda _{0})s_{2}s_{3}s_{2}\).^{Footnote 2} Thus, weight \((3, 1, 1, 3)\) can be obtained in different ways. This means that both \(s_{3}s_{2}s_{3}\) and \(s_{2}s_{3}s_{2}\) must be included in the list of level 3, even though they are two different reduced expressions for the same element.
This is an example of the repetition problem, see Fig. 1. Snow’s algorithm solves this problem with the following statement.
Theorem 2.1
(Snow, [8])
Let \(L_{k}\) be the kth level in the orbit \(W\cdot \mu \) of a dominant weight \(\mu \in \overline{C}\). Then, for each \(\xi = (x_{1},\dots , x_{l}) \in L_{k+1}\), there exists a unique \(\nu \in L_{k}\) and a unique simple reflection \(s_{i}\) such that \(s_{i}(\nu ) = \xi \) and \(x_{i} \geq 0\) for \(j > i\). In particular, the next level \(L_{k+1}\) can be constructed without repetitions from the weights \(\nu \in L_{k}\) by adding \(s_{i}(\nu )\) to \(L_{k+1}\) if and only if the ith coordinate of ν is positive and the coordinates of \(s_{i}(\nu )\) after the ith are nonnegative:
2.4.2 Application of Theorem 2.1 to Example 2.4.1
Here \(\xi = (3, 1, 1, 3)\). For \(v = \lambda _{2}\) and reflection \(s_{3}\), we have \(i = 3\) and \(x_{4} > 0\). By Theorem 2.1, the element \(s_{3}s_{2}s_{3}\) is added to level 3, see Table 7, element 10. On the other hand, for \(v = \lambda _{1}\) and reflection \(s_{2}\), we have \(i = 2\) and \(x_{3} < 0\). Then, the element \(s_{2}s_{3}s_{2}\), which is essentially another reduced expression for \(s_{3}s_{2}s_{3}\), is not added to level 3.
3 Extended Snow’s algorithm: computation of inverse elements
3.1 Double identification
Because the reduced expression is not unique, we must use another element identification w to recognize the inverse element. The matrix of w in the faithful representation can be chosen as such a requested identifier. We store the following information (class Element) about each element w:
For a complete description of this class, see Sect. B.8. The pair (name, matr) forms the double identification of the element. The question is why not use a weight that is simply a 1Darray instead of a matrix that is 2Darray. The reason is that at the time of calculating the new element given the element w, we do not know the weight of the inverse element \(w^{1}\). However, we know the inverse matrix \(w^{1}\) and at the same time do not perform a very expensive matrix inversion procedure. Let i the index of the desired reflection in the list of reflections refl. Then \(\mathit{refl}[i]\) (resp. \(s_{i}\)) is the matrix (resp. the symbol) of this reflection. All we have to do is

multiply the given matrix w on the left by \(\mathit{refl}[i]\) and the inverse matrix \(w^{1}\) on the right by the same reflection,

add the symbol \(s_{i}\) on the left to the reduced expression w, and for the reduced expression \(w^{1}\) add the symbol \(s_{i}\) on the right.
When implemented in Python, it looks like this:
See function newElem in Sect. B.9. Here, np.mathmul is a function from the Numpy package for multiplying two matrices. The dot “ . ” is used as delimiter between generators in string fields name, \(\mathit{name}\_\mathit{inv}\) and \(\mathit{new}\_\mathit{name}\_\mathit{inv}\).
3.2 Dictionary whose key is a matrix
The dictionary dictElemsOfLevel is used to exchange information between any element w and its inverse \(w^{1}\). The dictionary key is the matrix from class Element. The matrix is presented as a twodimensional list. Since a list cannot be a dictionary key in Python, we convert the matrix to a string as follows:
The dictionary value corresponding to this key is the location \(n\_\mathit{in}\_\mathit{lvl}\) of the matrix in \(\mathit{level}(\xi )\). See function keyValAndKeyInv() in Sect. B.8. Let key (resp. \(\mathit{key}\_\mathit{inv}\)) be the key corresponding to the \(\mathit{new}\_\mathit{matr}\) (resp. \(\mathit{new}\_\mathit{matr}\_\mathit{inv}\)). In the calculation cycle new level \(L_{k+1}\) by the level \(L_{k} \), there are 3 cases, see function findAllLevels_to_LvlK() in Sect. B.9. Each record of the dictionary is the pair (key, value), where key is the matrix converted to string, and value is the location of w in \(L_{k+1}\).
It should be noted that the dictionary mechanism in Python is realized very efficiently [11].
3.3 Exchange information between w and \(w^{1}\)
The element w leaves in the dictionary record about its location in \(L_{k+1}\). The inverse element \(w^{1}\) will read this record later. There are three typical cases:
Case 1. If the computed matrix new_matr is of order 2, i.e., the matrix is inverse to itself, then no message should be left in the dictionary. This is the simplest case. Here,
Case 2: Suppose, after checking the key of the element w, it turned out that the key is not in the dictionary. This means that the inverse element will appear later in the calculation loop. Then, the record about the location of w is recorded in the dictionary.
The inverse element \(w^{1}\) will read this record later, see (3).
Case 3: Suppose the key is in the dictionary. This means that the inverse element left an exact record about its location, see (2):
Then, there is no need to write any information in the dictionary, because both \(\mathit{new}\_\mathit{elem}\) and \(\mathit{new}\_\mathit{elem}\_\mathit{inv}\) are already informed about each other’s location:
The keys will be recorded into the dictionary only for Case 2. Let ν be number of records of some level \(L_{k}\), let \(\omega _{2}\) be the number of elements of order 2 in \(L_{k}\). Then, the number of elements of \(L_{k}\) in the dictionary at the end of the run cycle is \((\nu  \omega _{2})/2\). The number of elements of any level in the dictionary will always be less than half of all elements of this level.
Extended Snow’s algorithm (ESA) has comparable complexity to the original Snow’s algorithm and is, in practice, very efficient in providing information about inverse elements.
A possible strategy for computing conjugacy classes in a Weyl group using the obtained information on inverse elements is presented in Appendix C.
4 Conjugacy classes in \(W(D_{4})\)
In this section, we consider different representations of the conjugacy classes in \(W(D_{4})\). An algorithm for obtaining conjugacy classes based on a priori information about inverse elements is presented in Appendix C.
4.1 Conjugacy classes of \(W(D_{4})\) represented by Carter diagrams
First, we will see why, in Table 2, the representative element
of the conjugacy class 12 is represented as 4 unconnected vertices (root subset \(4A_{1}\)), and the representative element
of the conjugacy class 11 is represented by the Carter diagram \(D_{4}(a_{1})\).
For more convenient work with roots of the root system \(D_{4}\), we change the notation of vertices from i to \(\alpha _{i}\). We use the Bourbaki numbering of the vertices of the Dynkin diagram \(D_{4}\): The reflection \(s_{\alpha _{2}}\) does not commute with reflections \(s_{\alpha _{i}}\), \(i = 1,3,4\), while the reflections \(s_{\alpha _{1}}\), \(s_{\alpha _{3}}\), \(s_{\alpha _{4}}\) commute with each other, see Carter diagram in Table 2, line 10.
For any pair of nonorthogonal roots α and β, such that \((\alpha , \beta ) = 1\), the following relations hold:
4.1.1 Conjugacy class 11, Carter diagram \(D_{4}(a_{1})\)
The representative element \(w = s_{3}s_{2}s_{4}s_{3}s_{2}s_{1}\) is the first element of conjugacy class 11, see Table 36. Using the roots from the root system as indices, we get the following expression for w:
Further,
where, the notaion \(\stackrel{A}{\simeq}\) means conjugacy by the element A. The element (4.4) can be transformed as follows:
where \(\widetilde{\alpha}_{3} = (\alpha _{1} + \alpha _{2} + \alpha _{3})\).
The element w is represented by the Carter diagram \(D_{4}(a_{1})\), where the dotted edge \(\{\widetilde{\alpha}_{3}, \alpha _{4}\}\) corresponds to the inner product \((\widetilde{\alpha}_{3}, \alpha _{4}) = 1\), see [9, 10].
4.1.2 Conjugacy class 12, four unconnected vertices
The element (4.1) looks like this:
First of all, according to (4.3), we change \(s_{\alpha _{2}}s_{\alpha _{1}}s_{\alpha _{2}}\) to \(s_{\alpha _{2} + \alpha _{1}}\), and \(s_{\alpha _{4}}s_{\alpha _{2}}s_{\alpha _{4}}\) to \(s_{\alpha _{2} + \alpha _{4}}\). Then
Further, by (4.3), we change \(s_{\alpha _{3}}s_{\alpha _{2} + \alpha _{4}}s_{\alpha _{3}}\) to \(s_{\alpha _{2} + \alpha _{4} + \alpha _{3}}\), and \(s_{\alpha _{4}}s_{\alpha _{2} + \alpha _{1}}\) to \(s_{\alpha _{2} + \alpha _{1}}s_{\alpha _{2} + \alpha _{1} + \alpha _{4}}\). Thus,
Similarly, we replace \(s_{\alpha _{3}}s_{\alpha _{2} + \alpha _{1}}\) with \(s_{\alpha _{2} + \alpha _{1}}s_{\alpha _{2} + \alpha _{1} + \alpha _{3}}\), we get
Finally, since \(s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1}} = s_{\alpha _{1}}s_{ \alpha _{2}}\), we have \(s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1}} = s_{ \alpha _{2}}\) and
Note that in Eq. (4.6), there are four mutually orthogonal roots:
The subset (4.7) is represented by 4 unconnected vertices, i.e., \(4A_{1}\).
4.2 Conjugacy classes of \(W(D_{4})\) represented by signed cycletypes
In this section, we consider the representation of conjugacy classes 8–12 of Table 2 using the signed cycletypes. According to Bourbaki’s notaion:
We will use the following mappings:
see [2, Ch. VI, §4, n^{∘}8].
4.2.1 Conjugacy class 8, signed cycletype \([2\bar{1}\bar{1}]\)
Consider representative element \(s_{\alpha _{1}}s_{\alpha _{3}}s_{\alpha _{4}}\). Let us find the signed cycletype of this element. By (4.8), \(s_{e_{1}e_{2}}\) permutes \(e_{1}\) and \(e_{2}\), i.e., \(s_{e_{1}e_{2}}\) acts as permutation \((12)\). Further, the product \(s_{e_{3}e_{4}}s_{e_{3}+e_{4}}\) maps \(e_{3}\) to \(e_{3}\) and \(e_{4}\) to \(e_{4}\), i.e., acts as the pair of negative cycles [\(\bar{1}\bar{1}\)]. All together gives [2\(\bar{1}\bar{1}\)].
4.2.2 Conjugacy class 9, signed cycletype \([\bar{2}\bar{1}1]\)
Here, the representative element is \(s_{\alpha _{3}}s_{\alpha _{2}}s_{\alpha _{4}}\). By (4.8) \(s_{\alpha _{2}}\) permutes \(e_{2}\) and \(e_{3}\); \(s_{\alpha _{3}}\) permutes \(e_{3}\) and \(e_{4}\). At last, \(s_{\alpha _{4}}\) maps \(e_{4}\) to \(e_{3}\) and \(e_{3}\) to \(e_{4}\). Then,
The second mapping corresponds to the negative cycle [\(\bar{1}\)]. The first and third mappings form the cycle \(e_{2} \longmapsto e_{4} \longmapsto e_{2}\), i.e., the negative cycle [\(\bar{2}\)]. Thus, we get the signed cycletype [\(\bar{2}\bar{1}\)], or, that is the same, [\(\bar{2}\bar{1}\)1]. By [5, Prop. 25], [\(\bar{i}\bar{1}\)] corresponds to the Carter diagram \(D_{i+1}\). In our case, we get \(D_{3}\).
4.2.3 Conjugacy class 10, signed cycletype \([\bar{3}\bar{1}]\)
The representative element
acts as follows:
The mapping \(e_{3} \longmapsto e_{3}\) corresponds to the negative cycle [\(\bar{1}\)]. The remaining mappings form the cycle \(e_{1} \longmapsto e_{2} \longmapsto e_{4} \longmapsto e_{1}\), i.e., the negative cycle [\(\bar{3}\)]. So, we get the signed cycletype [\(\bar{3}\bar{1}\)]. As above, by [5, Prop. 25], the signed cycletype [\(\bar{3}\bar{1}\)] corresponds to \(D_{4}\).
4.2.4 Conjugacy class 11, signed cycletype \([\bar{2}\bar{2}]\)
By (4.5), the representative element
acts as follows:
The first and second mappings form the cycle \(e_{1} \longmapsto e_{2} \longmapsto e_{1}\), i.e., the negative cycle [\(\bar{2}\)]. The third and fourth mappings form the cycle \(e_{3} \longmapsto e_{4} \longmapsto e_{3}\), which is also the negative cycle [\(\bar{2}\)]. Thus, we get the signed cycletype [\(\bar{2} \bar{2}\)].
4.2.5 Conjugacy class 12, signed cycletype \([\bar{1}\bar{1}\bar{1}\bar{1}]\)
By (4.6) the representative element is as follows
Since \(s_{e_{i}  e_{j}}s_{e_{i} + e_{j}}\) maps \(e_{i}\) to \(e_{i}\) and \(e_{j}\) to \(e_{j}\), we get
This corresponds to the signed cycletype \([\bar{1}\bar{1}\bar{1}\bar{1}]\).
Availability of data and materials
Not applicable.
Notes
The last relation also follows from the wellknown braid relation \(s_{3}s_{2}s_{3} = s_{2}s_{3}s_{2}\).
References
Akivis, M.A., Rosenfeld, B.A.: Eli Cartan (18691951). Translations of Mathematical Monographies, AMS, vol. 123 (1993)
Bourbaki, N.: Lie groups and Lie Algebras. Chapters 4, 5, 6. Translated from the 1968 French original by Andrew Pressley. Elements of Mathematics (Berlin), xii+300 pp. Springer, Berlin (2002)
Cartan, E.: Les groupes projectifs qui ne laissant invariante aucune multiplicité plane. Bull. Soc. Math. Fr. 41, 53–96 (1913) (in French)
Cartan, E.: La géométrie des groupes simples. Ann. Math. 4, 209–256 (1927) (in French)
Carter, R.W.: Conjugacy classes in the Weyl group. Compos. Math. 25, 1–59 (1972)
Hawkins, T.: Emergence of the Theory of Lie groups. An Essay in the History of Mathematics 18691926. Springer, New York (2000). ISBN 0387989633
Humphreys, J.E.: Reflection Groups and Coxeter Groups. Cambridge University Press, Cambridge (1990)
Snow, D.: Weyl group orbits. ACM Trans. Math. Softw. 16(1), 94–108 (1990)
Stekolshchik, R.: Equivalence of Carter diagrams. Algebra Discrete Math. 23(1), 138–179 (2017)
Stekolshchik, R.: Transitions between root subsets associated with Carter diagrams. Commun. Math. 30(3), 259–301 (2022)
TimeComplexity (2022). https://wiki.python.org/moin/TimeComplexity
Acknowledgements
The author thanks the referee for constructive comments on the paper.
Funding
No funds, grants, or other support was received.
Author information
Authors and Affiliations
Contributions
The manuscript was written by Rafael Stekolshchik, I am the only author.
Corresponding author
Ethics declarations
Ethics approval and consent to participate
This material is my own original work, which has not been previously published elsewhere. The paper is not currently being considered for publication elsewhere.
Consent for publication
Not applicable.
Competing interests
The authors declare no competing interests.
Additional information
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Appendices
Appendix A: Some properties of weights
This section lists some properties of finite Weyl groups, weights related to Lie algebras and Weyl groups, as well as some other concepts related to weights.
1.1 A.1 Fundamental Weyl chamber
Let Φ be a root system, W be the Weyl group associated to Φ, Δ be the set of the simple roots, \(\varPhi ^{+}\) (resp. \(\varPhi ^{}\)) be the set of positive (resp. negative) roots, \(\Delta = \{\alpha _{1},\dots ,\alpha _{l}\}\), and \(\mathcal{E}\) be the linear space spanned by roots of Δ. For any root \(\alpha \in \varPhi \), let \(H_{\alpha}\) be the hyperplane \(\{ x \in \mathcal{E} \mid (\alpha , x) = 0 \}\). There is the finite number of the connected components of
These components are called the open Weyl chambers. There is the unique chamber C such that for any \(\xi \in C\), the following inequality holds:
where \((\cdot ,\cdot )\) is the Cartan–Killing bilinear form. The unique Weyl chamber C is called the fundamental Weyl chamber.^{Footnote 3}
Equation (A.1) is equivalent to each of the following two statements:
Theorem A.1
([2, ch. VI, §1, n^{∘}5, Th. 2])

(i)
The Weyl group acts simplytransitively on the Weyl chambers. Thus, the order of the Weyl group is equal to the number of Weyl chambers.

(ii)
Each \(\xi \in \mathcal{E}\) is conjugate to a unique point in the closure C̅ of the fundamental Weyl chamber (i.e. C̅ is a fundamental domain for W).
The word “conjugate” means “in the same Weyl group orbit”.
1.2 A.2 Dominant weights
For any vectors \(\alpha , \beta \in \varPhi \), let us define \(\langle \alpha , \beta \rangle \) as follows:
For the simplylaced Dynkin diagrams, if β is a root, then \(\langle \alpha , \beta \rangle = (\alpha , \beta )\). A weight (resp. dominant weight) is an element \(\lambda \in \mathcal{E}\) such that
The set of weights Λ forms a subgroup of \(\mathcal{E}\) containing the root system Φ, i.e. \(\varPhi \subset \Lambda \subset \mathcal{E}\). The concept of a dominant weight was introduced by Cartan in [3], however his definition was differ from the definition (A.4), see [6, p. 311].
1.2.1 A.2.1 Partial ordering on the set of weights
Consider two weights μ and λ. We say that μ is higher than λ, and we write \(\mu \geq \lambda \) if \(\mu  \lambda \) is expressible as a linear combination of positive roots with nonnegative real coefficients. This order is only partial.
Proposition A.2
([2, ch. VI, §1, n^{∘}6, Prop. 18])
The weight λ is dominant if and only if
The set of dominant vectors is denoted by \(\Lambda ^{+}\). We have
Proposition A.3
Any weight is conjugate to unique dominant weight.
For details, see [2, Ch. VI, §1, n^{∘}10].
1.2.2 A.2.2 Fundamental dominant weights
The weights \(\bar{\omega}_{i}\) satisfying the following relations
are called fundamental dominant weights. Any weight \(\lambda \in \mathcal{E}\) can be written as an integral linear combination of the vectors \(\{\bar{\omega}_{1},\dots ,\bar{\omega}_{l} \}\). The basis of the fundamental dominant weights is dual to the basis of simple roots on \(\mathcal{E}\) relative to the bilinear form Cartan–Killing.
1.3 A.3 The action of the Weyl group on the the weights
1.3.1 A.3.3 Length \(l(w)\)
Each element w in the Weyl group W is the product of reflections \(s_{i}\), where
The minimal number of simple reflections \(s_{i}\) in the decomposition
is called the length of the element w and is denoted by \(l(w)\).
Proposition A.4
([7, p. 1.7, Corollary])
The length of w is equal to the number of positive roots, which are transformed to negative roots under w.
The reflection \(s_{i}\) transforms \(\alpha _{i}\) to \(\alpha _{i}\) and permutes the other positive roots, then by Proposition A.4, we have the following
Theorem A.5
([7, p. 1.6, Lemma])
1.3.2 A.3.4 The element of the maximal length
Proposition A.6
([2, ch. VI, §1, n^{o}6, Corollary 3])
There exists the unique element \(w_{0}\) of the maximal length in the Weyl group W. Length \(l(w_{0})\) is equal to the number of positive roots.
1.3.3 A.3.5 The action \(s_{i}\) on a weight
Let us expand an arbitrary vector \(\lambda \in \mathcal{E}\) in the basis consisting of all fundamental dominant weights \(\{\bar{\omega}_{1},\dots , \bar{\omega}_{l} \}\):
Here, \((m_{1},\dots , m_{l})\) are the coordinates of the weight λ in the basis \(\{\bar{\omega}_{1},\dots , \bar{\omega}_{l}\}\). By (A.7) we have \(m_{j} = \langle \lambda , \alpha _{j} \rangle \) for any \(j \in \{1,\dots ,l \}\). If λ is one of roots, i.e., \(\lambda = \alpha _{j}\), then
where \(c_{ij} = \langle \alpha _{i}, \alpha _{j} \rangle \). Let \(\overline{c}_{i} = (c_{i1}, \dots , c_{il})\) be the ith row of the Cartan matrix \((\langle \alpha _{i}, \alpha _{j} \rangle )_{i,j=1}^{l}\). The vector \(\overline{c}_{i}\) is the root \(\alpha _{i}\) in the basis of fundamental weights. Then
Equation (A.11) is the main formula of Snow’s algorithm.
1.3.4 A.3.6 Dual bases and the Cartan matrix
The Cartan matrix \(B = \{c_{ij}\}\) relates dual bases \(\{\bar{\omega}\} = \{\bar{\omega _{i}}\}_{i=1,\dots ,l}\) and \(\{\alpha \} = \{\alpha _{i}\}_{i=1,\dots ,l}\) as follows:
see (A.7), (A.10). In other words, B is the transition matrix from the basis of the fundamental weights \(\{\bar{\omega}\}\) to the basis of the simple roots \(\{\alpha \}\).
Let s be a reflection in the basis \(\{\alpha \}\). Since elements of the Weyl group preserve the Cartan–Killing bilinear form, for any vectors \(u, v \in \mathcal{E}\), we have
where ^{t}s is the transposed matrix for the reflection matrix s. Then,
Here, \(Bs{B}^{1}\) is the reflection s in the basis of \(\{\bar{\omega}\}\), we get the following
Proposition A.7
If s is the reflection matrix in the basis \(\{\alpha \}\), the transposed matrix ^{t}s is the reflection matrix s in the basis of the fundamental weights \(\{\bar{\omega}\}\).
Let \(s_{\{\bar{\omega}\}}\) (resp. \(s_{\{\bar{\alpha}}\)) be the representation of the matrix s in the basis \({\{\bar{\omega}\}}\) (resp. \(\{\bar{\alpha}\}\)). By Proposition A.7, the action of any reflection s on the column vector v in the basis \(\{\bar{\omega}\}\) is as follows:
where \(\bar{v} = {}^{t}v_{\{\bar{\omega}\}}\) is the row vector in the basis \(\{\bar{\omega}\}\). On the left of (A.15), we have the column vector. Transpose this vector as follows:
where the vector on the left and the vector v̄ are row vectors. This means that instead of using the column vector \(v_{\{\bar{\omega}\}}\) and the reflection in the basis \(\{\bar{\omega}\}\), we can use the row vector \({}^{t}v_{\{\bar{\omega}\}}\) and the reflection in the basis \(\{\alpha \}\).
Equation (A.16) is another form of Eq. (A.11), which is the main formula of Snow’s algorithm.
1.4 A.4 Representation and weight space
Let \(\mathfrak{g}\) be a Lie algebra over \(\mathbb{C}\), and \(\mathfrak{h}\) be a Cartan subalgebra of \(\mathfrak{g}\) (a maximal abelian subalgebra). The roots are defined as the nonzero eigenvalues of \(\mathfrak{h}\) acting on \(\mathfrak{g}\) via the adjoint representation:
where \(x \in \mathfrak{g}\) is a corresponding eigenvector. The roots are considered as linear functionals on \(\mathfrak{h}\), they span a real space E in the dual space \(\mathfrak{h}^{*}\).
Let V be a representation of \(\mathfrak{g}\) over \(\mathbb{C}\) (not necessarily adjoint). A weight λ of the representation V with the weight space of \(V_{\lambda}\) is a linear functional on \(\mathfrak{h}\) given as follows:
1.5 A.5 Theorem of highest weight
Let \(\mathfrak{g}\) be a finitedimensional semisimple complex Lie algebra. A weight λ of a representation V of \(\mathfrak{g}\) is called a highest weight if \(\mu \leq \lambda \) for every other weight μ of V, see Sect. A.2.1.
In 1913 the theorem of highest weight for representations of simple Lie algebras was completed by E. Cartan.
Theorem A.8
(E. Cartan, [3])

(i)
If V is a finitedimensional irreducible representation of \(\mathfrak{g}\), then V has a unique highest weight, and this highest weight is dominant integral.

(ii)
If two finitedimensional irreducible representations have the same highest weight, they are isomorphic.

(iii)
For each dominant integral weight λ, there exists a finitedimensional irreducible representation with highest weight λ.
1.6 A.6 Fundamental weights in the case \(D_{4}\)
The dependencies of simple roots \(\{ \alpha _{1}, \alpha _{2}, \alpha _{3}, \alpha _{4} \}\) and elements of the canonical basis \(\{e_{1}, e_{2}, e_{3}, e_{4} \}\) are as follows:
By [2, Table IV], the fundamental weights \(\{\bar{\omega}_{1}, \bar{\omega}_{2}, \bar{\omega}_{3}, \bar{\omega}_{4} \}\) can be calculated by the following formulas:
Let B denote the Cartan matrix. Then formulas (A.20) can also be obtained using the inverse of Cartan matrix \(B^{1}\) as follows:
see [2, Ch. VI, (14)]. For the case \(D_{4}\):
Appendix B: The Python implementation
2.1 B.7 Root system, generators and number of levels
The file below (\(\mathit{reflections}\_D4.\mathit{py}\)) contains information related to the current root system: reflections, the Cartan matrix and number of levels. You can change to a different root system only by modifying this file. The root system is given as string “D4”, “B5”, “E6”, etc. The generators of the Weyl group are given as the matrices of the faithful representation. The number of levels is equal to the number of positive roots plus one, see Proposition (A.4).
2.2 B.8 Data structure
The class Element contains all the information related to the given element (and its inverse) of the Weyl group. Consider, for example, the first element in Table (13)
The name of the element (B.1) in the class is the following string:
The information added during the extended Snow’s algorithm is the name of the inverse element, its matrix, and its location in “level”. This information is needed to calculate conjugacy classes.
2.3 B.9 Calculation of all levels
This section contains the main implementation file of the extended Snow’s algorithm, including the search for inverse elements. To move to another root system, you need to change the inclusion \(\mathit{from}\ \mathit{reflections}\_D4\) to the appropriate one, see Sect. B.7.
2.4 B.10 Sample output: file containing one level
For the root system \(D_{4}\), we get 13 files corresponding to 13 levels. Here is the file containing level 2 consisting of 9 elements.
Appendix C: Procedure for obtaining CCLs
This section describes an example algorithm (using pseudocode) for obtaining CCLs. This algorithm uses information about the inverse elements found by ESA.
First, read all elements of all levels into 2dimensional list ‘list_of_levels’. Add to each element information about its inverse element.
Further, create a dictionary ‘dictAllElems’ containing information on each element. The Python dictionary used here is similar to the dictionary in ESA, see Sect. 3.2.
If some element is not yet included in any CCL (“elem.ccl” is −1), then a new conjugacy class “oneCCL” is created. Each candidate to be included in “oneCCL” is checked to see if it has been included before. The function “createCCL” is executed in a loop for all elements not yet covered.
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Stekolshchik, R. Extending Snow’s algorithm for computations in the finite Weyl groups. Fixed Point Theory Algorithms Sci Eng 2023, 15 (2023). https://doi.org/10.1186/s1366302300755w
Received:
Accepted:
Published:
DOI: https://doi.org/10.1186/s1366302300755w