Root system data for type F¶
- class sage.combinat.root_system.type_F.AmbientSpace(root_system, base_ring)[source]¶
Bases:
AmbientSpace
The lattice behind \(F_4\). The computations are based on Bourbaki, Groupes et Algèbres de Lie, Ch. 4,5,6 (planche VIII).
- dimension()[source]¶
Return the dimension of
self
.EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: e.dimension() 4
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> e.dimension() 4
- fundamental_weights()[source]¶
Return the fundamental weights of
self
.EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: e.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)}
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> e.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)}
- negative_roots()[source]¶
Return the negative roots.
EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: e.negative_roots() [(-1, 0, 0, 0), (0, -1, 0, 0), (0, 0, -1, 0), (0, 0, 0, -1), (-1, -1, 0, 0), (-1, 0, -1, 0), (-1, 0, 0, -1), (0, -1, -1, 0), (0, -1, 0, -1), (0, 0, -1, -1), (-1, 1, 0, 0), (-1, 0, 1, 0), (-1, 0, 0, 1), (0, -1, 1, 0), (0, -1, 0, 1), (0, 0, -1, 1), (-1/2, -1/2, -1/2, -1/2), (-1/2, -1/2, -1/2, 1/2), (-1/2, -1/2, 1/2, -1/2), (-1/2, -1/2, 1/2, 1/2), (-1/2, 1/2, -1/2, -1/2), (-1/2, 1/2, -1/2, 1/2), (-1/2, 1/2, 1/2, -1/2), (-1/2, 1/2, 1/2, 1/2)]
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> e.negative_roots() [(-1, 0, 0, 0), (0, -1, 0, 0), (0, 0, -1, 0), (0, 0, 0, -1), (-1, -1, 0, 0), (-1, 0, -1, 0), (-1, 0, 0, -1), (0, -1, -1, 0), (0, -1, 0, -1), (0, 0, -1, -1), (-1, 1, 0, 0), (-1, 0, 1, 0), (-1, 0, 0, 1), (0, -1, 1, 0), (0, -1, 0, 1), (0, 0, -1, 1), (-1/2, -1/2, -1/2, -1/2), (-1/2, -1/2, -1/2, 1/2), (-1/2, -1/2, 1/2, -1/2), (-1/2, -1/2, 1/2, 1/2), (-1/2, 1/2, -1/2, -1/2), (-1/2, 1/2, -1/2, 1/2), (-1/2, 1/2, 1/2, -1/2), (-1/2, 1/2, 1/2, 1/2)]
- positive_roots()[source]¶
Return the positive roots.
These are the roots which are positive with respect to the lexicographic ordering of the basis elements (\(\epsilon_1<\epsilon_2<\epsilon_3<\epsilon_4\)).
EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: e.positive_roots() [(1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1), (1, 1, 0, 0), (1, 0, 1, 0), (1, 0, 0, 1), (0, 1, 1, 0), (0, 1, 0, 1), (0, 0, 1, 1), (1, -1, 0, 0), (1, 0, -1, 0), (1, 0, 0, -1), (0, 1, -1, 0), (0, 1, 0, -1), (0, 0, 1, -1), (1/2, 1/2, 1/2, 1/2), (1/2, 1/2, 1/2, -1/2), (1/2, 1/2, -1/2, 1/2), (1/2, 1/2, -1/2, -1/2), (1/2, -1/2, 1/2, 1/2), (1/2, -1/2, 1/2, -1/2), (1/2, -1/2, -1/2, 1/2), (1/2, -1/2, -1/2, -1/2)] sage: e.rho() (11/2, 5/2, 3/2, 1/2)
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> e.positive_roots() [(1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1), (1, 1, 0, 0), (1, 0, 1, 0), (1, 0, 0, 1), (0, 1, 1, 0), (0, 1, 0, 1), (0, 0, 1, 1), (1, -1, 0, 0), (1, 0, -1, 0), (1, 0, 0, -1), (0, 1, -1, 0), (0, 1, 0, -1), (0, 0, 1, -1), (1/2, 1/2, 1/2, 1/2), (1/2, 1/2, 1/2, -1/2), (1/2, 1/2, -1/2, 1/2), (1/2, 1/2, -1/2, -1/2), (1/2, -1/2, 1/2, 1/2), (1/2, -1/2, 1/2, -1/2), (1/2, -1/2, -1/2, 1/2), (1/2, -1/2, -1/2, -1/2)] >>> e.rho() (11/2, 5/2, 3/2, 1/2)
- root(i, j=None, k=None, l=None, p1=0, p2=0, p3=0, p4=0)[source]¶
Compute a root from base elements of the underlying lattice. The arguments specify the basis elements and the signs. Sadly, the base elements are indexed zero-based. We assume that if one of the indices is not given, the rest are not as well.
EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: [ e.root(i,j,p2=1) for i in range(e.n) for j in range(i+1,e.n) ] [(1, -1, 0, 0), (1, 0, -1, 0), (1, 0, 0, -1), (0, 1, -1, 0), (0, 1, 0, -1), (0, 0, 1, -1)]
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> [ e.root(i,j,p2=Integer(1)) for i in range(e.n) for j in range(i+Integer(1),e.n) ] [(1, -1, 0, 0), (1, 0, -1, 0), (1, 0, 0, -1), (0, 1, -1, 0), (0, 1, 0, -1), (0, 0, 1, -1)]
- simple_root(i)[source]¶
Return the \(i\)-th simple root.
It is computed according to what Bourbaki calls the Base:
\[\alpha_1 = \epsilon_2-\epsilon_3, \alpha_2 = \epsilon_3-\epsilon_4, \alpha_3 = \epsilon_4, \alpha_4 = \frac{1}{2} \left( \epsilon_1-\epsilon_2-\epsilon_3-\epsilon_4 \right).\]EXAMPLES:
sage: e = RootSystem(['F',4]).ambient_space() sage: e.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)}
>>> from sage.all import * >>> e = RootSystem(['F',Integer(4)]).ambient_space() >>> e.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)}
- class sage.combinat.root_system.type_F.CartanType[source]¶
Bases:
CartanType_standard_finite
,CartanType_simple
,CartanType_crystallographic
EXAMPLES:
sage: ct = CartanType(['F',4]) sage: ct ['F', 4] sage: ct._repr_(compact = True) 'F4' sage: ct.is_irreducible() True sage: ct.is_finite() True sage: ct.is_crystallographic() True sage: ct.is_simply_laced() False sage: ct.dual() ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1} sage: ct.affine() ['F', 4, 1]
>>> from sage.all import * >>> ct = CartanType(['F',Integer(4)]) >>> ct ['F', 4] >>> ct._repr_(compact = True) 'F4' >>> ct.is_irreducible() True >>> ct.is_finite() True >>> ct.is_crystallographic() True >>> ct.is_simply_laced() False >>> ct.dual() ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1} >>> ct.affine() ['F', 4, 1]
- AmbientSpace[source]¶
alias of
AmbientSpace
- ascii_art(label=None, node=None)[source]¶
Return an ascii art representation of the extended Dynkin diagram.
EXAMPLES:
sage: print(CartanType(['F',4]).ascii_art(label = lambda x: x+2)) O---O=>=O---O 3 4 5 6 sage: print(CartanType(['F',4]).ascii_art(label = lambda x: x-2)) O---O=>=O---O -1 0 1 2
>>> from sage.all import * >>> print(CartanType(['F',Integer(4)]).ascii_art(label = lambda x: x+Integer(2))) O---O=>=O---O 3 4 5 6 >>> print(CartanType(['F',Integer(4)]).ascii_art(label = lambda x: x-Integer(2))) O---O=>=O---O -1 0 1 2
- coxeter_number()[source]¶
Return the Coxeter number associated with
self
.EXAMPLES:
sage: CartanType(['F',4]).coxeter_number() 12
>>> from sage.all import * >>> CartanType(['F',Integer(4)]).coxeter_number() 12
- dual()[source]¶
Return the dual Cartan type.
This uses that \(F_4\) is self-dual up to relabelling.
EXAMPLES:
sage: F4 = CartanType(['F',4]) sage: F4.dual() ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1} sage: F4.dynkin_diagram() # needs sage.graphs O---O=>=O---O 1 2 3 4 F4 sage: F4.dual().dynkin_diagram() # needs sage.graphs O---O=>=O---O 4 3 2 1 F4 relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
>>> from sage.all import * >>> F4 = CartanType(['F',Integer(4)]) >>> F4.dual() ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1} >>> F4.dynkin_diagram() # needs sage.graphs O---O=>=O---O 1 2 3 4 F4 >>> F4.dual().dynkin_diagram() # needs sage.graphs O---O=>=O---O 4 3 2 1 F4 relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
- dual_coxeter_number()[source]¶
Return the dual Coxeter number associated with
self
.EXAMPLES:
sage: CartanType(['F',4]).dual_coxeter_number() 9
>>> from sage.all import * >>> CartanType(['F',Integer(4)]).dual_coxeter_number() 9
- dynkin_diagram()[source]¶
Return a Dynkin diagram for type F.
EXAMPLES:
sage: f = CartanType(['F',4]).dynkin_diagram(); f # needs sage.graphs O---O=>=O---O 1 2 3 4 F4 sage: f.edges(sort=True) # needs sage.graphs [(1, 2, 1), (2, 1, 1), (2, 3, 2), (3, 2, 1), (3, 4, 1), (4, 3, 1)]
>>> from sage.all import * >>> f = CartanType(['F',Integer(4)]).dynkin_diagram(); f # needs sage.graphs O---O=>=O---O 1 2 3 4 F4 >>> f.edges(sort=True) # needs sage.graphs [(1, 2, 1), (2, 1, 1), (2, 3, 2), (3, 2, 1), (3, 4, 1), (4, 3, 1)]