# Root system data for reducible Cartan types¶

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

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)

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'>, <... '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'>, <... '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()
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=<function <lambda> at 0x7fc50ebee410>, 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()
[ 2 -1| 0  0]
[-1  2| 0  0]
[-----+-----]
[ 0  0| 2 -1]
[ 0  0|-2  2]
sage: ct.cartan_matrix(subdivide=False)
[ 2 -1  0  0]
[-1  2  0  0]
[ 0  0  2 -1]
[ 0  0 -2  2]

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()
sage: cd
Graph on 8 vertices
sage: cd.edges()
[(1, 2, 3), (3, 4, 4), (5, 6, 3), (6, 7, 4), (7, 8, 3)]

sage: CartanType("F4xA2").coxeter_diagram().edges()
[(1, 2, 3), (2, 3, 4), (3, 4, 3), (5, 6, 3)]

sage: cd = CartanType("A1xH3").coxeter_diagram(); cd
Graph on 4 vertices
sage: cd.edges()
[(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()
sage: dd
O---O
1   2
O=>=O
3   4
O---O=>=O---O
5   6   7   8
A2xB2xF4
sage: dd.edges()
[(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()
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'