Root system data for type D

class sage.combinat.root_system.type_D.AmbientSpace(root_system, base_ring, index_set=None)[source]

Bases: AmbientSpace

dimension()[source]

EXAMPLES:

sage: e = RootSystem(['D',3]).ambient_space()
sage: e.dimension()
3
>>> from sage.all import *
>>> e = RootSystem(['D',Integer(3)]).ambient_space()
>>> e.dimension()
3
fundamental_weight(i)[source]

EXAMPLES:

sage: RootSystem(['D',4]).ambient_space().fundamental_weights()
Finite family {1: (1, 0, 0, 0), 2: (1, 1, 0, 0), 3: (1/2, 1/2, 1/2, -1/2), 4: (1/2, 1/2, 1/2, 1/2)}
>>> from sage.all import *
>>> RootSystem(['D',Integer(4)]).ambient_space().fundamental_weights()
Finite family {1: (1, 0, 0, 0), 2: (1, 1, 0, 0), 3: (1/2, 1/2, 1/2, -1/2), 4: (1/2, 1/2, 1/2, 1/2)}
negative_roots()[source]

EXAMPLES:

sage: RootSystem(['D',4]).ambient_space().negative_roots()
[(-1, 1, 0, 0),
 (-1, 0, 1, 0),
 (0, -1, 1, 0),
 (-1, 0, 0, 1),
 (0, -1, 0, 1),
 (0, 0, -1, 1),
 (-1, -1, 0, 0),
 (-1, 0, -1, 0),
 (0, -1, -1, 0),
 (-1, 0, 0, -1),
 (0, -1, 0, -1),
 (0, 0, -1, -1)]
>>> from sage.all import *
>>> RootSystem(['D',Integer(4)]).ambient_space().negative_roots()
[(-1, 1, 0, 0),
 (-1, 0, 1, 0),
 (0, -1, 1, 0),
 (-1, 0, 0, 1),
 (0, -1, 0, 1),
 (0, 0, -1, 1),
 (-1, -1, 0, 0),
 (-1, 0, -1, 0),
 (0, -1, -1, 0),
 (-1, 0, 0, -1),
 (0, -1, 0, -1),
 (0, 0, -1, -1)]
positive_roots()[source]

EXAMPLES:

sage: RootSystem(['D',4]).ambient_space().positive_roots()
[(1, 1, 0, 0),
 (1, 0, 1, 0),
 (0, 1, 1, 0),
 (1, 0, 0, 1),
 (0, 1, 0, 1),
 (0, 0, 1, 1),
 (1, -1, 0, 0),
 (1, 0, -1, 0),
 (0, 1, -1, 0),
 (1, 0, 0, -1),
 (0, 1, 0, -1),
 (0, 0, 1, -1)]
>>> from sage.all import *
>>> RootSystem(['D',Integer(4)]).ambient_space().positive_roots()
[(1, 1, 0, 0),
 (1, 0, 1, 0),
 (0, 1, 1, 0),
 (1, 0, 0, 1),
 (0, 1, 0, 1),
 (0, 0, 1, 1),
 (1, -1, 0, 0),
 (1, 0, -1, 0),
 (0, 1, -1, 0),
 (1, 0, 0, -1),
 (0, 1, 0, -1),
 (0, 0, 1, -1)]
root(i, j, p1, p2)[source]

Note that indexing starts at 0.

EXAMPLES:

sage: e = RootSystem(['D',3]).ambient_space()
sage: e.root(0, 1, 1, 1)
(-1, -1, 0)
sage: e.root(0, 0, 1, 1)
(-1, 0, 0)
>>> from sage.all import *
>>> e = RootSystem(['D',Integer(3)]).ambient_space()
>>> e.root(Integer(0), Integer(1), Integer(1), Integer(1))
(-1, -1, 0)
>>> e.root(Integer(0), Integer(0), Integer(1), Integer(1))
(-1, 0, 0)
simple_root(i)[source]

EXAMPLES:

sage: RootSystem(['D',4]).ambient_space().simple_roots()
Finite family {1: (1, -1, 0, 0), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1), 4: (0, 0, 1, 1)}
>>> from sage.all import *
>>> RootSystem(['D',Integer(4)]).ambient_space().simple_roots()
Finite family {1: (1, -1, 0, 0), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1), 4: (0, 0, 1, 1)}
class sage.combinat.root_system.type_D.CartanType(n)[source]

Bases: CartanType_standard_finite, CartanType_simply_laced

EXAMPLES:

sage: ct = CartanType(['D',4])
sage: ct
['D', 4]
sage: ct._repr_(compact = True)
'D4'

sage: ct.is_irreducible()
True
sage: ct.is_finite()
True
sage: ct.is_crystallographic()
True
sage: ct.is_simply_laced()
True
sage: ct.dual()
['D', 4]
sage: ct.affine()
['D', 4, 1]

sage: ct = CartanType(['D',2])
sage: ct.is_irreducible()
False
sage: ct.dual()
['D', 2]
sage: ct.affine()
Traceback (most recent call last):
...
ValueError: ['D', 2, 1] is not a valid Cartan type
>>> from sage.all import *
>>> ct = CartanType(['D',Integer(4)])
>>> ct
['D', 4]
>>> ct._repr_(compact = True)
'D4'

>>> ct.is_irreducible()
True
>>> ct.is_finite()
True
>>> ct.is_crystallographic()
True
>>> ct.is_simply_laced()
True
>>> ct.dual()
['D', 4]
>>> ct.affine()
['D', 4, 1]

>>> ct = CartanType(['D',Integer(2)])
>>> ct.is_irreducible()
False
>>> ct.dual()
['D', 2]
>>> ct.affine()
Traceback (most recent call last):
...
ValueError: ['D', 2, 1] is not a valid Cartan type
AmbientSpace[source]

alias of AmbientSpace

ascii_art(label=None, node=None)[source]

Return a ascii art representation of the extended Dynkin diagram.

EXAMPLES:

sage: print(CartanType(['D',3]).ascii_art())
O 3
|
|
O---O
1   2
sage: print(CartanType(['D',4]).ascii_art())
    O 4
    |
    |
O---O---O
1   2   3
sage: print(CartanType(['D',4]).ascii_art(label = lambda x: x+2))
    O 6
    |
    |
O---O---O
3   4   5
sage: print(CartanType(['D',6]).ascii_art(label = lambda x: x+2))
            O 8
            |
            |
O---O---O---O---O
3   4   5   6   7
>>> from sage.all import *
>>> print(CartanType(['D',Integer(3)]).ascii_art())
O 3
|
|
O---O
1   2
>>> print(CartanType(['D',Integer(4)]).ascii_art())
    O 4
    |
    |
O---O---O
1   2   3
>>> print(CartanType(['D',Integer(4)]).ascii_art(label = lambda x: x+Integer(2)))
    O 6
    |
    |
O---O---O
3   4   5
>>> print(CartanType(['D',Integer(6)]).ascii_art(label = lambda x: x+Integer(2)))
            O 8
            |
            |
O---O---O---O---O
3   4   5   6   7
coxeter_number()[source]

Return the Coxeter number associated with self.

EXAMPLES:

sage: CartanType(['D',4]).coxeter_number()
6
>>> from sage.all import *
>>> CartanType(['D',Integer(4)]).coxeter_number()
6
dual_coxeter_number()[source]

Return the dual Coxeter number associated with self.

EXAMPLES:

sage: CartanType(['D',4]).dual_coxeter_number()
6
>>> from sage.all import *
>>> CartanType(['D',Integer(4)]).dual_coxeter_number()
6
dynkin_diagram()[source]

Return a Dynkin diagram for type D.

EXAMPLES:

sage: d = CartanType(['D',5]).dynkin_diagram(); d                           # needs sage.graphs
        O 5
        |
        |
O---O---O---O
1   2   3   4
D5
sage: d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 1), (2, 3, 1), (3, 2, 1),
 (3, 4, 1), (3, 5, 1), (4, 3, 1), (5, 3, 1)]

sage: d = CartanType(['D',4]).dynkin_diagram(); d                           # needs sage.graphs
    O 4
    |
    |
O---O---O
1   2   3
D4
sage: d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (3, 2, 1), (4, 2, 1)]

sage: d = CartanType(['D',3]).dynkin_diagram(); d                           # needs sage.graphs
O 3
|
|
O---O
1   2
D3
sage: d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (1, 3, 1), (2, 1, 1), (3, 1, 1)]


sage: d = CartanType(['D',2]).dynkin_diagram(); d                           # needs sage.graphs
O   O
1   2
D2
sage: d.edges(sort=True)                                                    # needs sage.graphs
[]
>>> from sage.all import *
>>> d = CartanType(['D',Integer(5)]).dynkin_diagram(); d                           # needs sage.graphs
        O 5
        |
        |
O---O---O---O
1   2   3   4
D5
>>> d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 1), (2, 3, 1), (3, 2, 1),
 (3, 4, 1), (3, 5, 1), (4, 3, 1), (5, 3, 1)]

>>> d = CartanType(['D',Integer(4)]).dynkin_diagram(); d                           # needs sage.graphs
    O 4
    |
    |
O---O---O
1   2   3
D4
>>> d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (3, 2, 1), (4, 2, 1)]

>>> d = CartanType(['D',Integer(3)]).dynkin_diagram(); d                           # needs sage.graphs
O 3
|
|
O---O
1   2
D3
>>> d.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (1, 3, 1), (2, 1, 1), (3, 1, 1)]


>>> d = CartanType(['D',Integer(2)]).dynkin_diagram(); d                           # needs sage.graphs
O   O
1   2
D2
>>> d.edges(sort=True)                                                    # needs sage.graphs
[]
is_atomic()[source]

Implement CartanType_abstract.is_atomic().

\(D_2\) is atomic, like all \(D_n\), despite being non irreducible.

EXAMPLES:

sage: CartanType(["D",2]).is_atomic()
True
sage: CartanType(["D",2]).is_irreducible()
False
>>> from sage.all import *
>>> CartanType(["D",Integer(2)]).is_atomic()
True
>>> CartanType(["D",Integer(2)]).is_irreducible()
False