Direct Sum of Crystals¶
- class sage.combinat.crystals.direct_sum.DirectSumOfCrystals(crystals, facade, keepkey, category, **options)[source]¶
Bases:
DisjointUnionEnumeratedSetsDirect sum of crystals.
Given a list of crystals \(B_0, \ldots, B_k\) of the same Cartan type, one can form the direct sum \(B_0 \oplus \cdots \oplus B_k\).
INPUT:
crystals– list of crystals of the same Cartan typekeepkey– boolean
The option
keepkeyis by default set toFalse, assuming that the crystals are all distinct. In this case the elements of the direct sum are just represented by the elements in the crystals \(B_i\). If the crystals are not all distinct, one should set thekeepkeyoption toTrue. In this case, the elements of the direct sum are represented as tuples \((i, b)\) where \(b \in B_i\).EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: C1 = crystals.Tableaux(['A',2],shape=[1,1]) sage: B = crystals.DirectSum([C,C1]) sage: B.list() [1, 2, 3, [[1], [2]], [[1], [3]], [[2], [3]]] sage: [b.f(1) for b in B] [2, None, None, None, [[2], [3]], None] sage: B.module_generators (1, [[1], [2]])
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> C1 = crystals.Tableaux(['A',Integer(2)],shape=[Integer(1),Integer(1)]) >>> B = crystals.DirectSum([C,C1]) >>> B.list() [1, 2, 3, [[1], [2]], [[1], [3]], [[2], [3]]] >>> [b.f(Integer(1)) for b in B] [2, None, None, None, [[2], [3]], None] >>> B.module_generators (1, [[1], [2]])
sage: B = crystals.DirectSum([C,C], keepkey=True) sage: B.list() [(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)] sage: B.module_generators ((0, 1), (1, 1)) sage: b = B( tuple([0,C(1)]) ) sage: b (0, 1) sage: b.weight() (1, 0, 0)
>>> from sage.all import * >>> B = crystals.DirectSum([C,C], keepkey=True) >>> B.list() [(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)] >>> B.module_generators ((0, 1), (1, 1)) >>> b = B( tuple([Integer(0),C(Integer(1))]) ) >>> b (0, 1) >>> b.weight() (1, 0, 0)
The following is required, because
DirectSumOfCrystalstakes the same arguments asDisjointUnionEnumeratedSets(which see for details).- class Element[source]¶
Bases:
ElementWrapperA class for elements of direct sums of crystals.
- e(i)[source]¶
Return the action of \(e_i\) on
self.EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: B = crystals.DirectSum([C,C], keepkey=True) sage: [[b, b.e(2)] for b in B] [[(0, 1), None], [(0, 2), None], [(0, 3), (0, 2)], [(1, 1), None], [(1, 2), None], [(1, 3), (1, 2)]]
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> B = crystals.DirectSum([C,C], keepkey=True) >>> [[b, b.e(Integer(2))] for b in B] [[(0, 1), None], [(0, 2), None], [(0, 3), (0, 2)], [(1, 1), None], [(1, 2), None], [(1, 3), (1, 2)]]
- epsilon(i)[source]¶
EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: B = crystals.DirectSum([C,C], keepkey=True) sage: b = B( tuple([0,C(2)]) ) sage: b.epsilon(2) 0
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> B = crystals.DirectSum([C,C], keepkey=True) >>> b = B( tuple([Integer(0),C(Integer(2))]) ) >>> b.epsilon(Integer(2)) 0
- f(i)[source]¶
Return the action of \(f_i\) on
self.EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: B = crystals.DirectSum([C,C], keepkey=True) sage: [[b,b.f(1)] for b in B] [[(0, 1), (0, 2)], [(0, 2), None], [(0, 3), None], [(1, 1), (1, 2)], [(1, 2), None], [(1, 3), None]]
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> B = crystals.DirectSum([C,C], keepkey=True) >>> [[b,b.f(Integer(1))] for b in B] [[(0, 1), (0, 2)], [(0, 2), None], [(0, 3), None], [(1, 1), (1, 2)], [(1, 2), None], [(1, 3), None]]
- phi(i)[source]¶
EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: B = crystals.DirectSum([C,C], keepkey=True) sage: b = B( tuple([0,C(2)]) ) sage: b.phi(2) 1
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> B = crystals.DirectSum([C,C], keepkey=True) >>> b = B( tuple([Integer(0),C(Integer(2))]) ) >>> b.phi(Integer(2)) 1
- weight()[source]¶
Return the weight of
self.EXAMPLES:
sage: C = crystals.Letters(['A',2]) sage: B = crystals.DirectSum([C,C], keepkey=True) sage: b = B( tuple([0,C(2)]) ) sage: b (0, 2) sage: b.weight() (0, 1, 0)
>>> from sage.all import * >>> C = crystals.Letters(['A',Integer(2)]) >>> B = crystals.DirectSum([C,C], keepkey=True) >>> b = B( tuple([Integer(0),C(Integer(2))]) ) >>> b (0, 2) >>> b.weight() (0, 1, 0)
- weight_lattice_realization()[source]¶
Return the weight lattice realization used to express weights.
The weight lattice realization is the common parent which all weight lattice realizations of the crystals of
selfcoerce into.EXAMPLES:
sage: LaZ = RootSystem(['A',2,1]).weight_lattice(extended=True).fundamental_weights() sage: LaQ = RootSystem(['A',2,1]).weight_space(extended=True).fundamental_weights() sage: B = crystals.LSPaths(LaQ[1]) sage: B.weight_lattice_realization() Extended weight space over the Rational Field of the Root system of type ['A', 2, 1] sage: C = crystals.AlcovePaths(LaZ[1]) sage: C.weight_lattice_realization() Extended weight lattice of the Root system of type ['A', 2, 1] sage: D = crystals.DirectSum([B,C]) sage: D.weight_lattice_realization() Extended weight space over the Rational Field of the Root system of type ['A', 2, 1]
>>> from sage.all import * >>> LaZ = RootSystem(['A',Integer(2),Integer(1)]).weight_lattice(extended=True).fundamental_weights() >>> LaQ = RootSystem(['A',Integer(2),Integer(1)]).weight_space(extended=True).fundamental_weights() >>> B = crystals.LSPaths(LaQ[Integer(1)]) >>> B.weight_lattice_realization() Extended weight space over the Rational Field of the Root system of type ['A', 2, 1] >>> C = crystals.AlcovePaths(LaZ[Integer(1)]) >>> C.weight_lattice_realization() Extended weight lattice of the Root system of type ['A', 2, 1] >>> D = crystals.DirectSum([B,C]) >>> D.weight_lattice_realization() Extended weight space over the Rational Field of the Root system of type ['A', 2, 1]