### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »

# Kyoto Path Model for Affine Highest Weight Crystals

class `sage.combinat.crystals.kyoto_path_model.``KyotoPathModel`(crystals, weight)

  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 \(\mathfrak{g}\) of affine Cartan type \(X\), and we want to model the \(U_q(\mathfrak{g})\)-crystal \(B(\lambda)\). First we consider the set of fundamental weights \(\{\Lambda_i\}_{i \in I}\) of \(\mathfrak{g}\) and let \(\{\overline{\Lambda}_i\}_{i \in I_0}\) be the corresponding fundamental weights of the corresponding classical Lie algebra \(\mathfrak{g}_0\). To model \(B(\lambda)\), we start with a sequence of perfect \(U_q^{\prime}(\mathfrak{g})\)-crystals \((B^{(i)})_i\) of level \(l\) such that

  \[\lambda \in \overline{P}_l^+ = \left\{ \mu \in \overline{P}^+ \mid \langle c, \mu \rangle = l \right\}\]

  where \(c\) is the canonical central element of \(U_q(\mathfrak{g})\) and \(\overline{P}^+\) is the nonnegative weight lattice spanned by \(\{ \overline{\Lambda}_i \mid i \in I \}\).

  Next we consider the crystal isomorphism \(\Phi_0 : B(\lambda_0) \to B^{(0)} \otimes B(\lambda_1)\) defined by \(u_{\lambda_0} \mapsto b^{(0)}_{\lambda_0} \otimes u_{\lambda_1}\) where \(b^{(0)}_{\lambda_0}\) is the unique element in \(B^{(0)}\) such that \(\varphi\left( b^{(0)}_{\lambda_0} \right) = \lambda_0\) and \(\lambda_1 = \varepsilon\left( b^{(0)}_{\lambda_0} \right)\) and \(u_{\mu}\) is the highest weight element in \(B(\mu)\). Iterating this, we obtain the following isomorphism:

  \[\Phi_n : B(\lambda) \to B^{(0)} \otimes B^{(1)} \otimes \cdots \otimes B^{(N)} \otimes B(\lambda_{N+1}).\]

  We note by Lemma 10.6.2 in [HK02] that for any \(b \in B(\lambda)\) there exists a finite \(N\) such that

  \[\Phi_N(b) = \left( \bigotimes_{k=0}^{N-1} b^{(k)} \right) \otimes u_{\lambda_N}.\]

  Therefore we can model elements \(b \in B(\lambda)\) as a \(U_q^{\prime}(\mathfrak{g})\)-crystal by considering an infinite list of elements \(b^{(k)} \in B^{(k)}\) and defining the crystal structure by:

  \[\begin{split}\begin{aligned} \overline{\mathrm{wt}}(b) & = \lambda_N + \sum_{k=0}^{N-1} \overline{\mathrm{wt}}\left( b^{(k)} \right) \\ e_i(b) & = e_i\left( b^{\prime} \otimes b^{(N)} \right) \otimes u_{\lambda_N}, \\ f_i(b) & = f_i\left( b^{\prime} \otimes b^{(N)} \right) \otimes u_{\lambda_N}, \\ \varepsilon_i(b) & = \max\left( \varepsilon_i(b^{\prime}) - \varphi_i\left( b^{(N)} \right), 0 \right), \\ \varphi_i(b) & = \varphi_i(b^{\prime}) + \max\left( \varphi_i\left( b^{(N)} \right) - \varepsilon_i(b^{\prime}), 0 \right), \end{aligned}\end{split}\]

  where \(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\).

  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:

  - `B` – A single or list of \(U_q^{\prime}\) perfect crystal(s) of level \(l\)
  - `weight` – A weight in \(\overline{P}_l^+\)

  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 \(A_5^{(2)}\):

      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 \(D_3^{(2)}\):

      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]]]

  class `Element`(parent, list)

    Bases: `sage.combinat.crystals.tensor_product.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: 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

    `epsilon`(i)

      Return \(\varepsilon_i\) 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]

    `f`(i)

      Return the action of \(f_i\) 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]]]

    `phi`(i)

      Return \(\varphi_i\) 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`(k=None)

      Truncate `self` to have length `k` 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 in `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: 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]]]

  `KyotoPathModel.``finite_tensor_product`(k)

    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)]

### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »