Root system data for reducible Cartan types#

class sage.combinat.root_system.type_reducible.AmbientSpace(root_system, base_ring, index_set=None)#

Bases: AmbientSpace

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space()
Ambient space of the Root system of type A2xB2
ambient_spaces()#

Returns a list of the irreducible Cartan types of which the given reducible Cartan type is a product.

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space().ambient_spaces()
[Ambient space of the Root system of type ['A', 2],
 Ambient space of the Root system of type ['B', 2]]
cartan_type()#

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space().cartan_type()
A2xB2
component_types()#

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space().component_types()
[['A', 2], ['B', 2]]
dimension()#

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space().dimension()
5
fundamental_weights()#

EXAMPLES:

sage: RootSystem("A2xB2").ambient_space().fundamental_weights()
Finite family {1: (1, 0, 0, 0, 0), 2: (1, 1, 0, 0, 0), 3: (0, 0, 0, 1, 0), 4: (0, 0, 0, 1/2, 1/2)}
inject_weights(i, v)#

Produces the corresponding element of the lattice.

INPUT:

  • i - an integer in range(self.components)

  • v - a vector in the i-th component weight lattice

EXAMPLES:

sage: V = RootSystem("A2xB2").ambient_space()
sage: [V.inject_weights(i,V.ambient_spaces()[i].fundamental_weights()[1]) for i in range(2)]
[(1, 0, 0, 0, 0), (0, 0, 0, 1, 0)]
sage: [V.inject_weights(i,V.ambient_spaces()[i].fundamental_weights()[2]) for i in range(2)]
[(1, 1, 0, 0, 0), (0, 0, 0, 1/2, 1/2)]
negative_roots()#

EXAMPLES:

sage: RootSystem("A1xA2").ambient_space().negative_roots()
[(-1, 1, 0, 0, 0), (0, 0, -1, 1, 0), (0, 0, -1, 0, 1), (0, 0, 0, -1, 1)]
positive_roots()#

EXAMPLES:

sage: RootSystem("A1xA2").ambient_space().positive_roots()
[(1, -1, 0, 0, 0), (0, 0, 1, -1, 0), (0, 0, 1, 0, -1), (0, 0, 0, 1, -1)]
simple_coroot(i)#

EXAMPLES:

sage: A = RootSystem("A1xB2").ambient_space()
sage: A.simple_coroot(2)
(0, 0, 1, -1)
sage: A.simple_coroots()
Finite family {1: (1, -1, 0, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 2)}
simple_root(i)#

EXAMPLES:

sage: A = RootSystem("A1xB2").ambient_space()
sage: A.simple_root(2)
(0, 0, 1, -1)
sage: A.simple_roots()
Finite family {1: (1, -1, 0, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 1)}
class sage.combinat.root_system.type_reducible.CartanType(types)#

Bases: SageObject, CartanType_abstract

A class for reducible Cartan types.

Reducible root systems are ones that can be factored as direct products. Strictly speaking type \(D_2\) (corresponding to orthogonal groups of degree 4) is reducible since it is isomorphic to \(A_1\times A_1\). However type \(D_2\) is not built using this class for our purposes.

INPUT:

  • types – a list of simple Cartan types

EXAMPLES:

sage: t1, t2 = [CartanType(x) for x in (['A',1], ['B',2])]
sage: CartanType([t1, t2])
A1xB2
sage: t = CartanType("A2xB2")

A reducible Cartan type is finite (resp. crystallographic, simply laced) if all its components are:

sage: t.is_finite()
True
sage: t.is_crystallographic()
True
sage: t.is_simply_laced()
False

This is implemented by inserting the appropriate abstract super classes (see _add_abstract_superclass()):

sage: t.__class__.mro()
[<class 'sage.combinat.root_system.type_reducible.CartanType_with_superclass'>, <class 'sage.combinat.root_system.type_reducible.CartanType'>, <class 'sage.structure.sage_object.SageObject'>, <class 'sage.combinat.root_system.cartan_type.CartanType_finite'>, <class 'sage.combinat.root_system.cartan_type.CartanType_crystallographic'>, <class 'sage.combinat.root_system.cartan_type.CartanType_abstract'>, <class 'object'>]

The index set of the reducible Cartan type is obtained by relabelling successively the nodes of the Dynkin diagrams of the components by 1,2,…:

sage: t = CartanType(["A",4], ["BC",5,2], ["C",3])
sage: t.index_set()
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)

sage: t.dynkin_diagram()                                                        # needs sage.graphs
O---O---O---O
1   2   3   4
O=<=O---O---O---O=<=O
5   6   7   8   9   10
O---O=<=O
11   12   13
A4xBC5~xC3
AmbientSpace#

alias of AmbientSpace

ascii_art(label=None, node=None)#

Return an ascii art representation of this reducible Cartan type.

EXAMPLES:

sage: print(CartanType("F4xA2").ascii_art(label = lambda x: x+2))
O---O=>=O---O
3   4   5   6
O---O
7   8

sage: print(CartanType(["BC",5,2], ["A",4]).ascii_art())
O=<=O---O---O---O=<=O
1   2   3   4   5   6
O---O---O---O
7   8   9   10

sage: print(CartanType(["A",4], ["BC",5,2], ["C",3]).ascii_art())
O---O---O---O
1   2   3   4
O=<=O---O---O---O=<=O
5   6   7   8   9   10
O---O=<=O
11   12   13
cartan_matrix(subdivide=True)#

Return the Cartan matrix associated with self. By default the Cartan matrix is a subdivided block matrix showing the reducibility but the subdivision can be suppressed with the option subdivide = False.

EXAMPLES:

sage: ct = CartanType("A2","B2")
sage: ct.cartan_matrix()                                                    # needs sage.graphs
[ 2 -1| 0  0]
[-1  2| 0  0]
[-----+-----]
[ 0  0| 2 -1]
[ 0  0|-2  2]
sage: ct.cartan_matrix(subdivide=False)                                     # needs sage.graphs
[ 2 -1  0  0]
[-1  2  0  0]
[ 0  0  2 -1]
[ 0  0 -2  2]
sage: ct.index_set() == ct.cartan_matrix().index_set()                      # needs sage.graphs
True
component_types()#

A list of Cartan types making up the reducible type.

EXAMPLES:

sage: CartanType(['A',2],['B',2]).component_types()
[['A', 2], ['B', 2]]
coxeter_diagram()#

Return the Coxeter diagram for self.

EXAMPLES:

sage: cd = CartanType("A2xB2xF4").coxeter_diagram(); cd                     # needs sage.graphs
Graph on 8 vertices
sage: cd.edges(sort=True)                                                   # needs sage.graphs
[(1, 2, 3), (3, 4, 4), (5, 6, 3), (6, 7, 4), (7, 8, 3)]

sage: CartanType("F4xA2").coxeter_diagram().edges(sort=True)                # needs sage.graphs
[(1, 2, 3), (2, 3, 4), (3, 4, 3), (5, 6, 3)]

sage: cd = CartanType("A1xH3").coxeter_diagram(); cd                        # needs sage.graphs
Graph on 4 vertices
sage: cd.edges(sort=True)                                                   # needs sage.graphs
[(2, 3, 3), (3, 4, 5)]
dual()#

EXAMPLES:

sage: CartanType("A2xB2").dual()
A2xC2
dynkin_diagram()#

Returns a Dynkin diagram for type reducible.

EXAMPLES:

sage: dd = CartanType("A2xB2xF4").dynkin_diagram(); dd                      # needs sage.graphs
O---O
1   2
O=>=O
3   4
O---O=>=O---O
5   6   7   8
A2xB2xF4
sage: dd.edges(sort=True)                                                   # needs sage.graphs
[(1, 2, 1), (2, 1, 1), (3, 4, 2), (4, 3, 1), (5, 6, 1),
 (6, 5, 1), (6, 7, 2), (7, 6, 1), (7, 8, 1), (8, 7, 1)]

sage: CartanType("F4xA2").dynkin_diagram()                                  # needs sage.graphs
O---O=>=O---O
1   2   3   4
O---O
5   6
F4xA2
index_set()#

Implements CartanType_abstract.index_set().

For the moment, the index set is always of the form \(\{1, \ldots, n\}\).

EXAMPLES:

sage: CartanType("A2","A1").index_set()
(1, 2, 3)
is_affine()#

Report that this reducible Cartan type is not affine

EXAMPLES:

sage: CartanType(['A',2],['B',2]).is_affine()
False
is_finite()#

EXAMPLES:

sage: ct1 = CartanType(['A',2],['B',2])
sage: ct1.is_finite()
True
sage: ct2 = CartanType(['A',2],['B',2,1])
sage: ct2.is_finite()
False
is_irreducible()#

Report that this Cartan type is not irreducible.

EXAMPLES:

sage: ct = CartanType(['A',2],['B',2])
sage: ct.is_irreducible()
False
rank()#

Returns the rank of self.

EXAMPLES:

sage: CartanType("A2","A1").rank()
3
type()#

Returns “reducible” since the type is reducible.

EXAMPLES:

sage: CartanType(['A',2],['B',2]).type()
'reducible'