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:
UniqueRepresentation
,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:
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]]