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

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

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

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

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


#### Previous topic

Crystals of Modified Nakajima Monomials

#### Next topic

Tensor Products of Crystals