Kyoto Path Model for Affine Highest Weight Crystals¶
-
class
sage.combinat.crystals.kyoto_path_model.
KyotoPathModel
(crystals, weight, P)¶ 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 g of affine Cartan type X, and we want to model the U′q(g)-crystal B(λ). First we consider the set of fundamental weights {Λi}i∈I of g and let {¯Λi}i∈I0 be the corresponding fundamental weights of the corresponding classical Lie algebra g0. To model B(λ), we start with a sequence of perfect U′q(g)-crystals (B(i))i of level l such that
λ∈¯P+l={μ∈¯P+∣⟨c,μ⟩=l}where c is the canonical central element of U′q(g) and ¯P+ is the nonnegative weight lattice spanned by {¯Λi∣i∈I}.
Next we consider the crystal isomorphism Φ0:B(λ0)→B(0)⊗B(λ1) defined by uλ0↦b(0)λ0⊗uλ1 where b(0)λ0 is the unique element in B(0) such that φ(b(0)λ0)=λ0 and λ1=ε(b(0)λ0) and uμ is the highest weight element in B(μ). Iterating this, we obtain the following isomorphism:
Φn:B(λ)→B(0)⊗B(1)⊗⋯⊗B(N)⊗B(λN+1).We note by Lemma 10.6.2 in [HK2002] that for any b∈B(λ) there exists a finite N such that
ΦN(b)=(N−1⨂k=0b(k))⊗uλN.Therefore we can model elements b∈B(λ) as a U′q(g)-crystal by considering an infinite list of elements b(k)∈B(k) and defining the crystal structure by:
¯wt(b)=λN+N−1∑k=0¯wt(b(k))ei(b)=ei(b′⊗b(N))⊗uλN,fi(b)=fi(b′⊗b(N))⊗uλN,εi(b)=maxwhere b^{\prime} = b^{(0)} \otimes \cdots \otimes b^{(N-1)}. To translate this into a finite list, we consider a finite sequence b^{(0)} \otimes \cdots \otimes b^{(N-1)} \otimes b^{(N)}_{\lambda_N} and if
f_i\left( b^{(0)} \otimes \cdots b^{(N-1)} \otimes b^{(N)}_{\lambda_N} \right) = b_0 \otimes \cdots \otimes b^{(N-1)} \otimes f_i\left( b^{(N)}_{\lambda_N} \right),then we take the image as b^{(0)} \otimes \cdots \otimes f_i\left( b^{(N)}_{\lambda_N}\right) \otimes b^{(N+1)}_{\lambda_{N+1}}. Similarly we remove b^{(N)}_{\lambda_{N}} if we have b_0 \otimes \cdots \otimes b^{(N-1)} \otimes b^{(N-1)}_{\lambda_{N-1}} \otimes b^{(N)}_{\lambda_N}. Additionally if
e_i\left( b^{(0)} \otimes \cdots \otimes b^{(N-1)} \otimes b^{(N)}_{\lambda_N} \right) = b^{(0)} \otimes \cdots \otimes b^{(N-1)} \otimes e_i\left( b^{(N)}_{\lambda_N} \right),then we consider this to be 0.
We can then lift the U_q'(\mathfrak{g})-crystal structure to a U_q(\mathfrak{g})-crystal structure by using a tensor product of the
affinization
of the of crystals B^{(i)} for all i.INPUT:
B
– a single or list of U_q^{\prime} perfect crystal(s) of level lweight
– a weight in \overline{P}_l^+
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[0]) sage: mg = C.module_generators[0]; mg [[[3]]] sage: mg.f_string([0,1,2,2]) [[[3]], [[3]], [[1]]] sage: x = mg.f_string([0,1,2]); x [[[2]], [[3]], [[1]]] sage: x.weight() Lambda[0]
An example of type A_5^{(2)}:
sage: B = crystals.KirillovReshetikhin(['A',5,2], 1,1) sage: La = RootSystem(['A',5,2]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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 D_3^{(2)}:
sage: B = crystals.KirillovReshetikhin(['D',3,2], 1,1) sage: La = RootSystem(['D',3,2]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel([B1, B2, B1], La[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]]]
By using the extended weight lattice, the Kyoto path model lifts the perfect crystals to their affinizations:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True) sage: La = P.fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[0]) sage: mg = C.module_generators[0]; mg [[[3]](0)] sage: x = mg.f_string([0,1,2]); x [[[2]](-1), [[3]](0), [[1]](0)] sage: x.weight() Lambda[0] - delta
-
class
Element
¶ Bases:
sage.combinat.crystals.tensor_product_element.TensorProductOfRegularCrystalsElement
An element in the Kyoto path model.
-
e
(i)¶ Return the action of e_i on
self
.EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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
-
epsilon
(i)¶ Return \varepsilon_i of
self
.EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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]
-
f
(i)¶ Return the action of f_i on
self
.EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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]]]
-
phi
(i)¶ Return \varphi_i of
self
.EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[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
(k=None)¶ Truncate
self
to have lengthk
and return as an element in a (finite) tensor product of crystals.INPUT:
k
– (optional) the length to truncate to; if not specified, then returns one more than the current non-ground-state elements (i.e. the current list inself
)
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]]]
-
weight
()¶ Return the weight of
self
.EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True) sage: La = P.fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[0]) sage: mg = C.module_generators[0] sage: mg.weight() Lambda[0] sage: mg.f_string([0,1,2]).weight() Lambda[0] - delta
-
-
finite_tensor_product
(k)¶ Return the finite tensor product of crystals of length
k
from truncatingself
.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)]
-
weight_lattice_realization
()¶ Return the weight lattice realization used to express weights.
EXAMPLES:
sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel(B, La[0]) sage: C.weight_lattice_realization() Weight lattice of the Root system of type ['A', 2, 1] sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True) sage: C = crystals.KyotoPathModel(B, P.fundamental_weight(0)) sage: C.weight_lattice_realization() Extended weight lattice of the Root system of type ['A', 2, 1]