Affine Crystals

class sage.combinat.crystals.affine.AffineCrystalFromClassical(cartan_type, classical_crystal, category=None)

Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent

This abstract class can be used for affine crystals that are constructed from a classical crystal. The zero arrows can be implemented using different methods (for example using a Dynkin diagram automorphisms or virtual crystals).

This is a helper class, mostly used to implement Kirillov-Reshetikhin crystals (see: sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhin()).

For general information about crystals see sage.combinat.crystals.

INPUT:

  • cartan_type - The Cartan type of the resulting affine crystal
  • classical_crystal - instance of a classical crystal.

EXAMPLES:

sage: n=2
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: A.list()
[[[1]], [[2]], [[3]]]
sage: A.cartan_type()
['A', 2, 1]
sage: A.index_set()
[0, 1, 2]
sage: b=A(rows=[[1]])
sage: b.weight()
-Lambda[0] + Lambda[1]
sage: b.classical_weight()
(1, 0, 0)
sage: [x.s(0) for x in A.list()]
[[[3]], [[2]], [[1]]]
sage: [x.s(1) for x in A.list()]
[[[2]], [[1]], [[3]]]
Element
alias of AffineCrystalFromClassicalElement
lift(affine_elt)

Lifts an affine crystal element to the corresponding classical crystal element

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A.list()[0]
sage: A.lift(b)
[[1]]
sage: A.lift(b).parent()
The crystal of tableaux of type ['A', 2] and shape(s) [[1]]
list()

Returns the list of all crystal elements using the underlying classical crystal

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: A.list()
[[[1]], [[2]], [[3]]]
retract(classical_elt)

Transforms a classical crystal element to the corresponding affine crystal element

EXAMPLES:

sage: n=2
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: t=C(rows=[[1]])
sage: t.parent()
The crystal of tableaux of type ['A', 2] and shape(s) [[1]]
sage: A.retract(t)
[[1]]
sage: A.retract(t).parent() is A
True
class sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotion(cartan_type, classical_crystal, p_automorphism, p_inverse_automorphism, dynkin_node)

Bases: sage.combinat.crystals.affine.AffineCrystalFromClassical

Crystals that are constructed from a classical crystal and a Dynkin diagram automorphism \sigma. In type A_n, the Dynkin diagram automorphism is i \to i+1 \pmod n+1 and the corresponding map on the crystal is the promotion operation \mathrm{pr} on tableaux. The affine crystal operators are given by f_0= \mathrm{pr}^{-1} f_{\sigma(0)} \mathrm{pr}.

INPUT:

  • cartan_type - The Cartan type of the resulting affine crystal
  • classical_crystal - instance of a classical crystal.
  • automorphism, inverse_automorphism - A function on the elements of the classical_crystal
  • dynkin_node - Integer specifying the classical node in the image of the zero node under the automorphism sigma.

EXAMPLES:

sage: n=2
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: A.list()
[[[1]], [[2]], [[3]]]
sage: A.cartan_type()
['A', 2, 1]
sage: A.index_set()
[0, 1, 2]
sage: b=A(rows=[[1]])
sage: b.weight()
-Lambda[0] + Lambda[1]
sage: b.classical_weight()
(1, 0, 0)
sage: [x.s(0) for x in A.list()]
[[[3]], [[2]], [[1]]]
sage: [x.s(1) for x in A.list()]
[[[2]], [[1]], [[3]]]
Element
alias of AffineCrystalFromClassicalAndPromotionElement
automorphism(x)

Gives the analogue of the affine Dynkin diagram automorphism on the level of crystals

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A.list()[0]
sage: A.automorphism(b)
[[2]]
inverse_automorphism(x)

Gives the analogue of the inverse of the affine Dynkin diagram automorphism on the level of crystals

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A.list()[0]
sage: A.inverse_automorphism(b)
[[3]]
class sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement(value, parent)

Bases: sage.combinat.crystals.affine.AffineCrystalFromClassicalElement

Elements of crystals that are constructed from a classical crystal and a Dynkin diagram automorphism. In type A, the automorphism is the promotion operation on tableaux.

This class is not instantiated directly but rather __call__ed from AffineCrystalFromClassicalAndPromotion. The syntax of this is governed by the (classical) CrystalOfTableaux.

Since this class inherits from AffineClassicalFromClassicalElement, the methods that need to be implemented are e0, f0 and possibly epsilon0 and phi0 if more efficient algorithms exist.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[1]])
sage: b._repr_()
'[[1]]'
e0()

Implements e_0 using the automorphism as e_0 = \operatorname{pr}^{-1} e_{dynkin_node} \operatorname{pr}

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[1]])
sage: b.e0()
[[3]]
epsilon0()

Implements epsilon_0 using the automorphism.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: [x.epsilon0() for x in A.list()]
[1, 0, 0]
f0()

Implements f_0 using the automorphism as f_0 = \operatorname{pr}^{-1} f_{dynkin_node} \operatorname{pr}

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[3]])
sage: b.f0()
[[1]]
phi0()

Implements phi_0 using the automorphism.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: [x.phi0() for x in A.list()]
[0, 0, 1]
class sage.combinat.crystals.affine.AffineCrystalFromClassicalElement(value, parent)

Bases: sage.structure.element_wrapper.ElementWrapper

Elements of crystals that are constructed from a classical crystal. The elements inherit many of their methods from the classical crystal using lift and retract.

This class is not instantiated directly but rather __call__ed from AffineCrystalFromClassical. The syntax of this is governed by the (classical) CrystalOfTableaux.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[1]])
sage: b._repr_()
'[[1]]'
classical_weight()

Returns the classical weight corresponding to self.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[1]])
sage: b.classical_weight()
(1, 0, 0)
e(i)

Returns the action of e_i on self.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[1]])
sage: b.e(0)
[[3]]
sage: b.e(1)
e0()
Assumes that e_0 is implemented separately.
epsilon(i)

Returns the maximal time the crystal operator e_i can be applied to self.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: [x.epsilon(0) for x in A.list()]
[1, 0, 0]
sage: [x.epsilon(1) for x in A.list()]
[0, 1, 0]
epsilon0()
Uses epsilon_0 from the super class, but should be implemented if a faster implementation exists.
f(i)

Returns the action of f_i on self.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A(rows=[[3]])
sage: b.f(0)
[[1]]
sage: b.f(2)
f0()
Assumes that f_0 is implemented separately.
lift()

Lifts an affine crystal element to the corresponding classical crystal element

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: b=A.list()[0]
sage: b.lift()
[[1]]
sage: b.lift().parent()
The crystal of tableaux of type ['A', 2] and shape(s) [[1]]
phi(i)

Returns the maximal time the crystal operator f_i can be applied to self.

EXAMPLES:

sage: n=2 
sage: C=CrystalOfTableaux(['A',n],shape=[1])
sage: pr = attrcall("promotion")
sage: pr_inverse = attrcall("promotion_inverse")
sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
sage: [x.phi(0) for x in A.list()]
[0, 0, 1]
sage: [x.phi(1) for x in A.list()]
[1, 0, 0]
phi0()
Uses phi_0 from the super class, but should be implemented if a faster implementation exists.
pp()

Method for pretty printing

EXAMPLES:

sage: K = KirillovReshetikhinCrystal(['D',3,2],1,1)
sage: t=K(rows=[[1]])
sage: t.pp()
1

Previous topic

Crystals

Next topic

Crystals

This Page