Direct Sum of Crystals#
- class sage.combinat.crystals.direct_sum.DirectSumOfCrystals(crystals, facade, keepkey, category, **options)[source]#
Bases:
DisjointUnionEnumeratedSets
Direct 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
– a list of crystals of the same Cartan typekeepkey
– a boolean
The option
keepkey
is 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 thekeepkey
option 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
DirectSumOfCrystals
takes the same arguments asDisjointUnionEnumeratedSets
(which see for details).- class Element[source]#
Bases:
ElementWrapper
A 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
self
coerce 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]