# Algorithms to compute the orbit of the action of the Weyl group of a semisimple Lie algebra on a given weight?

Given a simisimple Lie algebra $\mathfrak{g}$ and a weight $\lambda$. Let $W$ be the Weyl group of $\mathfrak{g}$. Is there an algorithm (reference or software) to compute the set $W \cdot \lambda$ (the set obtained by the action of $W$)? Many thanks.

A word of warning: in this context the notation $w\cdot\lambda$ often means the so called dot action, where you conjugate the usual action of the Weyl group by a fixed translation, IOW $$w\cdot\lambda=w(\lambda+\rho)-\rho,$$ where $\rho$ equals one half of the sum of the positive roots. I assume that you mean the usual action, because a solution to that gives you a solution to the problem w.r.t to the dot action as well.

I don't know of an implementation, so this may not be quite what you want, but (depending on the size of the Weyl group that interests you) the comments may still be useful.

The common theme in my comments is length reduction. The length $\ell(w)$ of an element $w$ of the Weyl group is the number of those positive roots that $w$ maps to a negative root or equivalently: $\ell(w)=|\Phi^+\setminus w(\Phi^+)|$. This is also equal to the number of reflections $s_i=s_{\alpha_i}$, $\alpha_i$ a simple root, in the shortest presentation of $w$ as a product of the generators $s_i$, $i=1,\ldots,n$, $n$ = the rank of the root system. We always have $\ell(ws_i)=\ell(w)\pm1$ and $\ell(s_iw)=\ell(w)\pm1$ all depending on whether $w(\alpha_i)$ (resp. $w^{-1}(\alpha_i)$) is a positive root or not in the former (resp. latter) case.

The first observation is that without loss of generality we can assume that $\lambda$ is a dominant weight. Each orbit has a unique dominant weight, and given any weight it is easy to map it back to the (closure of the) dominant Weyl chamber by a sequence of simple reflections: if $(\lambda,\alpha_i)<0$, then $s_i(\lambda)$ is 'closer to being dominant than $\lambda$ is. Rinse. Repeat.

Assuming that $\lambda$ is dominant, I would then build the orbit recursively as a union of lists $R_i$ of weights $i=0,1,\ldots,|\Phi^+|$. The list $R_i$ consists of those weights $w(\lambda)$ such that A) $\ell(w)=i$, and B) $w(\lambda)$ does not appear on any of the earlier lists $R_j$, $j<i$. A way of generating the lists goes as follows.

1. Set $R_0=\{\lambda\}$. Set $i=0$.
2. Initialize $R_{i+1}=\{\}$ to be an empty list.
3. For each weight $\mu$ in the list $R_i$ and each simple root $\alpha_j, j=1,2,\ldots,n$ check, whether $(\mu,\alpha_j)<0$. If not, do nothing. Otherwise add the weight $s_j(\mu)$ to the list $R_{i+1}$ unless it already is there (no duplicates!).
4. If $R_{i+1}$ is empty, then we are done. Otherwise increment $i:=i+1$ and go to step 2.

In the end the union of the lists is your answer. The proof that this works uses standard properties of the Coxeter groups, and is not too difficult. The double loop in step 3 takes a little time, because you also need to remove the duplicates. The list $R_i$ is at its longest when $i$ is approximately $|\Phi^+|/2$.

Note: You can calculate the size of the orbit in advance. The stabilizer of a dominant weight $\lambda$ in $W$ is generated by those simple reflections $s_i$ that are in it (i.e. $s_i(\lambda)=\lambda$). The cardinality of that group can easily be computed using the Dynkin diagram by removing the nodes corresponding to those generators that don't belong to the stabilizer - the stabilizer is the direct product of the Weyl groups of the components of whatever remains of the diagram. Then we can use the identity $|W(\lambda)|=|W|/|Stab_W(\lambda)|.$

Alternatively you could try to find the coset representatives of the stabilizer in the Weyl group, and use those. That would make the removal of duplicates automatic. Because the word problem in a Coxeter group has a solution, the necessary algorithms may have been implemented in a package like GAP. I don't know for sure. Sorry.

• It does indeed seem like GAP has some methods for working with these. Try writing ??cartan and then ?2 (or whatever number the reference for cartanmat is, or some function with a similar name). This has a long description of the functions GAP has for these things. – Tobias Kildetoft Jul 29 '11 at 9:39