# Root system data for type G#

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

Bases: AmbientSpace

EXAMPLES:

sage: e = RootSystem(['G',2]).ambient_space(); e
Ambient space of the Root system of type ['G', 2]

>>> from sage.all import *
>>> e = RootSystem(['G',Integer(2)]).ambient_space(); e
Ambient space of the Root system of type ['G', 2]


One can not construct the ambient lattice because the simple coroots have rational coefficients:

sage: e.simple_coroots()
Finite family {1: (0, 1, -1), 2: (1/3, -2/3, 1/3)}
sage: e.smallest_base_ring()
Rational Field

>>> from sage.all import *
>>> e.simple_coroots()
Finite family {1: (0, 1, -1), 2: (1/3, -2/3, 1/3)}
>>> e.smallest_base_ring()
Rational Field


By default, this ambient space uses the barycentric projection for plotting:

sage: # needs sage.symbolic
sage: L = RootSystem(["G",2]).ambient_space()
sage: e = L.basis()
sage: L._plot_projection(e[0])
(1/2, 989/1142)
sage: L._plot_projection(e[1])
(-1, 0)
sage: L._plot_projection(e[2])
(1/2, -989/1142)
sage: L = RootSystem(["A",3]).ambient_space()
sage: l = L.an_element(); l
(2, 2, 3, 0)
sage: L._plot_projection(l)
(0, -1121/1189, 7/3)

>>> from sage.all import *
>>> # needs sage.symbolic
>>> L = RootSystem(["G",Integer(2)]).ambient_space()
>>> e = L.basis()
>>> L._plot_projection(e[Integer(0)])
(1/2, 989/1142)
>>> L._plot_projection(e[Integer(1)])
(-1, 0)
>>> L._plot_projection(e[Integer(2)])
(1/2, -989/1142)
>>> L = RootSystem(["A",Integer(3)]).ambient_space()
>>> l = L.an_element(); l
(2, 2, 3, 0)
>>> L._plot_projection(l)
(0, -1121/1189, 7/3)


• sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods._plot_projection()

dimension()[source]#

EXAMPLES:

sage: e = RootSystem(['G',2]).ambient_space()
sage: e.dimension()
3

>>> from sage.all import *
>>> e = RootSystem(['G',Integer(2)]).ambient_space()
>>> e.dimension()
3

fundamental_weights()[source]#

EXAMPLES:

sage: CartanType(['G',2]).root_system().ambient_space().fundamental_weights()
Finite family {1: (1, 0, -1), 2: (2, -1, -1)}

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).root_system().ambient_space().fundamental_weights()
Finite family {1: (1, 0, -1), 2: (2, -1, -1)}

negative_roots()[source]#

EXAMPLES:

sage: CartanType(['G',2]).root_system().ambient_space().negative_roots()
[(0, -1, 1), (-1, 2, -1), (-1, 1, 0), (-1, 0, 1), (-1, -1, 2), (-2, 1, 1)]

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).root_system().ambient_space().negative_roots()
[(0, -1, 1), (-1, 2, -1), (-1, 1, 0), (-1, 0, 1), (-1, -1, 2), (-2, 1, 1)]

positive_roots()[source]#

EXAMPLES:

sage: CartanType(['G',2]).root_system().ambient_space().positive_roots()
[(0, 1, -1), (1, -2, 1), (1, -1, 0), (1, 0, -1), (1, 1, -2), (2, -1, -1)]

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).root_system().ambient_space().positive_roots()
[(0, 1, -1), (1, -2, 1), (1, -1, 0), (1, 0, -1), (1, 1, -2), (2, -1, -1)]

simple_root(i)[source]#

EXAMPLES:

sage: CartanType(['G',2]).root_system().ambient_space().simple_roots()
Finite family {1: (0, 1, -1), 2: (1, -2, 1)}

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).root_system().ambient_space().simple_roots()
Finite family {1: (0, 1, -1), 2: (1, -2, 1)}

class sage.combinat.root_system.type_G.CartanType[source]#

EXAMPLES:

sage: ct = CartanType(['G',2])
sage: ct
['G', 2]
sage: ct._repr_(compact = True)
'G2'

sage: ct.is_irreducible()
True
sage: ct.is_finite()
True
sage: ct.is_crystallographic()
True
sage: ct.is_simply_laced()
False
sage: ct.dual()
['G', 2] relabelled by {1: 2, 2: 1}
sage: ct.affine()
['G', 2, 1]

>>> from sage.all import *
>>> ct = CartanType(['G',Integer(2)])
>>> ct
['G', 2]
>>> ct._repr_(compact = True)
'G2'

>>> ct.is_irreducible()
True
>>> ct.is_finite()
True
>>> ct.is_crystallographic()
True
>>> ct.is_simply_laced()
False
>>> ct.dual()
['G', 2] relabelled by {1: 2, 2: 1}
>>> ct.affine()
['G', 2, 1]

AmbientSpace[source]#

alias of AmbientSpace

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

Return an ascii art representation of the Dynkin diagram.

EXAMPLES:

sage: print(CartanType(['G',2]).ascii_art(label=lambda x: x+2))
3
O=<=O
3   4

>>> from sage.all import *
>>> print(CartanType(['G',Integer(2)]).ascii_art(label=lambda x: x+Integer(2)))
3
O=<=O
3   4

coxeter_number()[source]#

Return the Coxeter number associated with self.

EXAMPLES:

sage: CartanType(['G',2]).coxeter_number()
6

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).coxeter_number()
6

dual()[source]#

Return the dual Cartan type.

This uses that $$G_2$$ is self-dual up to relabelling.

EXAMPLES:

sage: G2 = CartanType(['G',2])
sage: G2.dual()
['G', 2] relabelled by {1: 2, 2: 1}

sage: G2.dynkin_diagram()                                                   # needs sage.graphs
3
O=<=O
1   2
G2
sage: G2.dual().dynkin_diagram()                                            # needs sage.graphs
3
O=<=O
2   1
G2 relabelled by {1: 2, 2: 1}

>>> from sage.all import *
>>> G2 = CartanType(['G',Integer(2)])
>>> G2.dual()
['G', 2] relabelled by {1: 2, 2: 1}

>>> G2.dynkin_diagram()                                                   # needs sage.graphs
3
O=<=O
1   2
G2
>>> G2.dual().dynkin_diagram()                                            # needs sage.graphs
3
O=<=O
2   1
G2 relabelled by {1: 2, 2: 1}

dual_coxeter_number()[source]#

Return the dual Coxeter number associated with self.

EXAMPLES:

sage: CartanType(['G',2]).dual_coxeter_number()
4

>>> from sage.all import *
>>> CartanType(['G',Integer(2)]).dual_coxeter_number()
4

dynkin_diagram()[source]#

Returns a Dynkin diagram for type G.

EXAMPLES:

sage: g = CartanType(['G',2]).dynkin_diagram(); g                           # needs sage.graphs
3
O=<=O
1   2
G2
sage: g.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 3)]

>>> from sage.all import *
>>> g = CartanType(['G',Integer(2)]).dynkin_diagram(); g                           # needs sage.graphs
3
O=<=O
1   2
G2
>>> g.edges(sort=True)                                                    # needs sage.graphs
[(1, 2, 1), (2, 1, 3)]