MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for an automated way to draw diagrams of intervals in Weyl groups and in their various subsets such as minimal representatives of cosets $W/W_p$ for a parabolic Weyl group $W_p$ or elements of $W_{[\lambda]}$ for some nonintegral weight $\lambda$.

I've looked at sage but their support is very rudimentary. So far the best thing I've found is the package WeylGroups for Macaulay2. It implements minimal representatives and it has output to svg and pgf. However the resulting graph is not very nice imho. Also I would like to be able to label the nodes of the diagram such that the top would be an arbitrary weight and the rest of the nodes would be labelled according to the (affine) Weyl group action on that weight. This is of course doable in Macaulay2 and the output can be improved by hacking the output routines of WeylGroup package and using graphviz. Alas, I have never used M2 before and given the amount of work required I thought that I ask here first. So...

Question: Is there a software that produces nice drawing of intervals in Bruhat order?

Also there are other interesting subsets of Weyl group with a slightly different order which can be of interest. So extendability / hackability is always a plus!

share|cite|improve this question
You could try John Stembridge's posets package in maple that is available at his web site: His description says it is good for visualizing posets, and he certainly works with Bruhat order and related posets himself. – Patricia Hersh May 31 '12 at 12:12
Maybe PyCox can also be useful: It was written in python by M. Geck. The link: – Leandro Vendramin May 31 '12 at 12:43
@Patricia: Thanks! It even has output to DOT. I just don't know how to import his packages into Maple under Windows. Any clues? @Leandro: PyCox seems interesting but unless I missed something it doesn't implement the things I want. – Vít Tuček Jun 1 '12 at 21:35


There is quite some support for this:

sage: W = WeylGroup("A3", prefix = "s")
sage: [s1,s2,s3] = W.simple_reflections()
sage: G = W.bruhat_graph(s1*s3,s1*s2*s3*s2*s1)
sage: G.plot()

You can get even nicer pictures using dot2tex:

sage: D = DiGraph([[tuple(x.reduced_word()),tuple(y.reduced_word()),None] for x,y,z in G.edges()])
sage: view(D)

More examples of cool pictures in Sage can be found here



share|cite|improve this answer
Thanks Anne for taking that over! @robot: for more concrete questions on how to do these things in sage, feel free to ask to, see also… – Christian Stump Jun 2 '12 at 9:20

What about LiE?

share|cite|improve this answer
I haven't thought of that. Thanks! – Vít Tuček Jun 1 '12 at 21:33

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.