Bases: sage.combinat.root_system.ambient_space.AmbientSpace
Ambient space for a marked finite Cartan type.
It is constructed in the canonical way from the ambient space of the original Cartan type.
EXAMPLES:
sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space(); L
Ambient space of the Root system of type ['F', 4] with nodes (1, 3) marked
sage: TestSuite(L).run()
Return the dimension of this ambient space.
EXAMPLES:
sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
sage: L.dimension()
4
Return the i-th fundamental weight.
It is constructed by looking up the corresponding simple coroot in the ambient space for the original Cartan type.
EXAMPLES:
sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
sage: L.fundamental_weight(1)
(1, 1, 0, 0)
sage: L.fundamental_weights()
Finite family {1: (1, 1, 0, 0), 2: (2, 1, 1, 0),
3: (3/2, 1/2, 1/2, 1/2), 4: (1, 0, 0, 0)}
Return the i-th simple root.
It is constructed by looking up the corresponding simple coroot in the ambient space for the original Cartan type.
EXAMPLES:
sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
sage: L.simple_root(1)
(0, 1, -1, 0)
sage: L.simple_roots()
Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1),
3: (0, 0, 0, 1), 4: (1/2, -1/2, -1/2, -1/2)}
sage: L.simple_coroots()
Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1),
3: (0, 0, 0, 2), 4: (1, -1, -1, -1)}
Bases: sage.combinat.root_system.cartan_type.CartanType_decorator
A class for Cartan types with marked nodes.
INPUT:
EXAMPLES:
We take the Cartan type :
sage: T = CartanType(['B',4])
sage: T.dynkin_diagram()
O---O---O=>=O
1 2 3 4
B4
And mark some of its nodes:
sage: T = T.marked_nodes([2,3])
sage: T.dynkin_diagram()
O---X---X=>=O
1 2 3 4
B4 with nodes (2, 3) marked
Markings are not additive:
sage: T.marked_nodes([1,4]).dynkin_diagram()
X---O---O=>=X
1 2 3 4
B4 with nodes (1, 4) marked
And trivial relabelling are honoured nicely:
sage: T = T.marked_nodes([])
sage: T.dynkin_diagram()
O---O---O=>=O
1 2 3 4
B4
Return an ascii art representation of this Cartan type.
EXAMPLES:
sage: print CartanType(["G", 2]).marked_nodes([2]).ascii_art()
3
O=<=X
1 2
sage: print CartanType(["B", 3, 1]).marked_nodes([0, 3]).ascii_art()
X 0
|
|
O---O=>=X
1 2 3
sage: print CartanType(["F", 4, 1]).marked_nodes([0, 2]).ascii_art()
X---O---X=>=O---O
0 1 2 3 4
Implements sage.combinat.root_system.cartan_type.CartanType_abstract.dual(), using that taking the dual and marking nodes are commuting operations.
EXAMPLES:
sage: T = CartanType(["BC",3, 2])
sage: T.marked_nodes([1,3]).dual().dynkin_diagram()
O=>=X---O=>=X
0 1 2 3
BC3~* with nodes (1, 3) marked
sage: T.dual().marked_nodes([1,3]).dynkin_diagram()
O=>=X---O=>=X
0 1 2 3
BC3~* with nodes (1, 3) marked
Returns the Dynkin diagram for this Cartan type.
EXAMPLES:
sage: CartanType(["G", 2]).marked_nodes([2]).dynkin_diagram()
3
O=<=X
1 2
G2 with node 2 marked
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)]
Return self with nodes marked_nodes marked.
EXAMPLES:
sage: ct = CartanType(['A',12])
sage: m = ct.marked_nodes([1,4,6,7,8,12]); m
['A', 12] with nodes (1, 4, 6, 7, 8, 12) marked
sage: m.marked_nodes([2])
['A', 12] with node 2 marked
sage: m.marked_nodes([]) is ct
True
Return the relabelling of self.
EXAMPLES:
sage: T = CartanType(["BC",3, 2])
sage: T.marked_nodes([1,3]).relabel(lambda x: x+2).dynkin_diagram()
O=<=X---O=<=X
2 3 4 5
BC3~ relabelled by {0: 2, 1: 3, 2: 4, 3: 5} with nodes (3, 5) marked
sage: T.relabel(lambda x: x+2).marked_nodes([3,5]).dynkin_diagram()
O=<=X---O=<=X
2 3 4 5
BC3~ relabelled by {0: 2, 1: 3, 2: 4, 3: 5} with nodes (3, 5) marked
Return the type of self or None if unknown.
EXAMPLES:
sage: ct = CartanType(['F', 4]).marked_nodes([1,3])
sage: ct.type()
'F'
Bases: sage.combinat.root_system.type_marked.CartanType, sage.combinat.root_system.cartan_type.CartanType_affine
TESTS:
sage: ct = CartanType(['B',3,1]).marked_nodes([1,3])
sage: ct
['B', 3, 1] with nodes (1, 3) marked
sage: L = ct.root_system().ambient_space(); L
Ambient space of the Root system of type ['B', 3, 1] with nodes (1, 3) marked
sage: L.classical()
Ambient space of the Root system of type ['B', 3] with nodes (1, 3) marked
sage: TestSuite(L).run()
Return the basic untwisted Cartan type associated with this affine Cartan type.
Given an affine type , the basic untwisted type is
.
In other words, it is the classical Cartan type that is twisted to
obtain self.
EXAMPLES:
sage: CartanType(['A', 7, 2]).marked_nodes([1,3]).basic_untwisted()
['A', 7] with nodes (1, 3) marked
sage: CartanType(['D', 4, 3]).marked_nodes([0,2]).basic_untwisted()
['D', 4] with node 2 marked
Return the classical Cartan type associated with self.
EXAMPLES:
sage: T = CartanType(['A',4,1]).marked_nodes([0,2,4])
sage: T.dynkin_diagram()
0
X-----------+
| |
| |
O---X---O---X
1 2 3 4
A4~ with nodes (0, 2, 4) marked
sage: T0 = T.classical()
sage: T0
['A', 4] with nodes (2, 4) marked
sage: T0.dynkin_diagram()
O---X---O---X
1 2 3 4
A4 with nodes (2, 4) marked
Implements :meth:’CartanType_affine.is_untwisted_affine`.
A marked Cartan type is untwisted affine if the original is.
EXAMPLES:
sage: CartanType(['B', 3, 1]).marked_nodes([1,3]).is_untwisted_affine()
True
Return the special node of the Cartan type.
See also
special_node()
It is the special node of the non-marked Cartan type..
EXAMPLES:
sage: CartanType(['B', 3, 1]).marked_nodes([1,3]).special_node()
0
Bases: sage.combinat.root_system.type_marked.CartanType, sage.combinat.root_system.cartan_type.CartanType_finite
Return an isomorphic Cartan type obtained by marking the nodes of the Dynkin diagram.
TESTS:
Test that the produced Cartan type is in the appropriate abstract classes:
sage: ct = CartanType(['B',4]).marked_nodes([1,2])
sage: TestSuite(ct).run()
sage: from sage.combinat.root_system import cartan_type
sage: isinstance(ct, cartan_type.CartanType_finite)
True
sage: isinstance(ct, cartan_type.CartanType_simple)
True
sage: isinstance(ct, cartan_type.CartanType_affine)
False
sage: isinstance(ct, cartan_type.CartanType_crystallographic)
True
sage: isinstance(ct, cartan_type.CartanType_simply_laced)
False
sage: ct = CartanType(['A',3,1]).marked_nodes([1,2])
sage: TestSuite(ct).run()
sage: isinstance(ct, cartan_type.CartanType_simple)
True
sage: isinstance(ct, cartan_type.CartanType_finite)
False
sage: isinstance(ct, cartan_type.CartanType_affine)
True
sage: isinstance(ct, cartan_type.CartanType_crystallographic)
True
sage: isinstance(ct, cartan_type.CartanType_simply_laced)
True
alias of AmbientSpace
Return the affine Cartan type associated with self.
EXAMPLES:
sage: B4 = CartanType(['B',4]).marked_nodes([1,3])
sage: B4.dynkin_diagram()
X---O---X=>=O
1 2 3 4
B4 with nodes (1, 3) marked
sage: B4.affine().dynkin_diagram()
O 0
|
|
X---O---X=>=O
1 2 3 4
B4~ with nodes (1, 3) marked
TESTS:
Check that we don’t inadvertently change the internal marking of ct:
sage: ct = CartanType(['F', 4]).marked_nodes([1,3])
sage: ct.affine()
['F', 4, 1] with nodes (1, 3) marked
sage: ct
['F', 4] with nodes (1, 3) marked