Bases: sage.categories.category_singleton.Category_singleton
The category of classical crystals, that is crystals of finite Cartan type.
EXAMPLES:
sage: C = ClassicalCrystals()
sage: C
Category of classical crystals
sage: C.super_categories()
[Category of finite crystals, Category of highest weight crystals]
sage: C.example()
Highest weight crystal of type A_3 of highest weight omega_1
TESTS:
sage: TestSuite(C).run()
sage: B = FiniteCrystals().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() . . . 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
Returns the Lusztig involution on the classical highest weight crystal self.
The Lusztig involution on a finite-dimensional highest weight crystal of highest weight
maps the highest weight vector to the lowest weight vector and the Kashiwara operator
to
, where
is defined as
. Here
is the longest element
of the Weyl group acting on the
-th simple root
.
EXAMPLES:
sage: B = CrystalOfTableaux(['A',3],shape=[2,1])
sage: b = B(rows=[[1,2],[4]])
sage: b.lusztig_involution()
[[1, 4], [3]]
sage: b.to_tableau().schuetzenberger_involution(n=4)
[[1, 4], [3]]
sage: all(b.lusztig_involution().to_tableau() == b.to_tableau().schuetzenberger_involution(n=4) for b in B)
True
sage: B = CrystalOfTableaux(['D',4],shape=[1])
sage: [[b,b.lusztig_involution()] for b in B]
[[[[1]], [[-1]]], [[[2]], [[-2]]], [[[3]], [[-3]]], [[[4]], [[-4]]], [[[-4]],
[[4]]], [[[-3]], [[3]]], [[[-2]], [[2]]], [[[-1]], [[1]]]]
sage: B = CrystalOfTableaux(['D',3],shape=[1])
sage: [[b,b.lusztig_involution()] for b in B]
[[[[1]], [[-1]]], [[[2]], [[-2]]], [[[3]], [[3]]], [[[-3]], [[-3]]],
[[[-2]], [[2]]], [[[-1]], [[1]]]]
sage: C=CartanType(['E',6])
sage: La=C.root_system().weight_lattice().fundamental_weights()
sage: T = HighestWeightCrystal(La[1])
sage: t = T[3]; t
[[-4, 2, 5]]
sage: t.lusztig_involution()
[[-2, -3, 4]]
Returns the number of elements of the crystal, using Weyl’s dimension formula on each connected component.
EXAMPLES:
sage: C = ClassicalCrystals().example(5)
sage: C.cardinality()
6
Returns the character of this crystal.
INPUT:
- R – a WeylCharacterRing (default: the default WeylCharacterRing for this Cartan type)
Returns the character of self as an element of R.
EXAMPLES:
sage: C = CrystalOfTableaux("A2", shape=[2,1])
sage: chi = C.character(); chi
A2(2,1,0)
sage: T = TensorProductOfCrystals(C,C)
sage: chiT = T.character(); chiT
A2(2,2,2) + 2*A2(3,2,1) + A2(3,3,0) + A2(4,1,1) + A2(4,2,0)
sage: chiT == chi^2
True
One may specify an alternate WeylCharacterRing:
sage: R = WeylCharacterRing("A2", style="coroots")
sage: chiT = T.character(R); chiT
A2(0,0) + 2*A2(1,1) + A2(0,3) + A2(3,0) + A2(2,2)
sage: chiT in R
True
It should have the same cartan type and use the same realization of the weight lattice as self:
sage: R = WeylCharacterRing("A3", style="coroots")
sage: T.character(R)
Traceback (most recent call last):
...
ValueError: Weyl character ring does not have the right Cartan type
Returns the Demazure character associated to w.
INPUT:
- w – an element of the ambient weight lattice realization of the crystal, or a reduced word, or an element in the associated Weyl group
OPTIONAL:
- f – a function from the crystal to a module.
This is currently only supported for crystals whose underlying weight space is the ambient space.
The Demazure character is obtained by applying the Demazure operator
(see sage.categories.crystals.Crystals.ParentMethods.demazure_operator())
to the highest weight element of the classical crystal. The simple
Demazure operators
(see sage.categories.crystals.Crystals.ElementMethods.demazure_operator_simple())
do not braid on the level of crystals, but on the level of characters they do.
That is why it makes sense to input w either as a weight, a reduced word,
or as an element of the underlying Weyl group.
EXAMPLES:
sage: T = CrystalOfTableaux(['A',2], shape = [2,1])
sage: e = T.weight_lattice_realization().basis()
sage: weight = e[0] + 2*e[2]
sage: weight.reduced_word()
[2, 1]
sage: T.demazure_character(weight)
x1^2*x2 + x1^2*x3 + x1*x2^2 + x1*x2*x3 + x1*x3^2
sage: T = CrystalOfTableaux(['A',3],shape=[2,1])
sage: T.demazure_character([1,2,3])
x1^2*x2 + x1^2*x3 + x1*x2^2 + x1*x2*x3 + x2^2*x3
sage: W = WeylGroup(['A',3])
sage: w = W.from_reduced_word([1,2,3])
sage: T.demazure_character(w)
x1^2*x2 + x1^2*x3 + x1*x2^2 + x1*x2*x3 + x2^2*x3
sage: T = CrystalOfTableaux(['B',2], shape = [2])
sage: e = T.weight_lattice_realization().basis()
sage: weight = -2*e[1]
sage: T.demazure_character(weight)
x1^2 + x1*x2 + x2^2 + x1 + x2 + x1/x2 + 1/x2 + 1/x2^2 + 1
sage: T = CrystalOfTableaux("B2",shape=[1/2,1/2])
sage: b2=WeylCharacterRing("B2",base_ring=QQ).ambient()
sage: T.demazure_character([1,2],f=lambda x:b2(x.weight()))
b2(-1/2,1/2) + b2(1/2,-1/2) + b2(1/2,1/2)
REFERENCES:
.. [D1974] M. Demazure, Desingularisation des varietes de Schubert,
Ann. E. N. S., Vol. 6, (1974), p. 163-172
.. [M2009] Sarah Mason, An Explicit Construction of Type A Demazure Atoms,
Journal of Algebraic Combinatorics, Vol. 29, (2009), No. 3, p.295-313
(arXiv:0707.4267)
Returns the opposition automorphism
The opposition automorphism is the automorphism
of the vertices Dynkin diagram such that,
for
the longest element of the Weyl group, and any
simple root
, one has
.
The automorphism is returned as a dictionary.
EXAMPLES:
sage: T = CrystalOfTableaux(['A',5],shape=[1])
sage: T.opposition_automorphism()
{1: 5, 2: 4, 3: 3, 4: 2, 5: 1}
sage: T = CrystalOfTableaux(['D',4],shape=[1])
sage: T.opposition_automorphism()
{1: 1, 2: 2, 3: 3, 4: 4}
sage: T = CrystalOfTableaux(['D',5],shape=[1])
sage: T.opposition_automorphism()
{1: 1, 2: 2, 3: 3, 4: 5, 5: 4}
sage: T = CrystalOfTableaux(['C',4],shape=[1])
sage: T.opposition_automorphism()
{1: 1, 2: 2, 3: 3, 4: 4}
Returns an example of highest weight crystals, as per Category.example().
EXAMPLES:
sage: B = ClassicalCrystals().example(); B
Highest weight crystal of type A_3 of highest weight omega_1
EXAMPLES:
sage: ClassicalCrystals().super_categories()
[Category of finite crystals, Category of highest weight crystals]