WeylGroup question

148 views
Skip to first unread message

aska...@gmail.com

unread,
Mar 4, 2025, 10:06:09 AM3/4/25
to sage-devel
Hi,

This is a long shot as it may be mathematically quite technical, but I though I'd give it a try here.

Sage has a library for Weyl groups associated to root systems:
https://doc.sagemath.org/html/en/reference/combinat/sage/combinat/root_system/weyl_group.html

A Weyl group is associated to a root system of type Xn where X is of type A, B, C, D, E, F, G and n is a natural number, which is restricted depending on the type. I won't explain more, as if you haven't seen this before, an email is unlikely to be the best way to find it. 

The point here is the root system can be embedded in a lattice within RR^n but also sometimes it is convenient to embed it in higher dimensions (e.g. to avoid non-rational lattices). However, for my own purposes I really want it embedded in RR^n, as I want the elements of the Weyl group (which is generated by reflections through the hyperplanes orthogonal to at least one of the roots) to be elements of GL(n, QQ[sqrt(d)]) for some integer d. If the root system is embedded in a higher RR^m, so is the Weyl group. When the root system is special (E6, E7, E8, F_4, G_2) this is possible and I am sure it has its merits, but for good reasons, I actually need them embedded in RR^n.

For instance, it seems that the implementation in Sage has the root system G2 embedded in RR^3 (so the matrices of WeylGroup are 3x3 matrices instead of 2x2) and E6 and E7 are embedded in RR^8 and not RR^6 and RR^7. An easy way to see this is to run 
G= WeylGroup(['G',2])
for g in G:
    print(g)
and see how you get a list of 3x3 matrices and not 2x2.
(although you probably want to stop it before it finishes as there are too many of them).

My question is: is there any way, for these 3 root systems (G2, E6 and E7) in Sage to have them embedded in the lowest possible lattice so that I get the matrices of the Weyl group represented as matrices of size 2, 6 and 7, respectively? For instance for G2, I know, mathematically, I could find a projection from the lattice in RR^3 to RR^2 and use this projection to project the matrices. I don't want to reinvent the wheel, though, so if this is already existing in Sage that would be great.

To be clear, I don't care about the other groups other than G2, E6, E7, since for them I have already arranged it differently.

Apologies if some of the above is not precise enough, I have a very passing knowledge in representation theory.

Many thanks in advance.

Jesús


dmo...@deductivepress.ca

unread,
Mar 4, 2025, 12:48:00 PM3/4/25
to sage-devel
This is a question about how to use sagemath, not an issue about sagemath development, so you should post it on a different forum, such as ask.sagemath.org. The people there are very knowledgeable.

Jesus Martinez Garcia

unread,
Mar 4, 2025, 4:03:38 PM3/4/25
to Dima Pasechnik, sage-...@googlegroups.com, sage-support
Hi both,

Sorry, perhaps I haven't as much detail as I should have. I am using this to develop the following package: https://github.com/Robbie-H/CompGIT/ on computing GIT quotients, which I hope it will be of use to the Sage community. I am not sure if that makes it simply an issue on how to use Sagemath. Firstly because the documentation of WeylGroup seem to me to be a bit uncomplete and depend on many modules that are hard to untangle from each other (I have gone intro the source code) and I suspect there may be some 'projection' method that applies from some parent class and I don't think ask.sagemath is going to know that. Secondly, if we need to add some functionality (to our work-in-progress package) it may well be better suited in the original WeylGroup. I have contacted one of the original authors  of WeylGroup but it's been a decade and a half since they did it and I am not very hopeful I will get a reply (or that it would be fair to expect one). I note the documentation itself has several 'todo' that have been there for a while.

Nonetheless, if given the above you still think sage-devel isn't the place for it, I will try sage-support.

Regarding Dima's comment: yes, I am aware the coefficients cannot stay rational as a 2-dimensional faithful representation, sorry if I didn't make this clear. I am ready for irrational coefficients. As long as they don't go too out of hand (e.g. if they stay in QQ[sqrt(d)] for some d, which I think will be d=3 as for the root system G2) that is OK and I can manage (that's the beauty of sagemath). What I would like to avoid is reinventing the wheel (e.g. writing a method that recomputes the elements of the WeylGroup in a different representation) if it is already there somehow. As noted above, it has been over a decade since Weylgroup was touched, and it is possible that libraries developed since automatically do what is needed but this is not reflected in the documentation.

Many thanks,

Jesus


Jesus
----------------------




On Tue, 4 Mar 2025 at 20:17, Dima Pasechnik <dim...@gmail.com> wrote:
On Tue, Mar 4, 2025 at 11:48 AM dmo...@deductivepress.ca
<dmo...@deductivepress.ca> wrote:
>
> This is a question about how to use sagemath, not an issue about sagemath development, so you should post it on a different forum, such as ask.sagemath.org. The people there are very knowledgeable.

Another option is sage-support. I added it to CC.

Anyhow, I can give a quick answer. The choice of the representation
returned by WeylGroup() is allowing you to use matrices with rational
entries.
If you want to keep them rational, and keep the full group (i.e. have
a faithful representation), not its quotient, then there
is no way around it, you'd need to stay in the dimension given.
E.g. for G_2, which is isomorphic to the dihedral group of order 12,
there is no way to provide a faithful 2-dimensional representation,
you'd need to use certain irrational numbers.

HTH
Dima
> --
> You received this message because you are subscribed to the Google Groups "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/sage-devel/177211ed-3b9d-4082-a7a4-dc33b7d10d76n%40googlegroups.com.

Dima Pasechnik

unread,
Mar 4, 2025, 5:12:43 PM3/4/25
to sage-...@googlegroups.com, sage-support, aska...@gmail.com
On Tue, Mar 4, 2025 at 11:48 AM dmo...@deductivepress.ca
<dmo...@deductivepress.ca> wrote:
>
> This is a question about how to use sagemath, not an issue about sagemath development, so you should post it on a different forum, such as ask.sagemath.org. The people there are very knowledgeable.

Another option is sage-support. I added it to CC.

Anyhow, I can give a quick answer. The choice of the representation
returned by WeylGroup() is allowing you to use matrices with rational
entries.
If you want to keep them rational, and keep the full group (i.e. have
a faithful representation), not its quotient, then there
is no way around it, you'd need to stay in the dimension given.
E.g. for G_2, which is isomorphic to the dihedral group of order 12,
there is no way to provide a faithful 2-dimensional representation,
you'd need to use certain irrational numbers.

HTH
Dima



>

dmo...@deductivepress.ca

unread,
Mar 4, 2025, 7:42:38 PM3/4/25
to sage-devel
Since this is related to development, you can open an issue at https://github.com/sagemath/sage/issues. If another question comes up that isn't being answered, you could ask here on sage-devel, but the answer and discussion would continue on the issue site.

Anyway, I think an answer to your original question is provided by the representation_matrix of the reflection_representation, as illustrated by the following (but if there needs to be further discussion, then I think an issue should be opened):

sage: G2 = WeylGroup(['G',2])
sage: [G2.reflection_representation().representation_matrix(g) for g in G2]
[
[1 0]  [ 1  0]  [-1  a]  [-1  0]  [-1  0]  [ 1 -a]  [-1  a]  [ 2 -a]
[0 1], [ a -1], [-a  2], [ 0 -1], [-a  1], [ a -2], [ 0  1], [ a -1],

[-2  a]  [ 1 -a]  [-2  a]  [ 2 -a]
[-a  2], [ 0 -1], [-a  1], [ a -2]
]

dmo...@deductivepress.ca

unread,
Mar 9, 2025, 1:23:33 PM3/9/25
to sage-devel
I have opened issue #39656 for further discussion, and expect to post a comment there soon, but questions like this will probably get a better response from other forums.

Travis Scrimshaw

unread,
Mar 11, 2025, 2:13:57 AM3/11/25
to sage-devel
Sorry for not responding earlier about this. I posted on the GH issue, but in short, you can use `W.domain().roots()` or passing it the explicit space that has the roots that you want to use, e.g.,

sage: W = WeylGroup(RootSystem(['G',2]).root_lattice())
sage: list(W)
[
[1 0]  [ 1  0]  [-1  3]  [-1  0]  [-1  0]  [ 1 -3]  [-1  3]  [ 2 -3]
[0 1], [ 1 -1], [-1  2], [ 0 -1], [-1  1], [ 1 -2], [ 0  1], [ 1 -1],

[-2  3]  [ 1 -3]  [-2  3]  [ 2 -3]
[-1  2], [ 0 -1], [-1  1], [ 1 -2]
]

Of course, there is the way mentioned above using the reflection representation (in a "natural" basis and the Coxeter matrix data):

sage: W = CoxeterGroup(['G',2], implementation='reflection')
sage: list(W)
[
[1 0]  [-1  a]  [ 1  0]  [ 2 -a]  [-1  a]  [-2  a]  [ 2 -a]  [ 1 -a]
[0 1], [ 0  1], [ a -1], [ a -1], [-a  2], [-a  2], [ a -2], [ a -2],

[-2  a]  [-1  0]  [ 1 -a]  [-1  0]
[-a  1], [-a  1], [ 0 -1], [ 0 -1]
]

Best,
Travis
Reply all
Reply to author
Forward
0 new messages