Ask Your Question

An issue with Root systems in sage

asked 2016-02-27 21:45:10 -0500

DBS gravatar image

updated 2016-02-28 08:12:14 -0500

Here is a problem that I cannot seem to understand.

R=RootSystem(['A', 2])
The output we get is as follows:

F=Finite family {1: (1, 0, 0), 2: (1, 1, 0)}
D=Finite family {1: (1, -1, 0), 2: (0, 1, -1)}
The issue is the root lattice is contained in the weight lattice but clearly D[2] is not contained in the lattice generated by F. Perhaps I am missing something simple.

I need to write a program I would need the weyl group action on some weights and roots at the same time. How can this be done? Thank you for your time in advance.

EDIT: Consider now the Weyl group action on weight lattice. We will continue using the notations above.

W= R.ambient_space(). weyl_group()
S= W.gens()
s1, s2= S
Gives an output
ValueError                                Traceback (most recent call last)
<ipython-input-12-4b0b8fd74264> in <module>()
---- 1 s1.action(F[Integer(1)])

/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/combinat/root_system/weyl_group.pyc in action(self, v) 843 """ 844 if v not in self.domain(): --> 845 raise ValueError("{} is not in the domain".format(v)) 846 return self.domain().from_vector(self.__matrixv.to_vector()) 847 ValueError: Lambda[1] is not in the domain

The only way I have been able to make it work is that

L = R. weight_lattice()
f= L.to_ambient_space-morphism()
This is what I can get but the problem is s2
f(F[2]) = (0,0,1). So we are in a situation of the original problem again. I need to calculate the Weyl group action on the fundamental weights. If there is a better way to do it I would like to know.

edit retag flag offensive close merge delete

1 answer

Sort by » oldest newest most voted

answered 2016-02-28 02:08:35 -0500

FrédéricC gravatar image

updated 2016-02-29 05:06:02 -0500

Yes, this looks strange indeed. You can proceed like that instead:

sage: R = RootSystem(['A', 2])
sage: WL = R.weight_lattice()
sage: FW = R.weight_lattice().basis()
sage: SR = WL.simple_roots()
sage: FW
Finite family {1: Lambda[1], 2: Lambda[2]}
sage: SR
Finite family {1: 2*Lambda[1] - Lambda[2], 2: -Lambda[1] + 2*Lambda[2]}

EDIT: here is how to get the Weyl group acting on the weight lattice

sage: W = WL.weyl_group()
sage: s = W.gens()
sage: s[0].action(FW[1])
-Lambda[1] + Lambda[2]

EDIT: with the same notations

sage: v=s[0].action(SR[1])
sage: v.to_ambient().is_positive_root()
sage: v=s[0].action(SR[2])
sage: v.to_ambient().is_positive_root()
sage: v=s[1].action(SR[2])
sage: v.to_ambient().is_positive_root()
sage: v=s[1].action(SR[1])
sage: v.to_ambient().is_positive_root()
edit flag offensive delete link more


Thank you for your answer. But there is a problem with this approach. I have edited the question accordingly!

DBS gravatar imageDBS ( 2016-02-28 07:50:27 -0500 )edit

This solves part of my problem. The other part is how can I simultaneously check id weyl group action on a simple root makes it positive or negative. The issue is if I redefine Weyl group in term of root lattice again I cannot make it operate on weight lattice.

DBS gravatar imageDBS ( 2016-02-28 15:25:35 -0500 )edit

Thank you this helps me a lot!

DBS gravatar imageDBS ( 2016-03-01 08:47:57 -0500 )edit

I didn't remember seeing the methods .to_ambient and to_vector in the documentation on Weyl Group/ root space realizations etc. It is probably because I was looking at the wrong places. Can you suggest where I should be looking?

DBS gravatar imageDBS ( 2016-03-01 17:59:18 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2016-02-27 21:45:10 -0500

Seen: 72 times

Last updated: Feb 29 '16