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