Regular Supercrystals

class sage.categories.regular_supercrystals.RegularSuperCrystals(s=None)

Bases: sage.categories.category_singleton.Category_singleton

The category of crystals for super Lie algebras.

EXAMPLES:

sage: from sage.categories.regular_supercrystals import RegularSuperCrystals
sage: C = RegularSuperCrystals()
sage: C
Category of regular super crystals
sage: C.super_categories()
[Category of finite crystals]

Parents in this category should implement the following methods:

  • either an attribute _cartan_type or a method cartan_type
  • module_generators: a list (or container) of distinct elements that generate the crystal using \(f_i\) and \(e_i\)

Furthermore, their elements x should implement the following methods:

  • x.e(i) (returning \(e_i(x)\))
  • x.f(i) (returning \(f_i(x)\))
  • x.weight() (returning \(\operatorname{wt}(x)\))

EXAMPLES:

sage: from sage.misc.abstract_method import abstract_methods_of_class
sage: from sage.categories.regular_supercrystals import RegularSuperCrystals
sage: abstract_methods_of_class(RegularSuperCrystals().element_class)
{'optional': [], 'required': ['e', 'f', 'weight']}
class ElementMethods
epsilon(i)

Return \(\varepsilon_i\) of self.

EXAMPLES:

sage: C = crystals.Tableaux(['A',[1,2]], shape = [2,1])
sage: c = C.an_element(); c
[[-2, -2], [-1]]
sage: c.epsilon(2)
0
sage: c.epsilon(0)
0
sage: c.epsilon(-1)
0
is_genuine_highest_weight(index_set=None)

Return whether self is 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]]]
is_genuine_lowest_weight(index_set=None)

Return whether self is 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]]]
phi(i)

Return \(\varphi_i\) of self.

EXAMPLES:

sage: C = crystals.Tableaux(['A',[1,2]], shape = [2,1])
sage: c = C.an_element(); c
[[-2, -2], [-1]]
sage: c.phi(1)
0
sage: c.phi(2)
0
sage: c.phi(0)
1
class ParentMethods
character()

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)]
connected_components()

Return the connected components of self as 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]]]]
connected_components_generators()

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])
digraph()

Return the DiGraph associated 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()
[(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)
genuine_highest_weight_vectors()

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])
genuine_lowest_weight_vectors()

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])
highest_weight_vectors()

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])

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]],)
lowest_weight_vectors()

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]]

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]],)
tensor(*crystals, **options)

Return the tensor product of self with 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
class TensorProducts(category, *args)

Bases: sage.categories.tensor.TensorProductsCategory

The category of regular crystals constructed by tensor product of regular crystals.

extra_super_categories()

EXAMPLES:

sage: RegularCrystals().TensorProducts().extra_super_categories()
[Category of regular crystals]
super_categories()

EXAMPLES:

sage: from sage.categories.regular_supercrystals import RegularSuperCrystals
sage: C = RegularSuperCrystals()
sage: C.super_categories()
[Category of finite crystals]