Skip to main content

Extending Snow’s algorithm for computations in the finite Weyl groups


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, W-orbits, 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 W-orbits 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 cycle-types. In the Appendix, we provide an implementation of the algorithm in Python.

1 Introduction

1.1 Snow’s algorithm: finding W-orbits

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 one-to-one 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 (W-orbit) whose length coincides with the order of the Weyl group. The W-orbit is constructed under the action of the Weyl group on some dominant weight. The weights of the W-orbit 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 W-orbits and elements of the Weyl group by levels. For any \(\xi \in \mathcal{E}\) there exist \(w \in W\) and v from the closure of the fundamental Weyl chamber such that \(\xi = w(v)\), see Theorem A.1. The level of ξ is as follows:

$$ \operatorname{level}(\xi ) = l(w), $$

where \(l(w)\) is the smallest length of w given as a reduced expression, [2, Ch. IV, §1, no1]. 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 , see Proposition A.3. Following Snow, [8], the level of \(w \in W\) is also defined as \(l(w)\):

$$ \operatorname{level}(w) = 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.

Table 1 The Weyl groups \(B_{7}\), \(D_{8}\), \(E_{7}\), \(B_{8}\): level sizes and total runtime of the extended Snow’s algorithm

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

$$ w = s_{i_{1}}s_{i_{2}}\cdots s_{i_{k-1}}s_{i_{k}} $$

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:

$$ w^{-1} = s_{i_{k}}s_{i_{k-1}}\cdots s_{i_{2}}s_{i_{1}}. $$

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 cycle-types 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 624. 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 2637. 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:

$$ \begin{aligned} & B_{7} &645{,}120 \text{ elements} && 59 \text{ sec} \\ & E_{7} &2{,}903{,}040 \text{ elements} && 269 \text{ sec} \\ & D_{8} &5{,}169{,}960 \text{ elements} && 570 \text{ sec} \\ & B_{8} &10{,}321{,}920 \text{ elements} && 1153 \text{ sec} \end{aligned} $$

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 W-orbits and levels

2.1 Computation of the W-orbits

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 with \(\operatorname{level}(\xi ) = l(w)\). By definition of the fundamental weights (A.7), we have

$$ \xi = \sum_{i} x_{i} \bar{\omega}_{i}, \quad \text{and}\quad x_{i} = \langle \xi , \alpha _{i} \rangle = \bigl\langle w(v), \alpha _{i} \bigr\rangle . $$

By (A.3) the sign of \(x_{i}\) coincides with the sign of \((w(v), \alpha _{i})\), then

{ x i = 0 s i ( ξ ) = ξ , x i > 0 ( w ( v ) , α i ) > 0 , x i < 0 ( w ( v ) , α i ) < 0 .

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:

x i =0level ( s i ( ξ ) ) =level(ξ).

Further, since the Cartan–Killing form is invariant under the Weyl group W, we have

x i > 0 ( v , w 1 ( α i ) ) > 0 , x i < 0 ( v , w 1 ( α i ) ) < 0 .

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

x i > 0 w 1 ( α i ) Φ + l ( s i w ) = l ( w ) + 1 , x i < 0 w 1 ( α i ) Φ l ( s i w ) = l ( w ) 1 .

Thus the level is updated as follows:

$$ \operatorname{level}\bigl(s_{i}(\xi ) \bigr) = \textstyle\begin{cases} \operatorname{level}(\xi ) + 1 & \text{if } x_{i} > 0, \\ \operatorname{level}(\xi ) & \text{if } x_{i} = 0, \\ \operatorname{level}(\xi ) - 1 &\text{if } x_{i} < 0. \end{cases} $$

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.,

$$ L_{k} = \bigl\{ \text{weights } \xi \in W\cdotp \mu \mid \operatorname{level}(\xi ) = k \bigr\} . $$

Then, the orbit \(W\cdotp \mu \) is the disjoint union of all levels:

$$ W\cdotp \mu = \bigsqcup_{i = 0}^{N} L_{i}, $$

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}\):

$$ L_{k+1} = \bigl\{ s_{i}(\xi ) \mid i = 1,\dots , l, \xi = (x_{1}, \dots , x_{l}) \in L_{k}, x_{i} > 0 \bigr\} . $$

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})\):

$$ \begin{aligned} & w_{1} = s_{2}s_{3} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 1 & 0 & -1 & 1 \\ 0 & 1 & -1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \quad \text{(Table 6, elm. 6)}, \\ & w_{2} = s_{3}s_{2} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 1 & -1 & 1 & 1 \\ 1 & -1 & 0 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix} \quad \text{(Table 6, elm. 4)}. \end{aligned} $$

By Eq. (A.16), we apply \(w_{1}\) and \(w_{2}\) to the row vector \(\lambda _{0}\) as follows:

$$ \begin{aligned} & \lambda _{1} = \lambda _{0}{w}_{1} = \lambda _{0}s_{2}s_{3} = (2, 1, -2, 2) , \\ & \lambda _{2} = \lambda _{0}{w}_{2} = \lambda _{0}s_{3}s_{2} = (3, -2, 1, 3). \end{aligned} $$

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)\).

$$ \begin{aligned} & \lambda _{1} s_{2} = \lambda _{1} - m_{2}\overline{c}_{2} = (2, 1, -2, 2) - (-1, 2, -1, -1) = (3, -1, -1, 3), \\ & \lambda _{2} s_{3} = \lambda _{2} - m_{3}\overline{c}_{3} = (3, -2, 1, 3) - (0, -1, 2, 0) = (3, -1, -1, 3). \end{aligned} $$

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.

Figure 1
figure 1

Two different reduced expressions that are equal

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:

$$ \begin{aligned} L_{k+1} ={}& \bigl\{ s_{i}(\nu ) = (x_{1}, \dots , x_{l} \mid i = 1,\dots , l, \\ & \nu = (y_{1}, \dots , y_{l}) \in L_{k}, y_{i} > 0, x_{k} \geq 0, j > i \bigr\} . \end{aligned} $$

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 1D-array instead of a matrix that is 2D-array. 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 two-dimensional 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

$$ s_{1}s_{2}s_{3}s_{4}s_{2}s_{1}s_{2}s_{3}s_{4}s_{2}s_{3}s_{4} $$

of the conjugacy class 12 is represented as 4 unconnected vertices (root subset \(4A_{1}\)), and the representative element

$$ s_{3}s_{2}s_{4}s_{3}s_{2}s_{1} $$

of the conjugacy class 11 is represented by the Carter diagram \(D_{4}(a_{1})\).

Table 2 Conjugacy classes in the Weyl groups \(D_{4}\), see Tables 2637 and Table 3
Table 3 Weyl groups \(D_{4}\). Partitioning by element orders

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 non-orthogonal roots α and β, such that \((\alpha , \beta ) = -1\), the following relations hold:

$$ \begin{aligned} & s_{\beta}s_{\alpha}s_{\beta} = s_{s_{\beta}({\alpha})} = s_{\alpha +\beta},\quad \text{and}\quad s_{\beta}s_{\alpha} = s_{\alpha +\beta}s_{ \beta}, \qquad s_{\alpha}s_{\beta} = s_{\beta}s_{\alpha +\beta}, \\ & (s_{\beta}s_{\alpha})^{3} = 1, \quad \text{since } (s_{\beta}s_{\alpha})^{3} = (s_{\beta}s_{\alpha}s_{\beta}) (s_{\alpha}s_{\beta}s_{\alpha}) = s_{ \alpha +\beta}^{2} = 1. \end{aligned} $$

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:

$$ w = s_{\alpha _{3}}s_{\alpha _{2}}s_{\alpha _{4}}s_{\alpha _{3}}s_{ \alpha _{2}}s_{\alpha _{1}} = s_{\alpha _{3}}s_{\alpha _{2}}s_{ \alpha _{3}}s_{\alpha _{4}}s_{\alpha _{2}}s_{\alpha _{1}} = s_{ \alpha _{2} + \alpha _{3}}s_{\alpha _{4}}s_{\alpha _{2}}s_{\alpha _{1}}. $$


$$ w \stackrel{s_{\alpha _{1}}}{\simeq} s_{\alpha _{1}}s_{\alpha _{2} + \alpha _{3}}s_{\alpha _{4}}s_{\alpha _{2}}, $$

where, the notaion \(\stackrel{A}{\simeq}\) means conjugacy by the element A. The element (4.4) can be transformed as follows:

$$ w = s_{\alpha _{1}}s_{\alpha _{2} + \alpha _{3}}s_{\alpha _{4}}s_{ \alpha _{2}} = s_{\alpha _{2} + \alpha _{3} + \alpha _{1}}s_{\alpha _{1}}s_{ \alpha _{4}}s_{\alpha _{2}} = s_{\widetilde{\alpha}_{3}}s_{\alpha _{1}}s_{\alpha _{4}}s_{\alpha _{2}}, $$

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:

$$ w = s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{3}}s_{\alpha _{4}}s_{ \alpha _{2}}s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{3}}s_{\alpha _{4}}s_{ \alpha _{2}}s_{\alpha _{3}}s_{\alpha _{4}}. $$

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

$$ w = s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{3}}s_{\alpha _{4}}s_{ \alpha _{2} + \alpha _{1}}s_{\alpha _{3}}s_{\alpha _{2} + \alpha _{4}}s_{ \alpha _{3}}. $$

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,

$$ w = s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{3}}s_{\alpha _{2} + \alpha _{1}}s_{\alpha _{2} + \alpha _{1} + \alpha _{4}}s_{\alpha _{2} + \alpha _{4} + \alpha _{3}}. $$

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

$$ w = s_{\alpha _{1}}s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1}} s_{ \alpha _{2} + \alpha _{1} + \alpha _{3}}s_{\alpha _{2} + \alpha _{1} + \alpha _{4}}s_{\alpha _{2} + \alpha _{4} + \alpha _{3}}. $$

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

$$ w = s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1} + \alpha _{3}}s_{ \alpha _{2} + \alpha _{1} + \alpha _{4}}s_{\alpha _{2} + \alpha _{4} + \alpha _{3}}. $$

Note that in Eq. (4.6), there are four mutually orthogonal roots:

$$ \alpha _{2}, \qquad \alpha _{2} + \alpha _{1} + \alpha _{3}, \qquad \alpha _{2} + \alpha _{1} + \alpha _{4}, \qquad \alpha _{2} + \alpha _{4} + \alpha _{3}. $$

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 cycle-types

In this section, we consider the representation of conjugacy classes 8–12 of Table 2 using the signed cycle-types. According to Bourbaki’s notaion:

$$ s_{\alpha _{1}} = s_{e_{1}-e_{2}}, \qquad s_{\alpha _{2}} = s_{e_{2}-e_{3}}, \qquad s_{\alpha _{3}} = s_{e_{3}-e_{4}}, \qquad s_{\alpha _{4}} = s_{e_{3}+e_{4}}. $$

We will use the following mappings:

$$ \begin{aligned} s_{e_{i}-e_{j}}: \textstyle\begin{cases} e_{i} \longmapsto e_{j}, \\ e_{j} \longmapsto e_{i}, \end{cases}\displaystyle \qquad s_{e_{i}+e_{j}}: \textstyle\begin{cases} e_{i} \longmapsto -e_{j}, \\ e_{j} \longmapsto -e_{i}, \end{cases}\displaystyle \qquad s_{e_{i}-e_{j}}s_{e_{i}+e_{j}}: \textstyle\begin{cases} e_{i} \longmapsto -e_{i}, \\ e_{j} \longmapsto -e_{j}, \end{cases}\displaystyle \end{aligned} $$

see [2, Ch. VI, §4, n8].

4.2.1 Conjugacy class 8, signed cycle-type \([2\bar{1}\bar{1}]\)

Consider representative element \(s_{\alpha _{1}}s_{\alpha _{3}}s_{\alpha _{4}}\). Let us find the signed cycle-type 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 cycle-type \([\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,

$$ s_{\alpha _{3}}s_{\alpha _{2}}s_{\alpha _{4}}: \textstyle\begin{cases} e_{2} \longmapsto e_{4}, \\ e_{3} \longmapsto -e_{3}, \\ e_{4} \longmapsto -e_{2}. \end{cases} $$

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 cycle-type [\(\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 cycle-type \([\bar{3}\bar{1}]\)

The representative element

$$ s_{\alpha _{1}}s_{\alpha _{4}}s_{\alpha _{2}}s_{\alpha _{3}} = s_{e_{1}-e_{2}}s_{e_{3}+e_{4}}s_{e_{2}-e_{3}}s_{e_{3}-e_{4}} $$

acts as follows:

$$ s_{\alpha _{1}}s_{\alpha _{4}}s_{\alpha _{2}}s_{\alpha _{3}}: \textstyle\begin{cases} e_{1} \longmapsto e_{2}, \qquad e_{3} \longmapsto -e_{3}, \\ e_{2} \longmapsto -e_{4}, \qquad e_{4} \longmapsto e_{1}. \end{cases} $$

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 cycle-type [\(\bar{3}\bar{1}\)]. As above, by [5, Prop. 25], the signed cycle-type [\(\bar{3}\bar{1}\)] corresponds to \(D_{4}\).

4.2.4 Conjugacy class 11, signed cycle-type \([\bar{2}\bar{2}]\)

By (4.5), the representative element

$$ s_{\alpha _{2} + \alpha _{3} + \alpha _{1}}s_{\alpha _{1}}s_{\alpha _{4}}s_{ \alpha _{2}} = s_{e_{1} - e_{4}}s_{e_{1} - e_{2}}s_{e_{3} + e_{4}}e_{e_{2} - e_{3}} $$

acts as follows:

$$ s_{\alpha _{2} + \alpha _{3} + \alpha _{1}}s_{\alpha _{1}}s_{\alpha _{4}}s_{ \alpha _{2}}: \textstyle\begin{cases} e_{1} \longmapsto e_{2}, \\ e_{2} \longmapsto -e_{4} \longmapsto -e_{1}, \\ e_{3} \longmapsto e_{4}, \\ e_{4} \longmapsto -e_{3}. \end{cases} $$

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 cycle-type [\(\bar{2} \bar{2}\)].

4.2.5 Conjugacy class 12, signed cycle-type \([\bar{1}\bar{1}\bar{1}\bar{1}]\)

By (4.6) the representative element is as follows

$$ s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1} + \alpha _{3}} s_{\alpha _{2} + \alpha _{1} + \alpha _{4}}s_{\alpha _{2} + \alpha _{4} + \alpha _{3}} = e_{e_{2} - e_{3}}e_{e_{1} - e_{4}}e_{e_{1} + e_{4}}e_{e_{2} + e_{3}}. $$

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

$$ s_{\alpha _{2}}s_{\alpha _{2} + \alpha _{1} + \alpha _{3}} s_{\alpha _{2} + \alpha _{1} + \alpha _{4}}s_{\alpha _{2} + \alpha _{4} + \alpha _{3}}: e_{i} \longmapsto -e_{i} \quad \text{for } i = 1,2,3,4. $$

This corresponds to the signed cycle-type \([\bar{1}\bar{1}\bar{1}\bar{1}]\).

5 Weyl group \(D_{4}\). Partitioning by levels

See Tables 424.

Table 4 Weyl group \(D_{4}\), level 0, element e
Table 5 Weyl group \(D_{4}\), level 1, elements 0–3
Table 6 Weyl group \(D_{4}\), level 2, elements 0–8
Table 7 Weyl group \(D_{4}\), level 3, elements 0–13
Table 8 Weyl group \(D_{4}\), level 3, elements 14–15
Table 9 Weyl group \(D_{4}\), level 4, elements 0–13
Table 10 Weyl group \(D_{4}\), level 4, elements 14–22
Table 11 Weyl group \(D_{4}\), level 5, elements 0–13
Table 12 Weyl group \(D_{4}\), level 5, elements 14–27

6 Thirteen conjugacy classes of \(W(D_{4})\)

See Tables 2537.

Availability of data and materials

Not applicable.


  1. The highest weight theorem was proved by E. Cartan in 1913, [3], see Sect. A.5.

  2. The last relation also follows from the well-known braid relation \(s_{3}s_{2}s_{3} = s_{2}s_{3}s_{2}\).

  3. The fundamental domains of usual and affine Weyl groups (Weyl chambers) were first described by E. Cartan in 1927, [4], see [1, p.62].


  1. Akivis, M.A., Rosenfeld, B.A.: Eli Cartan (1869-1951). Translations of Mathematical Monographies, AMS, vol. 123 (1993)

    MATH  Google Scholar 

  2. 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)

    Book  MATH  Google Scholar 

  3. Cartan, E.: Les groupes projectifs qui ne laissant invariante aucune multiplicité plane. Bull. Soc. Math. Fr. 41, 53–96 (1913) (in French)

    Article  MATH  Google Scholar 

  4. Cartan, E.: La géométrie des groupes simples. Ann. Math. 4, 209–256 (1927) (in French)

    MATH  Google Scholar 

  5. Carter, R.W.: Conjugacy classes in the Weyl group. Compos. Math. 25, 1–59 (1972)

    MathSciNet  MATH  Google Scholar 

  6. Hawkins, T.: Emergence of the Theory of Lie groups. An Essay in the History of Mathematics 1869-1926. Springer, New York (2000). ISBN 0-387-98963-3

    MATH  Google Scholar 

  7. Humphreys, J.E.: Reflection Groups and Coxeter Groups. Cambridge University Press, Cambridge (1990)

    Book  MATH  Google Scholar 

  8. Snow, D.: Weyl group orbits. ACM Trans. Math. Softw. 16(1), 94–108 (1990)

    Article  MathSciNet  MATH  Google Scholar 

  9. Stekolshchik, R.: Equivalence of Carter diagrams. Algebra Discrete Math. 23(1), 138–179 (2017)

    MathSciNet  MATH  Google Scholar 

  10. Stekolshchik, R.: Transitions between root subsets associated with Carter diagrams. Commun. Math. 30(3), 259–301 (2022)

    MathSciNet  Google Scholar 

  11. TimeComplexity (2022).

Download references


The author thanks the referee for constructive comments on the paper.


No funds, grants, or other support was received.

Author information

Authors and Affiliations



The manuscript was written by Rafael Stekolshchik, I am the only author.

Corresponding author

Correspondence to Rafael Stekolshchik.

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.


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

$$ \mathcal{E} - \bigcup_{\alpha \in \varPhi} H_{\alpha}. $$

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:

$$ (\xi , \alpha _{i}) > 0 \quad \text{for all } \alpha _{i} \in \Delta , $$

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:

$$ \begin{aligned} & (\xi , \alpha ) > 0\quad \text{for all } \alpha \in \varPhi ^{+}, \\ & (\xi , \alpha ) < 0 \quad \text{for all } \alpha \in \varPhi ^{-}. \end{aligned} $$

Theorem A.1

([2, ch. VI, §1, n5, Th. 2])

  1. (i)

    The Weyl group acts simply-transitively on the Weyl chambers. Thus, the order of the Weyl group is equal to the number of Weyl chambers.

  2. (ii)

    Each \(\xi \in \mathcal{E}\) is conjugate to a unique point in the closure of the fundamental Weyl chamber (i.e. 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:

$$ \langle \alpha , \beta \rangle := \frac{2(\alpha , \beta )}{(\beta , \beta )}. $$

For the simply-laced 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

$$ \langle \lambda , \alpha \rangle \in \mathbb{Z} \qquad \bigl(\text{resp. } \langle \lambda , \alpha \rangle \in \mathbb{Z} \text{ and } \langle \lambda , \alpha \rangle \geq 0\bigr) \quad \text{for all } \alpha \in \Delta . $$

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 non-negative real coefficients. This order is only partial.

Proposition A.2

([2, ch. VI, §1, n6, Prop. 18])

The weight λ is dominant if and only if

$$ \lambda \geq w\lambda \quad \textit{for any } w \in W. $$

The set of dominant vectors is denoted by \(\Lambda ^{+}\). We have

$$ \Lambda ^{+} = \Lambda \cap \overline{C}. $$

Proposition A.3

Any weight is conjugate to unique dominant weight.

For details, see [2, Ch. VI, §1, n10].

1.2.2 A.2.2 Fundamental dominant weights

The weights \(\bar{\omega}_{i}\) satisfying the following relations

$$ \langle \bar{\omega}_{i}, \alpha _{j} \rangle = \delta _{ij}, \quad \text{where } i,j \in \{1,\dots ,l \} $$

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

$$ s_{i}(x) = x - \langle x, \alpha _{i} \rangle \alpha _{i}. $$

The minimal number of simple reflections \(s_{i}\) in the decomposition

$$ w = s_{i_{1}}\cdots s_{i_{n}} $$

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])

$$ l(s_{i}w) = \textstyle\begin{cases} l(w) + 1, &\textit{if } w^{-1}(\alpha _{i}) \in \varPhi ^{+}, \\ l(w) - 1, &\textit{if } w^{-1}(\alpha _{i}) \in \varPhi ^{-}. \end{cases} $$

1.3.2 A.3.4 The element of the maximal length

Proposition A.6

([2, ch. VI, §1, no6, 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} \}\):

$$ \lambda = \sum_{i=1}^{l} m_{i}\bar{\omega}_{i}. $$

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

$$ \alpha _{j} = \sum_{i=1}^{l} c_{ij}\bar{\omega}_{i}, $$

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

$$ \begin{aligned} & s_{i}(\lambda ) = \lambda - \langle \lambda , \alpha _{i} \rangle \alpha _{i} = \lambda - m_{i}(c_{i1},\dots ,c_{il}),\quad \text{i.e.,} \\ & s_{i}(\lambda ) = (m_{1} - m_{i}c_{i1}, \dots , m_{l} - m_{i}c_{il}). \end{aligned} $$

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:

$$ \bar{\omega _{i}} = B^{-1}\alpha _{i} \quad \text{for } i=1,\dots ,l, $$

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

$$ \begin{aligned} & (s{u},v) = (u, s{v}), \quad \text{i.e.}, \\ & \langle {B}s{u},v \rangle = \langle {B}u, s{v} \rangle = \bigl\langle {}^{t}sBu,v \bigr\rangle , \end{aligned} $$

where ts is the transposed matrix for the reflection matrix s. Then,

$$ Bs = {}^{t}s{B}, \quad \text{or}\quad Bs{B}^{-1} = {}^{t}s. $$

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 ts 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:

$$ s(v)_{\{\bar{\omega}\}} = s_{\{\bar{\omega}\}}v_{\{\bar{\omega}\}} = {}^{t}s_{ \{\bar{\alpha}\}}v_{\{\bar{\omega}\}} = {}^{t} (\bar{v}s_{\{ \bar{\alpha}\}} ), $$

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:

$$ {}^{t}\bigl(s(v)_{\{\bar{\omega}\}}\bigr) = \bar{v}s_{\{\bar{\alpha}\}} = {}^{t}v_{ \{\bar{\omega}\}}s_{\{\alpha \}}, $$

where the vector on the left and the vector 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:

$$ \alpha : \mathfrak{h} \longrightarrow \mathbb{C}, \qquad [h, x] = \alpha (h)x \quad \text{for all } h \in \mathfrak{h}, $$

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:

$$ V_{\lambda} := \bigl\{ x \in V, h\cdot x = \lambda (h) x \text{ for all } h \in \mathfrak{h}\bigr\} $$

1.5 A.5 Theorem of highest weight

Let \(\mathfrak{g}\) be a finite-dimensional 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])

  1. (i)

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

  2. (ii)

    If two finite-dimensional irreducible representations have the same highest weight, they are isomorphic.

  3. (iii)

    For each dominant integral weight λ, there exists a finite-dimensional 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:

$$ \begin{aligned} & \alpha _{1} = e_{1} - e_{2}, \qquad \alpha _{2} = e_{2} - e_{3}, \qquad \alpha _{3} = e_{3} - e_{4}, \qquad \alpha _{4} = e_{3} + e_{4}, \\ & e_{1} = \alpha _{1} + \alpha _{2} + \frac{\alpha _{3} + \alpha _{4}}{2}, \qquad e_{2} = \alpha _{2} + \frac{\alpha _{3} + \alpha _{4}}{2}, \\ & e_{3} = \frac{\alpha _{3} + \alpha _{4}}{2}, \qquad e_{4} = \frac{\alpha _{4} - \alpha _{4}}{2}. \end{aligned} $$

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:

$$ \begin{aligned} & \bar{\omega}_{1} = e_{1} = \alpha _{1} + \alpha _{2} + \frac{\alpha _{3} + \alpha _{4}}{2}, \\ & \bar{\omega}_{2} = e_{1} + e_{2} = a_{1} + 2\alpha _{2} + \alpha _{3} + \alpha _{4}, \\ & \bar{\omega}_{3} = \frac{1}{2}(e_{1} + e_{2} + e_{3} - e_{4}) = \frac{1}{2}(a_{1} + 2\alpha _{2} + 2\alpha _{3} + \alpha _{4}), \\ & \bar{\omega}_{4} = \frac{1}{2}(e_{1} + e_{2} + e_{3} + e_{4}) = \frac{1}{2}(a_{1} + 2\alpha _{2} + \alpha _{3} + 2\alpha _{4}). \end{aligned} $$

Let B denote the Cartan matrix. Then formulas (A.20) can also be obtained using the inverse of Cartan matrix \(B^{-1}\) as follows:

$$ \bar{\omega}_{i} = B^{-1}\alpha _{i}, $$

see [2, Ch. VI, (14)]. For the case \(D_{4}\):

$$ B = \begin{bmatrix} 2 & -1 & 0 & 0 \\ -1 & -2 & -1 & -1 \\ 0 & -1 & 2 & 0 \\ 0 & -1 & 0 & 2 \end{bmatrix} , \qquad B^{-1} = \begin{bmatrix} 1 & 1 & 1/2 & 1/2 \\ 1 & 2 & 1 & 1 \\ 1/2 & 1 & 1 & 1/2 \\ 1/2 & 1 & 1/2 & 1 \end{bmatrix} $$

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)

$$ s_{1}s_{2}s_{4}s_{3}s_{2}s_{1}. $$

The name of the element (B.1) in the class is the following string:

$$ s1.s2.s4.s3.s2.s1. $$

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.

Table 13 Weyl group \(D_{4}\), level 6, elements 0–13
Table 14 Weyl group \(D_{4}\), level 6, elements 14–27
Table 15 Weyl group \(D_{4}\), level 6, elements 28–29
Table 16 Weyl group \(D_{4}\), level 7, elements 0–13
Table 17 Weyl group \(D_{4}\), level 7, elements 14–27
Table 18 Weyl group \(D_{4}\), level 8, elements 0–13
Table 19 Weyl group \(D_{4}\), level 8, elements 14–22
Table 20 Weyl group \(D_{4}\), level 9, elements 0–13
Table 21 Weyl group \(D_{4}\), level 9, elements 14–15
Table 22 Weyl group \(D_{4}\), level 10, elements 0–8
Table 23 Weyl group \(D_{4}\), level 11, elements 0–3
Table 24 Weyl group \(D_{4}\), level 12, one element
Table 25 Weyl group \(D_{4}\), conjugacy class 0, order 1
Table 26 Weyl group \(D_{4}\), conjugacy class 1, order 2
Table 27 Weyl group \(D_{4}\), conjugacy class 2, order 3
Table 28 Weyl group \(D_{4}\), conjugacy class 3, order 2
Table 29 Weyl group \(D_{4}\), conjugacy class 4, order 2
Table 30 Weyl group \(D_{4}\), conjugacy class 5, order 2
Table 31 Weyl group \(D_{4}\), conjugacy class 6, order 4
Table 32 Weyl group \(D_{4}\), conjugacy class 7, order 4
Table 33 Weyl group \(D_{4}\), conjugacy class 8, order 2
Table 34 Weyl group \(D_{4}\), conjugacy class 9, order 4
Table 35 Weyl group \(D_{4}\), conjugacy class 10, order 6
Table 36 Weyl group \(D_{4}\), conjugacy class 11, order 4
Table 37 Weyl group \(D_{4}\), conjugacy class 12, order 2

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 2-dimensional 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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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).

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: