Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
""" Root system data for type C """ #***************************************************************************** # Copyright (C) 2008-2009 Daniel Bump # Copyright (C) 2008-2009 Justin Walker # Copyright (C) 2008-2013 Nicolas M. Thiery <nthiery at users.sf.net> # # Distributed under the terms of the GNU General Public License (GPL) # http://www.gnu.org/licenses/ #***************************************************************************** from __future__ import print_function from __future__ import absolute_import
from . import ambient_space
class AmbientSpace(ambient_space.AmbientSpace): """ EXAMPLES::
sage: e = RootSystem(['C',2]).ambient_space(); e Ambient space of the Root system of type ['C', 2]
One cannot construct the ambient lattice because the fundamental coweights have rational coefficients::
sage: e.smallest_base_ring() Rational Field
sage: RootSystem(['B',2]).ambient_space().fundamental_weights() Finite family {1: (1, 0), 2: (1/2, 1/2)}
TESTS::
sage: TestSuite(e).run() """
def dimension(self): """ EXAMPLES::
sage: e = RootSystem(['C',3]).ambient_space() sage: e.dimension() 3 """
def root(self, i, j, p1, p2): """ Note that indexing starts at 0.
EXAMPLES::
sage: e = RootSystem(['C',3]).ambient_space() sage: e.root(0, 1, 1, 1) (-1, -1, 0) """
def simple_root(self, i): """ EXAMPLES::
sage: RootSystem(['C',3]).ambient_space().simple_roots() Finite family {1: (1, -1, 0), 2: (0, 1, -1), 3: (0, 0, 2)} """ raise ValueError("{} is not in the index set".format(i))
def positive_roots(self): """ EXAMPLES::
sage: RootSystem(['C',3]).ambient_space().positive_roots() [(1, 1, 0), (1, 0, 1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (0, 1, -1), (2, 0, 0), (0, 2, 0), (0, 0, 2)] """
def negative_roots(self): """ EXAMPLES::
sage: RootSystem(['C',3]).ambient_space().negative_roots() [(-1, 1, 0), (-1, 0, 1), (0, -1, 1), (-1, -1, 0), (-1, 0, -1), (0, -1, -1), (-2, 0, 0), (0, -2, 0), (0, 0, -2)] """
def fundamental_weight(self, i): """ EXAMPLES::
sage: RootSystem(['C',3]).ambient_space().fundamental_weights() Finite family {1: (1, 0, 0), 2: (1, 1, 0), 3: (1, 1, 1)} """
from .cartan_type import CartanType_standard_finite, CartanType_simple, CartanType_crystallographic, CartanType_simply_laced class CartanType(CartanType_standard_finite, CartanType_simple, CartanType_crystallographic): def __init__(self, n): """ EXAMPLES::
sage: ct = CartanType(['C',4]) sage: ct ['C', 4] sage: ct._repr_(compact = True) 'C4'
sage: ct.is_irreducible() True sage: ct.is_finite() True sage: ct.is_crystallographic() True sage: ct.is_simply_laced() False sage: ct.affine() ['C', 4, 1] sage: ct.dual() ['B', 4]
sage: ct = CartanType(['C',1]) sage: ct.is_simply_laced() True sage: ct.affine() ['C', 1, 1]
TESTS::
sage: TestSuite(ct).run() """
def _latex_(self): """ Return a latex representation of ``self``.
EXAMPLES::
sage: latex(CartanType(['C',4])) C_{4} """
AmbientSpace = AmbientSpace
def coxeter_number(self): """ Return the Coxeter number associated with ``self``.
EXAMPLES::
sage: CartanType(['C',4]).coxeter_number() 8 """
def dual_coxeter_number(self): """ Return the dual Coxeter number associated with ``self``.
EXAMPLES::
sage: CartanType(['C',4]).dual_coxeter_number() 5 """
def dual(self): """ Types B and C are in duality:
EXAMPLES::
sage: CartanType(["C", 3]).dual() ['B', 3] """
def dynkin_diagram(self): """ Returns a Dynkin diagram for type C.
EXAMPLES::
sage: c = CartanType(['C',3]).dynkin_diagram() sage: c O---O=<=O 1 2 3 C3 sage: e = c.edges(); e.sort(); e [(1, 2, 1), (2, 1, 1), (2, 3, 1), (3, 2, 2)]
sage: b = CartanType(['C',1]).dynkin_diagram() sage: b O 1 C1 sage: sorted(b.edges()) [] """
r""" Return a latex representation of the Dynkin diagram.
EXAMPLES::
sage: print(CartanType(['C',4])._latex_dynkin_diagram()) \draw (0 cm,0) -- (4 cm,0); \draw (4 cm, 0.1 cm) -- +(2 cm,0); \draw (4 cm, -0.1 cm) -- +(2 cm,0); \draw[shift={(4.8, 0)}, rotate=180] (135 : 0.45cm) -- (0,0) -- (-135 : 0.45cm); \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$}; \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$}; \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$}; \draw[fill=white] (6 cm, 0 cm) circle (.25cm) node[below=4pt]{$4$}; <BLANKLINE>
When ``dual=True``, the Dynkin diagram for the dual Cartan type `B_n` is returned::
sage: print(CartanType(['C',4])._latex_dynkin_diagram(dual=True)) \draw (0 cm,0) -- (4 cm,0); \draw (4 cm, 0.1 cm) -- +(2 cm,0); \draw (4 cm, -0.1 cm) -- +(2 cm,0); \draw[shift={(5.2, 0)}, rotate=0] (135 : 0.45cm) -- (0,0) -- (-135 : 0.45cm); \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$}; \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$}; \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$}; \draw[fill=white] (6 cm, 0 cm) circle (.25cm) node[below=4pt]{$4$}; <BLANKLINE>
.. SEEALSO::
- :meth:`sage.combinat.root_system.type_C.CartanType._latex_dynkin_diagram` - :meth:`sage.combinat.root_system.type_BC_affine.CartanType._latex_dynkin_diagram` """
""" Return a ascii art representation of the extended Dynkin diagram.
EXAMPLES::
sage: print(CartanType(['C',1]).ascii_art()) O 1 sage: print(CartanType(['C',2]).ascii_art()) O=<=O 1 2 sage: print(CartanType(['C',3]).ascii_art()) O---O=<=O 1 2 3 sage: print(CartanType(['C',5]).ascii_art(label = lambda x: x+2)) O---O---O---O=<=O 3 4 5 6 7 """
def _default_folded_cartan_type(self): """ Return the default folded Cartan type.
EXAMPLES::
sage: CartanType(['C', 3])._default_folded_cartan_type() ['C', 3] as a folding of ['A', 5] """ [[i, 2*n-i] for i in range(1, n)] + [[n]])
# For unpickling backward compatibility (Sage <= 4.1) from sage.structure.sage_object import register_unpickle_override register_unpickle_override('sage.combinat.root_system.type_C', 'ambient_space', AmbientSpace) |