### Navigation

- index
- modules |
- next |
- previous |
- Category Theory »

# Classical Crystals

class `sage.categories.classical_crystals.``ClassicalCrystals`(s=None)

  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 regular crystals,
       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 = ClassicalCrystals().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_reflexive() . . . pass
      running ._test_elements_eq_symmetric() . . . pass
      running ._test_elements_eq_transitive() . . . pass
      running ._test_elements_neq() . . . 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

  class `ElementMethods`
    `lusztig_involution`()

      Return the Lusztig involution on the classical highest weight crystal `self`.

      The Lusztig involution on a finite-dimensional highest weight crystal \(B(\lambda)\) of highest weight \(\lambda\) maps the highest weight vector to the lowest weight vector and the Kashiwara operator \(f_i\) to \(e_{i^*}\), where \(i^*\) is defined as \(\alpha_{i^*} = -w_0(\alpha_i)\). Here \(w_0\) is the longest element of the Weyl group acting on the \(i\)-th simple root \(\alpha_i\).

      EXAMPLES:

          sage: B = crystals.Tableaux(['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 = crystals.Tableaux(['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 = crystals.Tableaux(['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 = crystals.HighestWeight(La[1])
          sage: t = T[3]; t
          [(-4, 2, 5)]
          sage: t.lusztig_involution()
          [(-2, -3, 4)]

  class `ClassicalCrystals.``ParentMethods`
    `cardinality`()

      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

    `character`(R=None)

      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 = crystals.Tableaux("A2", shape=[2,1])
          sage: chi = C.character(); chi
          A2(2,1,0)

          sage: T = crystals.TensorProduct(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

    `demazure_character`(w, f=None)

      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 \(D_w\) (see `sage.categories.regular_crystals.RegularCrystals.ParentMethods.demazure_operator()`) to the highest weight element of the classical crystal. The simple Demazure operators \(D_i\) (see `sage.categories.regular_crystals.RegularCrystals.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 = crystals.Tableaux(['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*x2^2 + x1^2*x3 + x1*x2*x3 + x1*x3^2

          sage: T = crystals.Tableaux(['A',3],shape=[2,1])
          sage: T.demazure_character([1,2,3])
          x1^2*x2 + x1*x2^2 + x1^2*x3 + 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*x2^2 + x1^2*x3 + x1*x2*x3 + x2^2*x3

          sage: T = crystals.Tableaux(['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 = crystals.Tableaux("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

    `opposition_automorphism`()

      Deprecated in trac ticket #15560. Use the corresponding method in Cartan type.

      EXAMPLES:

          sage: T = crystals.Tableaux(['A',5],shape=[1])
          sage: T.opposition_automorphism()
          doctest:...: DeprecationWarning: opposition_automorphism is deprecated.
          Use opposition_automorphism from the Cartan type instead.
          See http://trac.sagemath.org/15560 for details.
          Finite family {1: 5, 2: 4, 3: 3, 4: 2, 5: 1}

  class `ClassicalCrystals.``TensorProducts`(category, *args)

    Bases: `sage.categories.tensor.TensorProductsCategory`

    The category of classical crystals constructed by tensor product of classical crystals.

    `extra_super_categories`()

      EXAMPLES:

          sage: ClassicalCrystals().TensorProducts().extra_super_categories()
          [Category of classical crystals]

  `ClassicalCrystals.``additional_structure`()

    Return `None`.

    Indeed, the category of classical crystals defines no additional structure: it only states that its objects are \(U_q(\mathfrak{g})\)-crystals, where \(\mathfrak{g}\) is of finite type.

    See also

    `Category.additional_structure()`

    EXAMPLES:

        sage: ClassicalCrystals().additional_structure()

  `ClassicalCrystals.``example`(n=3)

    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

  `ClassicalCrystals.``super_categories`()

    EXAMPLES:

        sage: ClassicalCrystals().super_categories()
        [Category of regular crystals,
         Category of finite crystals,
         Category of highest weight crystals]

### Navigation

- index
- modules |
- next |
- previous |
- Category Theory »