Supercrystals¶
- class sage.categories.supercrystals.SuperCrystals[source]¶
- Bases: - Category_singleton- class Finite(base_category)[source]¶
- Bases: - CategoryWithAxiom_singleton- class ElementMethods[source]¶
- Bases: - object- is_genuine_highest_weight(index_set=None)[source]¶
- Return whether - selfis a genuine highest weight element.- INPUT: - index_set– (optional) the index set of the (sub)crystal on which to check
 - EXAMPLES: - sage: B = crystals.Tableaux(['A', [1,1]], shape=[3,2,1]) sage: for b in B.highest_weight_vectors(): ....: print("{} {}".format(b, b.is_genuine_highest_weight())) [[-2, -2, -2], [-1, -1], [1]] True [[-2, -2, -2], [-1, 2], [1]] False [[-2, -2, 2], [-1, -1], [1]] False sage: [b for b in B if b.is_genuine_highest_weight([-1,0])] [[[-2, -2, -2], [-1, -1], [1]], [[-2, -2, -2], [-1, -1], [2]], [[-2, -2, -2], [-1, 2], [2]], [[-2, -2, 2], [-1, -1], [2]], [[-2, -2, 2], [-1, 2], [2]], [[-2, -2, -2], [-1, 2], [1]], [[-2, -2, 2], [-1, -1], [1]], [[-2, -2, 2], [-1, 2], [1]]] - >>> from sage.all import * >>> B = crystals.Tableaux(['A', [Integer(1),Integer(1)]], shape=[Integer(3),Integer(2),Integer(1)]) >>> for b in B.highest_weight_vectors(): ... print("{} {}".format(b, b.is_genuine_highest_weight())) [[-2, -2, -2], [-1, -1], [1]] True [[-2, -2, -2], [-1, 2], [1]] False [[-2, -2, 2], [-1, -1], [1]] False >>> [b for b in B if b.is_genuine_highest_weight([-Integer(1),Integer(0)])] [[[-2, -2, -2], [-1, -1], [1]], [[-2, -2, -2], [-1, -1], [2]], [[-2, -2, -2], [-1, 2], [2]], [[-2, -2, 2], [-1, -1], [2]], [[-2, -2, 2], [-1, 2], [2]], [[-2, -2, -2], [-1, 2], [1]], [[-2, -2, 2], [-1, -1], [1]], [[-2, -2, 2], [-1, 2], [1]]] 
 - is_genuine_lowest_weight(index_set=None)[source]¶
- Return whether - selfis a genuine lowest weight element.- INPUT: - index_set– (optional) the index set of the (sub)crystal on which to check
 - EXAMPLES: - sage: B = crystals.Tableaux(['A', [1,1]], shape=[3,2,1]) sage: for b in sorted(B.lowest_weight_vectors()): ....: print("{} {}".format(b, b.is_genuine_lowest_weight())) [[-2, 1, 2], [-1, 2], [1]] False [[-2, 1, 2], [-1, 2], [2]] False [[-1, 1, 2], [1, 2], [2]] True sage: [b for b in B if b.is_genuine_lowest_weight([-1,0])] [[[-2, -1, 1], [-1, 1], [1]], [[-2, -1, 1], [-1, 1], [2]], [[-2, 1, 2], [-1, 1], [2]], [[-2, 1, 2], [-1, 1], [1]], [[-1, -1, 1], [1, 2], [2]], [[-1, -1, 1], [1, 2], [1]], [[-1, 1, 2], [1, 2], [2]], [[-1, 1, 2], [1, 2], [1]]] - >>> from sage.all import * >>> B = crystals.Tableaux(['A', [Integer(1),Integer(1)]], shape=[Integer(3),Integer(2),Integer(1)]) >>> for b in sorted(B.lowest_weight_vectors()): ... print("{} {}".format(b, b.is_genuine_lowest_weight())) [[-2, 1, 2], [-1, 2], [1]] False [[-2, 1, 2], [-1, 2], [2]] False [[-1, 1, 2], [1, 2], [2]] True >>> [b for b in B if b.is_genuine_lowest_weight([-Integer(1),Integer(0)])] [[[-2, -1, 1], [-1, 1], [1]], [[-2, -1, 1], [-1, 1], [2]], [[-2, 1, 2], [-1, 1], [2]], [[-2, 1, 2], [-1, 1], [1]], [[-1, -1, 1], [1, 2], [2]], [[-1, -1, 1], [1, 2], [1]], [[-1, 1, 2], [1, 2], [2]], [[-1, 1, 2], [1, 2], [1]]] 
 
 - class ParentMethods[source]¶
- Bases: - object- character()[source]¶
- Return the character of - self.- Todo - Once the \(WeylCharacterRing\) is implemented, make this consistent with the implementation in - sage.categories.classical_crystals.ClassicalCrystals.ParentMethods.character().- EXAMPLES: - sage: B = crystals.Letters(['A',[1,2]]) sage: B.character() B[(1, 0, 0, 0, 0)] + B[(0, 1, 0, 0, 0)] + B[(0, 0, 1, 0, 0)] + B[(0, 0, 0, 1, 0)] + B[(0, 0, 0, 0, 1)] - >>> from sage.all import * >>> B = crystals.Letters(['A',[Integer(1),Integer(2)]]) >>> B.character() B[(1, 0, 0, 0, 0)] + B[(0, 1, 0, 0, 0)] + B[(0, 0, 1, 0, 0)] + B[(0, 0, 0, 1, 0)] + B[(0, 0, 0, 0, 1)] 
 - connected_components()[source]¶
- Return the connected components of - selfas subcrystals.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.connected_components() [Subcrystal of The crystal of letters for type ['A', [1, 2]]] sage: T = B.tensor(B) sage: T.connected_components() [Subcrystal of Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], The crystal of letters for type ['A', [1, 2]]], Subcrystal of Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], The crystal of letters for type ['A', [1, 2]]]] - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.connected_components() [Subcrystal of The crystal of letters for type ['A', [1, 2]]] >>> T = B.tensor(B) >>> T.connected_components() [Subcrystal of Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], The crystal of letters for type ['A', [1, 2]]], Subcrystal of Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], The crystal of letters for type ['A', [1, 2]]]] 
 - connected_components_generators()[source]¶
- Return the tuple of genuine highest weight elements of - self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.genuine_highest_weight_vectors() (-2,) sage: T = B.tensor(B) sage: T.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) sage: s1, s2 = T.connected_components() sage: s = s1 + s2 sage: s.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.genuine_highest_weight_vectors() (-2,) >>> T = B.tensor(B) >>> T.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) >>> s1, s2 = T.connected_components() >>> s = s1 + s2 >>> s.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) 
 - digraph(index_set=None)[source]¶
- Return the - DiGraphassociated to- self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,3]]) sage: G = B.digraph(); G Multi-digraph on 6 vertices sage: Q = crystals.Letters(['Q',3]) sage: G = Q.digraph(); G Multi-digraph on 3 vertices sage: G.edges(sort=True) [(1, 2, -1), (1, 2, 1), (2, 3, -2), (2, 3, 2)] - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(3)]]) >>> G = B.digraph(); G Multi-digraph on 6 vertices >>> Q = crystals.Letters(['Q',Integer(3)]) >>> G = Q.digraph(); G Multi-digraph on 3 vertices >>> G.edges(sort=True) [(1, 2, -1), (1, 2, 1), (2, 3, -2), (2, 3, 2)] - The edges of the crystal graph are by default colored using blue for edge 1, red for edge 2, green for edge 3, and dashed with the corresponding color for barred edges. Edge 0 is dotted black: - sage: view(G) # optional - dot2tex graphviz, not tested (opens external window) - >>> from sage.all import * >>> view(G) # optional - dot2tex graphviz, not tested (opens external window) 
 - genuine_highest_weight_vectors()[source]¶
- Return the tuple of genuine highest weight elements of - self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.genuine_highest_weight_vectors() (-2,) sage: T = B.tensor(B) sage: T.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) sage: s1, s2 = T.connected_components() sage: s = s1 + s2 sage: s.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.genuine_highest_weight_vectors() (-2,) >>> T = B.tensor(B) >>> T.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) >>> s1, s2 = T.connected_components() >>> s = s1 + s2 >>> s.genuine_highest_weight_vectors() ([-2, -1], [-2, -2]) 
 - genuine_lowest_weight_vectors()[source]¶
- Return the tuple of genuine lowest weight elements of - self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.genuine_lowest_weight_vectors() (3,) sage: T = B.tensor(B) sage: T.genuine_lowest_weight_vectors() ([3, 3], [3, 2]) sage: s1, s2 = T.connected_components() sage: s = s1 + s2 sage: s.genuine_lowest_weight_vectors() ([3, 3], [3, 2]) - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.genuine_lowest_weight_vectors() (3,) >>> T = B.tensor(B) >>> T.genuine_lowest_weight_vectors() ([3, 3], [3, 2]) >>> s1, s2 = T.connected_components() >>> s = s1 + s2 >>> s.genuine_lowest_weight_vectors() ([3, 3], [3, 2]) 
 - highest_weight_vectors()[source]¶
- Return the highest weight vectors of - self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.highest_weight_vectors() (-2,) sage: T = B.tensor(B) sage: T.highest_weight_vectors() ([-2, -2], [-2, -1]) - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.highest_weight_vectors() (-2,) >>> T = B.tensor(B) >>> T.highest_weight_vectors() ([-2, -2], [-2, -1]) - We give an example from [BKK2000] that has fake highest weight vectors: - sage: B = crystals.Tableaux(['A', [1,1]], shape=[3,2,1]) sage: B.highest_weight_vectors() ([[-2, -2, -2], [-1, -1], [1]], [[-2, -2, -2], [-1, 2], [1]], [[-2, -2, 2], [-1, -1], [1]]) sage: B.genuine_highest_weight_vectors() ([[-2, -2, -2], [-1, -1], [1]],) - >>> from sage.all import * >>> B = crystals.Tableaux(['A', [Integer(1),Integer(1)]], shape=[Integer(3),Integer(2),Integer(1)]) >>> B.highest_weight_vectors() ([[-2, -2, -2], [-1, -1], [1]], [[-2, -2, -2], [-1, 2], [1]], [[-2, -2, 2], [-1, -1], [1]]) >>> B.genuine_highest_weight_vectors() ([[-2, -2, -2], [-1, -1], [1]],) 
 - lowest_weight_vectors()[source]¶
- Return the lowest weight vectors of - self.- EXAMPLES: - sage: B = crystals.Letters(['A', [1,2]]) sage: B.lowest_weight_vectors() (3,) sage: T = B.tensor(B) sage: sorted(T.lowest_weight_vectors()) [[3, 2], [3, 3]] - >>> from sage.all import * >>> B = crystals.Letters(['A', [Integer(1),Integer(2)]]) >>> B.lowest_weight_vectors() (3,) >>> T = B.tensor(B) >>> sorted(T.lowest_weight_vectors()) [[3, 2], [3, 3]] - We give an example from [BKK2000] that has fake lowest weight vectors: - sage: B = crystals.Tableaux(['A', [1,1]], shape=[3,2,1]) sage: sorted(B.lowest_weight_vectors()) [[[-2, 1, 2], [-1, 2], [1]], [[-2, 1, 2], [-1, 2], [2]], [[-1, 1, 2], [1, 2], [2]]] sage: B.genuine_lowest_weight_vectors() ([[-1, 1, 2], [1, 2], [2]],) - >>> from sage.all import * >>> B = crystals.Tableaux(['A', [Integer(1),Integer(1)]], shape=[Integer(3),Integer(2),Integer(1)]) >>> sorted(B.lowest_weight_vectors()) [[[-2, 1, 2], [-1, 2], [1]], [[-2, 1, 2], [-1, 2], [2]], [[-1, 1, 2], [1, 2], [2]]] >>> B.genuine_lowest_weight_vectors() ([[-1, 1, 2], [1, 2], [2]],) 
 
 
 - class ParentMethods[source]¶
- Bases: - object- tensor(*crystals, **options)[source]¶
- Return the tensor product of - selfwith the crystals- B.- EXAMPLES: - sage: B = crystals.Letters(['A',[1,2]]) sage: C = crystals.Tableaux(['A',[1,2]], shape = [2,1]) sage: T = C.tensor(B); T Full tensor product of the crystals [Crystal of BKK tableaux of shape [2, 1] of gl(2|3), The crystal of letters for type ['A', [1, 2]]] sage: S = B.tensor(C); S Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], Crystal of BKK tableaux of shape [2, 1] of gl(2|3)] sage: G = T.digraph() sage: H = S.digraph() sage: G.is_isomorphic(H, edge_labels=True) True - >>> from sage.all import * >>> B = crystals.Letters(['A',[Integer(1),Integer(2)]]) >>> C = crystals.Tableaux(['A',[Integer(1),Integer(2)]], shape = [Integer(2),Integer(1)]) >>> T = C.tensor(B); T Full tensor product of the crystals [Crystal of BKK tableaux of shape [2, 1] of gl(2|3), The crystal of letters for type ['A', [1, 2]]] >>> S = B.tensor(C); S Full tensor product of the crystals [The crystal of letters for type ['A', [1, 2]], Crystal of BKK tableaux of shape [2, 1] of gl(2|3)] >>> G = T.digraph() >>> H = S.digraph() >>> G.is_isomorphic(H, edge_labels=True) True 
 
 - class TensorProducts(category, *args)[source]¶
- Bases: - TensorProductsCategory- The category of regular crystals constructed by tensor product of regular crystals. - extra_super_categories()[source]¶
- EXAMPLES: - sage: from sage.categories.supercrystals import SuperCrystals sage: SuperCrystals().TensorProducts().extra_super_categories() [Category of super crystals] - >>> from sage.all import * >>> from sage.categories.supercrystals import SuperCrystals >>> SuperCrystals().TensorProducts().extra_super_categories() [Category of super crystals] 
 
 - super_categories()[source]¶
- EXAMPLES: - sage: from sage.categories.supercrystals import SuperCrystals sage: C = SuperCrystals() sage: C.super_categories() [Category of crystals] - >>> from sage.all import * >>> from sage.categories.supercrystals import SuperCrystals >>> C = SuperCrystals() >>> C.super_categories() [Category of crystals]