Ask Your Question
2

Dictating the roots to RootSystem

asked 2011-02-13 18:32:19 +0200

hoyland gravatar image

Is there a way to dictate the choice of roots/simple roots to the RootSystem command?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2011-02-13 19:48:35 +0200

Mike Hansen gravatar image

Currently, there isn't an easy way to specify the choice of simple roots.

If you really want to work with a different set of roots, here's the best way to do it. For the sake of this example, we'll pretend we're working in type A.

1) Create a class MyAmbientSpace which subclasses sage.combinat.root_system.ambient_space.AmbientSpace. The main method you'll need to implement is simple_root(i) which returns the simple root associated with i in the index set. You'll also need implement methods like smallest_base_ring and dimension. See sage.combinat.root_system.type_A for an example.

from sage.combinat.root_system.ambient_space import AmbientSpace
class MyAmbientSpace(AmbientSpace):
    def simple_root(self, i):
        ...
    ...

2) Create a class MyCartanType which is a subclass of the current Cartan type, and set its AmbientSpace attribute to your MyAmbientSpace class:

from sage.combinat.root_system.type_A import CartanType as CartanTypeA
class MyCartanType(CartanTypeA):
    AmbientSpace = MyAmbientSpace

3) Instantiate a root system based on your "new" CartanType:

my_a = MyCartanType(3)
R = RootSystem(my_a)

That root system should now use the simple roots you specified.

edit flag offensive delete link more
1

answered 2011-02-14 11:41:28 +0200

benjaminfjones gravatar image

Depending on what you want to do, you can use the theorem which says that the Weyl group acts simply transitively on the set of choices of simple roots (or positive root systems, or Weyl chambers..) in order to translate back and forth between the choice that is attached to RootSystem( .. ) by default and any other choice:

sage: R=RootSystem(['A',Integer(2)])
sage: space=R.ambient_space()
sage: space.simple_roots()
Finite family {1: (1, -1, 0), 2: (0, 1, -1)}
sage: W = space.weyl_group()
sage: w0 = W.long_element()
sage: minus_sr = [ w0.action(s) for s in space.simple_roots() ]; minus_sr
[(0, -1, 1), (-1, 1, 0)]
edit flag offensive delete link more

Your Answer

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

Add Answer

Question Tools

Stats

Asked: 2011-02-13 18:32:19 +0200

Seen: 426 times

Last updated: Feb 14 '11