# An issue with Root systems in sage

Here is a problem that I cannot seem to understand.


R=RootSystem(['A', 2])
F=R.ambient_space().fundamental_weights()
D=R.ambient_space().simple_roots()

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 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
s1.action(F)

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 is not in the domain

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

L = R. weight_lattice()
F=L.fundamental_weights()
f= L.to_ambient_space-morphism()
s1.action(f(F))
(1,0,0)

This is what I can get but the problem is  s2
 f(F) = (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 close merge delete

Sort by » oldest newest most voted 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, 2: Lambda}
sage: SR
Finite family {1: 2*Lambda - Lambda, 2: -Lambda + 2*Lambda}


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.action(FW)
-Lambda + Lambda


EDIT: with the same notations

sage: v=s.action(SR)
sage: v.to_ambient().is_positive_root()
False
sage: v=s.action(SR)
sage: v.to_ambient().is_positive_root()
True
sage: v=s.action(SR)
sage: v.to_ambient().is_positive_root()
False
sage: v=s.action(SR)
sage: v.to_ambient().is_positive_root()
True

more

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

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.

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?