Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.sage_object.SageObject, sage.combinat.root_system.cartan_type.CartanType_abstract
A class for relabelled Cartan types
Returns an ascii art representation of this Cartan type
EXAMPLES:
sage: print CartanType(["G", 2]).relabel({1:2,2:1}).ascii_art()
3
O=<=O
2 1
sage: print CartanType(["B", 3, 1]).relabel([1,3,2,0]).ascii_art()
O 1
|
|
O---O=>=O
3 2 0
sage: print CartanType(["F", 4, 1]).relabel(lambda n: 4-n).ascii_art()
O---O---O=>=O---O
4 3 2 1 0
Implements sage.combinat.root_system.cartan_type.CartanType_abstract.dual(), using that taking the dual and relabelling are commuting operations.
EXAMPLES:
sage: T = CartanType(["BC",3, 2])
sage: cycle = {1:2, 2:3, 3:0, 0:1}
sage: T.relabel(cycle).dual().dynkin_diagram()
O=>=O---O=>=O
1 2 3 0
BC3~* relabelled by {0: 1, 1: 2, 2: 3, 3: 0}
sage: T.dual().relabel(cycle).dynkin_diagram()
O=>=O---O=>=O
1 2 3 0
BC3~* relabelled by {0: 1, 1: 2, 2: 3, 3: 0}
Returns the dynkin diagram for this Cartan type.
EXAMPLES:
sage: CartanType(["G", 2]).relabel({1:2,2:1}).dynkin_diagram()
3
O=<=O
2 1
G2 relabelled by {1: 2, 2: 1}
TESTS:
To be compared with the examples in ascii_art():
sage: sorted(CartanType(["G", 2]).relabel({1:2,2:1}).dynkin_diagram().edges())
[(1, 2, 3), (2, 1, 1)]
sage: sorted(CartanType(["B", 3, 1]).relabel([1,3,2,0]).dynkin_diagram().edges())
[(0, 2, 1), (1, 2, 1), (2, 0, 2), (2, 1, 1), (2, 3, 1), (3, 2, 1)]
sage: sorted(CartanType(["F", 4, 1]).relabel(lambda n: 4-n).dynkin_diagram().edges())
[(0, 1, 1), (1, 0, 1), (1, 2, 1), (2, 1, 2), (2, 3, 1), (3, 2, 1), (3, 4, 1), (4, 3, 1)]
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.index_set()
[1, 2, 3, 4]
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.is_affine()
False
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.is_crystalographic()
True
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.is_finite()
True
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.is_irreducible()
True
EXAMPLES:
sage: ct = CartanType(['F', 4]).dual()
sage: ct.rank()
4
Bases: sage.combinat.root_system.cartan_type.CartanType_affine
x.__init__(...) initializes x; see help(type(x)) for signature
Returns the classical Cartan type associated with self (which should be affine)
EXAMPLES:
sage: A41 = CartanType(['A',4,1])
sage: A41.dynkin_diagram()
0
O-----------+
| |
| |
O---O---O---O
1 2 3 4
A4~
sage: T = A41.relabel({0:1, 1:2, 2:3, 3:4, 4:0})
sage: T
['A', 4, 1] relabelled by {0: 1, 1: 2, 2: 3, 3: 4, 4: 0}
sage: T.dynkin_diagram()
1
O-----------+
| |
| |
O---O---O---O
2 3 4 0
A4~ relabelled by {0: 1, 1: 2, 2: 3, 3: 4, 4: 0}
sage: T0 = T.classical()
sage: T0
['A', 4] relabelled by {1: 2, 2: 3, 3: 4, 4: 0}
sage: T0.dynkin_diagram()
O---O---O---O
2 3 4 0
A4 relabelled by {1: 2, 2: 3, 3: 4, 4: 0}
Implements :meth:’CartanType_affine.is_untwisted_affine`
A relabelled Cartan type is untwisted affine if the original is.
EXAMPLES:
sage: CartanType(['B', 3, 1]).relabel({1:2, 2:3, 3:0, 0:1}).is_untwisted_affine()
True
Returns a special node of the Dynkin diagram
See also
special_node()
It is obtained by relabelling of the special node of the non relabelled Dynkin diagram.
EXAMPLES:
sage: CartanType(['B', 3, 1]).special_node()
0
sage: CartanType(['B', 3, 1]).relabel({1:2, 2:3, 3:0, 0:1}).special_node()
1