This program, which I made together with David Dumas, enumerates all balanced ideals in a Weyl group, or all balanced ideals with a specified left- and right-invariance. These can be used to construct cocompact domains of discontinuity for Anosov representations, as explained by Kapovich, Leeb and Porti in arXiv:1306.3837.
Specify a Weyl group / Coxeter group as the first argument(s), for example C3, G2, A1 A2, etc. and it will output a list of all balanced ideals. For every ideal the left- and right-invariance is shown as well as a list of generating elements. The Coxeter group generators / simple roots are labeled a,b,c,d,..., essentially from left to right in this diagram:
$ ./enumerate A3 A3 Rank: 3 Order: 24 Positive Roots: 6 Cosets: 24 Balanced ideals: 0 left: a c right: ab gen: caba 1 left: a c right: bc gen: abcb 2 left: right: gen: cba acb abc 3 left: right: gen: cba acb aba bc 4 left: right: gen: cba abc bac 5 left: right: a gen: cba aba bac 6 left: right: gen: acb abc bcb ba 7 left: right: b gen: acb aba bcb 8 left: right: c gen: abc bac bcb 9 left: b right: gen: aba bac bcb Found 10 balanced ideals
We can also specify two subsets of the simple roots as second and third argument. Then only balanced ideals with these invariances will be enumerated (the subsets will be divided out in the beginning, making this also a lot faster). The empty set can be specified as "-".
$ ./enumerate C5 a bcde <a> \ C5 / <bcde> Rank: 5 Order: 3840 Positive Roots: 25 Cosets: 16 Balanced ideals: 0 left: abcd right: bcde gen: bcdabcaba 1 left: ab de right: bcde gen: edbcaba 2 left: a cd right: bcde gen: cdbcaba edcba Found 3 balanced ideals
Finally, we can control the amount of output using the environment variable OUTPUT_LEVEL. Values from 0 to 4 are valid. The default is 2. For example:
$ OUTPUT_LEVEL=1 ./enumerate C4 C4 Rank: 4 Order: 384 Positive Roots: 16 Cosets: 384 Found 49404510 balanced ideals