# 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]
['+++', '++-', '+-+', '-++', '+--', '-+-', '--+', '---']

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]
['+++-', '++-+', '+-++', '-+++', '+---', '-+--', '--+-', '---+']

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]
['++++', '++--', '+-+-', '-++-', '+--+', '-+-+', '--++', '----']

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

A generic crystal of spins.

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: Element

A spin letter in the crystal of spins.

EXAMPLES:

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

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

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()
'++-'

value#

Return self as a tuple with $$+1$$ and $$-1$$.

EXAMPLES:

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

weight()#

Return the weight of self.

EXAMPLES:

sage: [v.weight() for v in crystals.Spins(['B',3])]
[(1/2, 1/2, 1/2), (1/2, 1/2, -1/2),
(1/2, -1/2, 1/2), (-1/2, 1/2, 1/2),
(1/2, -1/2, -1/2), (-1/2, 1/2, -1/2),
(-1/2, -1/2, 1/2), (-1/2, -1/2, -1/2)]

class sage.combinat.crystals.spins.Spin_crystal_type_B_element#

Bases: Spin

Type B spin representation crystal element

e(i)#

Return 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, --+]]

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

f(i)#

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

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

class sage.combinat.crystals.spins.Spin_crystal_type_D_element#

Bases: Spin

Type D spin representation crystal element

e(i)#

Return 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, --+-]]

epsilon(i)#

Return $$\varepsilon_i$$ of self.

EXAMPLES:

sage: C = crystals.SpinsMinus(['D',4])
sage: [[C[m].epsilon(i) for i in C.index_set()] for m in range(8)]
[[0, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0],
[0, 0, 0, 1], [1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0]]

f(i)#

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

phi(i)#

Return $$\varphi_i$$ of self.

EXAMPLES:

sage: C = crystals.SpinsPlus(['D',4])
sage: [[C[m].phi(i) for i in C.index_set()] for m in range(8)]
[[0, 0, 0, 1], [0, 1, 0, 0], [1, 0, 1, 0], [0, 0, 1, 0],
[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 0, 0]]