### Navigation

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

# Spin Crystals

These are the crystals associated with the three spin representations: the spin representations of odd orthogonal groups (or rather their double covers); and the \(+\) and \(-\) spin representations of the even orthogonal groups.

We follow Kashiwara and Nakashima (Journal of Algebra 165, 1994) in representing the elements of the spin crystal by sequences of signs \(\pm\).

`sage.combinat.crystals.spins.``CrystalOfSpins`(ct)

  Return the spin crystal of the given type \(B\).

  This is a combinatorial model for the crystal with highest weight \(Lambda_n\) (the \(n\)-th fundamental weight). It has \(2^n\) elements, here called Spins. See also `CrystalOfLetters()`, `CrystalOfSpinsPlus()`, and `CrystalOfSpinsMinus()`.

  INPUT:

  - `['B', n]` - A Cartan type \(B_n\).

  EXAMPLES:

      sage: C = crystals.Spins(['B',3])
      sage: C.list()
      [+++, ++-, +-+, -++, +--, -+-, --+, ---]
      sage: C.cartan_type()
      ['B', 3]

      sage: [x.signature() for x in C]
      ['+++', '++-', '+-+', '-++', '+--', '-+-', '--+', '---']

  TESTS:

      sage: crystals.TensorProduct(C,C,generators=[[C.list()[0],C.list()[0]]]).cardinality()
      35

`sage.combinat.crystals.spins.``CrystalOfSpinsMinus`(ct)

  Return the minus spin crystal of the given type D.

  This is the crystal with highest weight \(Lambda_{n-1}\) (the \((n-1)\)-st fundamental weight).

  INPUT:

  - `['D', n]` - A Cartan type \(D_n\).

  EXAMPLES:

      sage: E = crystals.SpinsMinus(['D',4])
      sage: E.list()
      [+++-, ++-+, +-++, -+++, +---, -+--, --+-, ---+]
      sage: [x.signature() for x in E]
      ['+++-', '++-+', '+-++', '-+++', '+---', '-+--', '--+-', '---+']

  TESTS:

      sage: len(crystals.TensorProduct(E,E,generators=[[E[0],E[0]]]).list())
      35
      sage: D = crystals.SpinsPlus(['D',4])
      sage: len(crystals.TensorProduct(D,E,generators=[[D.list()[0],E.list()[0]]]).list())
      56

`sage.combinat.crystals.spins.``CrystalOfSpinsPlus`(ct)

  Return the plus spin crystal of the given type D.

  This is the crystal with highest weight \(Lambda_n\) (the \(n\)-th fundamental weight).

  INPUT:

  - `['D', n]` - A Cartan type \(D_n\).

  EXAMPLES:

      sage: D = crystals.SpinsPlus(['D',4])
      sage: D.list()
      [++++, ++--, +-+-, -++-, +--+, -+-+, --++, ----]

      sage: [x.signature() for x in D]
      ['++++', '++--', '+-+-', '-++-', '+--+', '-+-+', '--++', '----']

  TESTS:

      sage: TestSuite(D).run()

class `sage.combinat.crystals.spins.``GenericCrystalOfSpins`(ct, element_class, case)

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

  A generic crystal of spins.

  `digraph`()

    Return the directed graph associated to `self`.

    EXAMPLES:

        sage: crystals.Spins(['B',3]).digraph()
        Digraph on 8 vertices

  `list`()

    Return a list of the elements of `self`.

    EXAMPLES:

        sage: crystals.Spins(['B',3]).list()
        [+++, ++-, +-+, -++, +--, -+-, --+, ---]

  `lt_elements`(x, y)

    Return `True` if and only if there is a path from `x` to `y` in the crystal graph.

    Because the crystal graph is classical, it is a directed acyclic graph which can be interpreted as a poset. This function implements the comparison function of this poset.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: x = C([1,1,1])
        sage: y = C([-1,-1,-1])
        sage: C.lt_elements(x,y)
        True
        sage: C.lt_elements(y,x)
        False
        sage: C.lt_elements(x,x)
        False

class `sage.combinat.crystals.spins.``Spin`

  Bases: `sage.combinat.crystals.letters.LetterTuple`

  A spin letter in the crystal of spins.

  EXAMPLES:

      sage: C = crystals.Spins(['B',3])
      sage: c = C([1,1,1])
      sage: TestSuite(c).run()

      sage: C([1,1,1]).parent()
      The crystal of spins for type ['B', 3]

      sage: c = C([1,1,1])
      sage: c._repr_()
      '+++'

      sage: D = crystals.Spins(['B',4])
      sage: a = C([1,1,1])
      sage: b = C([-1,-1,-1])
      sage: c = D([1,1,1,1])
      sage: a == a
      True
      sage: a == b
      False
      sage: b == c
      False

  `epsilon`(i)

    Return \(\varepsilon_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: [[C[m].epsilon(i) for i in range(1,4)] for m in range(8)]
        [[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0],
         [0, 0, 1], [1, 0, 1], [0, 1, 0], [0, 0, 1]]

  `phi`(i)

    Return \(\varphi_i\) of `self`.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: [[C[m].phi(i) for i in range(1,4)] for m in range(8)]
        [[0, 0, 1], [0, 1, 0], [1, 0, 1], [0, 0, 1],
         [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]]

  `pp`()

    Pretty print `self` as a column.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: b = C([1,1,-1])
        sage: b.pp()
        +
        +
        -

  `signature`()

    Return the signature of `self`.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: C([1,1,1]).signature()
        '+++'
        sage: C([1,1,-1]).signature()
        '++-'

class `sage.combinat.crystals.spins.``Spin_crystal_type_B_element`

  Bases: `sage.combinat.crystals.spins.Spin`

  Type B spin representation crystal element

  `e`(i)

    Returns the action of \(e_i\) on self.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: [[C[m].e(i) for i in range(1,4)] for m in range(8)]
        [[None, None, None], [None, None, +++], [None, ++-, None], [+-+, None, None],
        [None, None, +-+], [+--, None, -++], [None, -+-, None], [None, None, --+]]

  `f`(i)

    Returns the action of \(f_i\) on self.

    EXAMPLES:

        sage: C = crystals.Spins(['B',3])
        sage: [[C[m].f(i) for i in range(1,4)] for m in range(8)]
        [[None, None, ++-], [None, +-+, None], [-++, None, +--], [None, None, -+-],
        [-+-, None, None], [None, --+, None], [None, None, ---], [None, None, None]]

class `sage.combinat.crystals.spins.``Spin_crystal_type_D_element`

  Bases: `sage.combinat.crystals.spins.Spin`

  Type D spin representation crystal element

  `e`(i)

    Returns the action of \(e_i\) on self.

    EXAMPLES:

        sage: D = crystals.SpinsPlus(['D',4])
        sage: [[D.list()[m].e(i) for i in range(1,4)] for m in range(8)]
        [[None, None, None], [None, None, None], [None, ++--, None], [+-+-, None, None],
        [None, None, +-+-], [+--+, None, -++-], [None, -+-+, None], [None, None, None]]

        sage: E = crystals.SpinsMinus(['D',4])
        sage: [[E[m].e(i) for i in range(1,4)] for m in range(8)]
        [[None, None, None], [None, None, +++-], [None, ++-+, None], [+-++, None, None],
        [None, None, None], [+---, None, None], [None, -+--, None], [None, None, --+-]]

  `f`(i)

    Returns the action of \(f_i\) on self.

    EXAMPLES:

        sage: D = crystals.SpinsPlus(['D',4])
        sage: [[D.list()[m].f(i) for i in range(1,4)] for m in range(8)]
        [[None, None, None], [None, +-+-, None], [-++-, None, +--+], [None, None, -+-+],
        [-+-+, None, None], [None, --++, None], [None, None, None], [None, None, None]]

        sage: E = crystals.SpinsMinus(['D',4])
        sage: [[E[m].f(i) for i in range(1,4)] for m in range(8)]
        [[None, None, ++-+], [None, +-++, None], [-+++, None, None], [None, None, None],
        [-+--, None, None], [None, --+-, None], [None, None, ---+], [None, None, None]]

### Navigation

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