Regular Crystals

class sage.categories.regular_crystals.RegularCrystals(s=None)

Bases: sage.categories.category_singleton.Category_singleton

The category of regular crystals.

A crystal is called regular if:

\[\epsilon_i(b) = \max\{ k \mid e_i^k(b) \neq 0 \} \quad \text{and} \quad \phi_i(b) = \max\{ k \mid f_i^k(b) \neq 0 \}.\]

Note

Regular crystals are sometimes referred to as normal. When only one of the conditions (on either \(\phi_i\) or \(epsilon_i\)) holds, these crystals are sometimes called seminormal or semiregular.

EXAMPLES:

sage: C = RegularCrystals()
sage: C
Category of regular crystals
sage: C.super_categories()
[Category of crystals]
sage: C.example()
Highest weight crystal of type A_3 of highest weight omega_1

TESTS:

sage: TestSuite(C).run()
sage: B = RegularCrystals().example()
sage: TestSuite(B).run(verbose = True)
running ._test_an_element() . . . pass
running ._test_category() . . . pass
running ._test_elements() . . .
  Running the test suite of self.an_element()
  running ._test_category() . . . pass
  running ._test_eq() . . . pass
  running ._test_not_implemented_methods() . . . pass
  running ._test_pickling() . . . pass
  running ._test_stembridge_local_axioms() . . . pass
  pass
running ._test_elements_eq_reflexive() . . . pass
running ._test_elements_eq_symmetric() . . . pass
running ._test_elements_eq_transitive() . . . pass
running ._test_elements_neq() . . . pass
running ._test_enumerated_set_contains() . . . pass
running ._test_enumerated_set_iter_cardinality() . . . pass
running ._test_enumerated_set_iter_list() . . . pass
running ._test_eq() . . . pass
running ._test_fast_iter() . . . pass
running ._test_not_implemented_methods() . . . pass
running ._test_pickling() . . . pass
running ._test_some_elements() . . . pass
running ._test_stembridge_local_axioms() . . . pass
class ElementMethods
demazure_operator_simple(i, ring=None)

Return the Demazure operator \(D_i\) applied to self.

INPUT:

  • i – an element of the index set of the underlying crystal
  • ring – (default: QQ) a ring

OUTPUT:

An element of the ring-free module indexed by the underlying crystal.

Let \(r = \langle \mathrm{wt}(b), \alpha^{\vee}_i \rangle\), then \(D_i(b)\) is defined as follows:

  • If \(r \geq 0\), this returns the sum of the elements obtained from self by application of \(f_i^k\) for \(0 \leq k \leq r\).
  • If \(r < 0\), this returns the opposite of the sum of the elements obtained by application of \(e_i^k\) for \(0 < k < -r\).

REFERENCES:

[L1995]Peter Littelmann, Crystal graphs and Young tableaux, J. Algebra 175 (1995), no. 1, 65–87.
[K1993]Masaki Kashiwara, The crystal base and Littelmann’s refined Demazure character formula, Duke Math. J. 71 (1993), no. 3, 839–858.

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t = T(rows=[[1,2],[2]])
sage: t.demazure_operator_simple(2)
B[[[1, 2], [2]]] + B[[[1, 3], [2]]] + B[[[1, 3], [3]]]
sage: t.demazure_operator_simple(2).parent()
Free module generated by The crystal of tableaux of type ['A', 2] and shape(s) [[2, 1]] over Integer Ring

sage: t.demazure_operator_simple(1)
0

sage: K = crystals.KirillovReshetikhin(['A',2,1],2,1)
sage: t = K(rows=[[3],[2]])
sage: t.demazure_operator_simple(0)
B[[[2, 3]]] + B[[[1, 2]]]

TESTS:

sage: K = crystals.KirillovReshetikhin(['A',2,1],1,1)
sage: x = K.an_element(); x
[[1]]
sage: x.demazure_operator_simple(0)
0
sage: x.demazure_operator_simple(0, ring = QQ).parent()
Free module generated by Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1) over Rational Field
epsilon(i)

Return \(\varepsilon_i\) of self.

EXAMPLES:

sage: C = crystals.Letters(['A',5])
sage: C(1).epsilon(1)
0
sage: C(2).epsilon(1)
1
phi(i)

Return \(\varphi_i\) of self.

EXAMPLES:

sage: C = crystals.Letters(['A',5])
sage: C(1).phi(1)
1
sage: C(2).phi(1)
0
stembridgeDel_depth(i, j)

Return the difference in the \(j\)-depth of self and \(f_i\) of self, where \(i\) and \(j\) are in the index set of the underlying crystal. This function is useful for checking the Stembridge local axioms for crystal bases.

The \(i\)-depth of a crystal node \(x\) is \(\varepsilon_i(x)\).

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t=T(rows=[[1,1],[2]])
sage: t.stembridgeDel_depth(1,2)
0
sage: s=T(rows=[[1,3],[3]])
sage: s.stembridgeDel_depth(1,2)
-1
stembridgeDel_rise(i, j)

Return the difference in the \(j\)-rise of self and \(f_i\) of self, where \(i\) and \(j\) are in the index set of the underlying crystal. This function is useful for checking the Stembridge local axioms for crystal bases.

The \(i\)-rise of a crystal node \(x\) is \(\varphi_i(x)\).

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t=T(rows=[[1,1],[2]])
sage: t.stembridgeDel_rise(1,2)
-1
sage: s=T(rows=[[1,3],[3]])
sage: s.stembridgeDel_rise(1,2)
0
stembridgeDelta_depth(i, j)

Return the difference in the \(j\)-depth of self and \(e_i\) of self, where \(i\) and \(j\) are in the index set of the underlying crystal. This function is useful for checking the Stembridge local axioms for crystal bases.

The \(i\)-depth of a crystal node \(x\) is \(-\varepsilon_i(x)\).

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t=T(rows=[[1,2],[2]])
sage: t.stembridgeDelta_depth(1,2)
0
sage: s=T(rows=[[2,3],[3]])
sage: s.stembridgeDelta_depth(1,2)
-1
stembridgeDelta_rise(i, j)

Return the difference in the \(j\)-rise of self and \(e_i\) of self, where \(i\) and \(j\) are in the index set of the underlying crystal. This function is useful for checking the Stembridge local axioms for crystal bases.

The \(i\)-rise of a crystal node \(x\) is \(\varphi_i(x)\).

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t=T(rows=[[1,2],[2]])
sage: t.stembridgeDelta_rise(1,2)
-1
sage: s=T(rows=[[2,3],[3]])
sage: s.stembridgeDelta_rise(1,2)
0
stembridgeTriple(i, j)

Let \(A\) be the Cartan matrix of the crystal, \(x\) a crystal element, and let \(i\) and \(j\) be in the index set of the crystal. Further, set b=stembridgeDelta_depth(x,i,j), and c=stembridgeDelta_rise(x,i,j)). If x.e(i) is non-empty, this function returns the triple \(( A_{ij}, b, c )\); otherwise it returns None. By the Stembridge local characterization of crystal bases, one should have \(A_{ij}=b+c\).

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: t=T(rows=[[1,1],[2]])
sage: t.stembridgeTriple(1,2)
sage: s=T(rows=[[1,2],[2]])
sage: s.stembridgeTriple(1,2)
(-1, 0, -1)

sage: T = crystals.Tableaux(['B',2], shape=[2,1])
sage: t=T(rows=[[1,2],[2]])
sage: t.stembridgeTriple(1,2)
(-2, 0, -2)
sage: s=T(rows=[[-1,-1],[0]])
sage: s.stembridgeTriple(1,2)
(-2, -2, 0)
sage: u=T(rows=[[0,2],[1]])
sage: u.stembridgeTriple(1,2)
(-2, -1, -1)
weight()

Return the weight of this crystal element.

EXAMPLES:

sage: C = crystals.Letters(['A',5])
sage: C(1).weight()
(1, 0, 0, 0, 0, 0)
class RegularCrystals.ParentMethods
demazure_operator(element, reduced_word)

Returns the application of Demazure operators \(D_i\) for \(i\) from reduced_word on element.

INPUT:

  • element – an element of a free module indexed by the underlying crystal
  • reduced_word – a reduced word of the Weyl group of the same type as the underlying crystal

OUTPUT:

  • an element of the free module indexed by the underlying crystal

EXAMPLES:

sage: T = crystals.Tableaux(['A',2], shape=[2,1])
sage: C = CombinatorialFreeModule(QQ,T)
sage: t = T.highest_weight_vector()
sage: b = 2*C(t)
sage: T.demazure_operator(b,[1,2,1])
2*B[[[1, 1], [2]]] + 2*B[[[1, 2], [2]]] + 2*B[[[1, 3], [2]]] + 2*B[[[1, 1], [3]]]
+ 2*B[[[1, 2], [3]]] + 2*B[[[1, 3], [3]]] + 2*B[[[2, 2], [3]]] + 2*B[[[2, 3], [3]]]

The Demazure operator is idempotent:

sage: T = crystals.Tableaux("A1",shape=[4])
sage: C = CombinatorialFreeModule(QQ,T)
sage: b = C(T.module_generators[0]); b
B[[[1, 1, 1, 1]]]
sage: e = T.demazure_operator(b,[1]); e
B[[[1, 1, 1, 1]]] + B[[[1, 1, 1, 2]]] + B[[[1, 1, 2, 2]]] + B[[[1, 2, 2, 2]]] + B[[[2, 2, 2, 2]]]
sage: e == T.demazure_operator(e,[1])
True

sage: all(T.demazure_operator(T.demazure_operator(C(t),[1]),[1]) == T.demazure_operator(C(t),[1]) for t in T)
True
class RegularCrystals.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]
RegularCrystals.additional_structure()

Return None.

Indeed, the category of regular crystals defines no new structure: it only relates \(\varepsilon_a\) and \(\varphi_a\) to \(e_a\) and \(f_a\) respectively.

Todo

Should this category be a CategoryWithAxiom?

EXAMPLES:

sage: RegularCrystals().additional_structure()
RegularCrystals.example(n=3)

Returns an example of highest weight crystals, as per Category.example().

EXAMPLES:

sage: B = RegularCrystals().example(); B
Highest weight crystal of type A_3 of highest weight omega_1
RegularCrystals.super_categories()

EXAMPLES:

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

Previous topic

Quotient fields

Next topic

Right modules

This Page