Bases: sage.combinat.crystals.tensor_product.TensorProductOfCrystals
The Kyoto path model for an affine highest weight crystal.
Note
Here we are using anti-Kashiwara notation and might differ from some of the literature.
Consider a Kac–Moody algebra of affine Cartan type
,
and we want to model the
-crystal
.
First we consider the set of fundamental weights
of
and let
be the
corresponding fundamental weights of the corresponding classical Lie
algebra
. To model
, we start with a sequence
of perfect
-crystals
of level
such that
where is the canonical central element of
and
is the nonnegative weight lattice spanned by
.
Next we consider the crystal isomorphism defined by
where
is the unique element in
such that
and
and
is the highest weight element in
. Iterating this, we
obtain the following isomorphism:
We note by Lemma 10.6.2 in [HK02] that for any there
exists a finite
such that
Therefore we can model elements as a
-crystal by considering an infinite list of
elements
and defining the crystal structure by:
where . To
translate this into a finite list, we consider a finite sequence
and if
then we take the image as . Similarly
we remove
if we have
. Additionally if
then we consider this to be .
REFERENCES:
[HK02] | Introduction to Quantum Groups and Crystal Bases. Jin Hong and Seok-Jin Kang. 2002. Volume 42. Graduate Studies in Mathematics. American Mathematical Society. |
INPUT:
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]; mg
[[[3]]]
sage: mg.f_string([0,1,2,2])
[[[3]], [[3]], [[1]]]
An example of type :
sage: B = crystals.KirillovReshetikhin(['A',5,2], 1,1)
sage: L = RootSystem(['A',5,2]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]; mg
[[[-1]]]
sage: mg.f_string([0,2,1,3])
[[[-3]], [[2]], [[-1]]]
sage: mg.f_string([0,2,3,1])
[[[-3]], [[2]], [[-1]]]
An example of type :
sage: B = crystals.KirillovReshetikhin(['D',3,2], 1,1)
sage: L = RootSystem(['D',3,2]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]; mg
[[]]
sage: mg.f_string([0,1,2,0])
[[[0]], [[1]], []]
An example using multiple crystals of the same level:
sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel([B1, B2, B1], L.fundamental_weight(0))
sage: mg = C.module_generators[0]; mg
[[[3]]]
sage: mg.f_string([0,1,2,2])
[[[3]], [[1], [3]], [[3]]]
sage: mg.f_string([0,1,2,2,2])
sage: mg.f_string([0,1,2,2,1,0])
[[[3]], [[2], [3]], [[1]], [[2]]]
sage: mg.f_string([0,1,2,2,1,0,0,2])
[[[3]], [[1], [2]], [[1]], [[3]], [[1], [3]]]
Bases: sage.combinat.crystals.tensor_product.TensorProductOfRegularCrystalsElement
An element in the Kyoto path model.
Return the action of on self.
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]
sage: all(mg.e(i) is None for i in C.index_set())
True
sage: mg.f(0).e(0) == mg
True
Return of self.
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]
sage: [mg.epsilon(i) for i in C.index_set()]
[0, 0, 0]
sage: elt = mg.f(0)
sage: [elt.epsilon(i) for i in C.index_set()]
[1, 0, 0]
sage: elt = mg.f_string([0,1,2])
sage: [elt.epsilon(i) for i in C.index_set()]
[0, 0, 1]
sage: elt = mg.f_string([0,1,2,2])
sage: [elt.epsilon(i) for i in C.index_set()]
[0, 0, 2]
Return the action of on self.
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]
sage: mg.f(2)
sage: mg.f(0)
[[[1]], [[2]]]
sage: mg.f_string([0,1,2])
[[[2]], [[3]], [[1]]]
Return of self.
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: L = RootSystem(['A',2,1]).weight_lattice()
sage: C = crystals.KyotoPathModel(B, L.fundamental_weight(0))
sage: mg = C.module_generators[0]
sage: [mg.phi(i) for i in C.index_set()]
[1, 0, 0]
sage: elt = mg.f(0)
sage: [elt.phi(i) for i in C.index_set()]
[0, 1, 1]
sage: elt = mg.f_string([0,1])
sage: [elt.phi(i) for i in C.index_set()]
[0, 0, 2]
Truncate self to have length k and return as an element in a (finite) tensor product of crystals.
INPUT:
EXAMPLES:
sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
sage: C = crystals.KyotoPathModel([B1,B2,B1], La[0])
sage: mg = C.highest_weight_vector()
sage: elt = mg.f_string([0,1,2,2,1,0]); elt
[[[3]], [[2], [3]], [[1]], [[2]]]
sage: t = elt.truncate(); t
[[[3]], [[2], [3]], [[1]], [[2]]]
sage: t.parent() is C.finite_tensor_product(4)
True
sage: elt.truncate(2)
[[[3]], [[2], [3]]]
sage: elt.truncate(10)
[[[3]], [[2], [3]], [[1]], [[2]], [[1], [3]],
[[2]], [[1]], [[2], [3]], [[1]], [[3]]]
Return the finite tensor product of crystals of length k from truncating self.
EXAMPLES:
sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
sage: C = crystals.KyotoPathModel([B1,B2,B1], La[0])
sage: C.finite_tensor_product(5)
Full tensor product of the crystals
[Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1),
Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1)]