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()
, andCrystalOfSpinsMinus()
.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)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
A generic crystal of spins.
-
lt_elements
(x, y)¶ Return
True
if and only if there is a path fromx
toy
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.structure.element.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:
sage.combinat.crystals.spins.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:
sage.combinat.crystals.spins.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]]
-