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– list of crystals of the same Cartan type
- keepkey– boolean
 - The option - keepkeyis by default set to- False, 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 the- keepkeyoption to- True. 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 as- DisjointUnionEnumeratedSets(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 - 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]