\(\mathcal{B}(\infty)\) Crystal Of PBW Monomials#
AUTHORS:
Dinakar Muthiah (2015-05-11): initial version
See also
For information on PBW datum, see PBW Data.
- class sage.combinat.crystals.pbw_crystal.PBWCrystal(cartan_type)[source]#
Bases:
Parent
,UniqueRepresentation
Crystal of \(\mathcal{B}(\infty)\) given by PBW monomials.
A model of the crystal \(\mathcal{B}(\infty)\) whose elements are PBW datum up to equivalence by the tropical Plücker relations. The crystal structure on Lusztig data \(x = (x_1, \ldots, x_m)\) for the reduced word \(s_{i_1} \cdots s_{i_m} = w_0\) is given as follows. Suppose \(i_1 = j\), then \(f_j x = (x_1 + 1, x_2, \ldots, x_m)\). If \(i_1 \neq j\), then we use the tropical Plücker relations to change the reduced expression such that \(i_1' = j\) and then we change back to the original word.
EXAMPLES:
sage: PBW = crystals.infinity.PBW(['B', 3]) sage: hw = PBW.highest_weight_vector() sage: x = hw.f_string([1,2,2,3,3,1,3,3,2,3,2,1,3,1,2,3,1,2,1,3,2]); x PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
>>> from sage.all import * >>> PBW = crystals.infinity.PBW(['B', Integer(3)]) >>> hw = PBW.highest_weight_vector() >>> x = hw.f_string([Integer(1),Integer(2),Integer(2),Integer(3),Integer(3),Integer(1),Integer(3),Integer(3),Integer(2),Integer(3),Integer(2),Integer(1),Integer(3),Integer(1),Integer(2),Integer(3),Integer(1),Integer(2),Integer(1),Integer(3),Integer(2)]); x PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
Elements are expressed in terms of Lusztig datum for a fixed reduced expression of \(w_0\):
sage: PBW.default_long_word() [1, 3, 2, 3, 1, 2, 3, 1, 2] sage: PBW.set_default_long_word([2,1,3,2,1,3,2,3,1]) sage: x PBW monomial with Lusztig datum (3, 1, 1, 0, 1, 0, 1, 3, 4) sage: PBW.set_default_long_word([1, 3, 2, 3, 1, 2, 3, 1, 2])
>>> from sage.all import * >>> PBW.default_long_word() [1, 3, 2, 3, 1, 2, 3, 1, 2] >>> PBW.set_default_long_word([Integer(2),Integer(1),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2),Integer(3),Integer(1)]) >>> x PBW monomial with Lusztig datum (3, 1, 1, 0, 1, 0, 1, 3, 4) >>> PBW.set_default_long_word([Integer(1), Integer(3), Integer(2), Integer(3), Integer(1), Integer(2), Integer(3), Integer(1), Integer(2)])
We can construct elements by giving it Lusztig data (with respect to the default long word):
sage: PBW([1,1,1,3,1,0,0,1,1]) PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
>>> from sage.all import * >>> PBW([Integer(1),Integer(1),Integer(1),Integer(3),Integer(1),Integer(0),Integer(0),Integer(1),Integer(1)]) PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
We can also construct elements by passing in a reduced expression for a long word:
sage: x = PBW([1,1,1,3,1,0,0,1,1], [3,2,1,3,2,3,2,1,2]); x PBW monomial with Lusztig datum (1, 1, 1, 0, 1, 0, 5, 1, 1) sage: x.to_highest_weight()[1] [1, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 1, 3]
>>> from sage.all import * >>> x = PBW([Integer(1),Integer(1),Integer(1),Integer(3),Integer(1),Integer(0),Integer(0),Integer(1),Integer(1)], [Integer(3),Integer(2),Integer(1),Integer(3),Integer(2),Integer(3),Integer(2),Integer(1),Integer(2)]); x PBW monomial with Lusztig datum (1, 1, 1, 0, 1, 0, 5, 1, 1) >>> x.to_highest_weight()[Integer(1)] [1, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 1, 3]
- Element[source]#
alias of
PBWCrystalElement
- default_long_word()[source]#
Return the default long word used to express elements of
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(['E', 6]) sage: B.default_long_word() [1, 3, 4, 5, 6, 2, 4, 5, 3, 4, 1, 3, 2, 4, 5, 6, 2, 4, 5, 3, 4, 1, 3, 2, 4, 5, 3, 4, 1, 3, 2, 4, 1, 3, 2, 1]
>>> from sage.all import * >>> B = crystals.infinity.PBW(['E', Integer(6)]) >>> B.default_long_word() [1, 3, 4, 5, 6, 2, 4, 5, 3, 4, 1, 3, 2, 4, 5, 6, 2, 4, 5, 3, 4, 1, 3, 2, 4, 5, 3, 4, 1, 3, 2, 4, 1, 3, 2, 1]
- set_default_long_word(word)[source]#
Set the default long word used to express elements of
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(['C', 3]) sage: B.default_long_word() [1, 3, 2, 3, 1, 2, 3, 1, 2] sage: x = B.highest_weight_vector().f_string([2,1,3,2,3,1,2,3,3,1]) sage: x PBW monomial with Lusztig datum (1, 2, 2, 0, 0, 0, 0, 0, 1) sage: B.set_default_long_word([2,1,3,2,1,3,2,3,1]) sage: B.default_long_word() [2, 1, 3, 2, 1, 3, 2, 3, 1] sage: x PBW monomial with Lusztig datum (2, 0, 0, 0, 0, 0, 1, 3, 2)
>>> from sage.all import * >>> B = crystals.infinity.PBW(['C', Integer(3)]) >>> B.default_long_word() [1, 3, 2, 3, 1, 2, 3, 1, 2] >>> x = B.highest_weight_vector().f_string([Integer(2),Integer(1),Integer(3),Integer(2),Integer(3),Integer(1),Integer(2),Integer(3),Integer(3),Integer(1)]) >>> x PBW monomial with Lusztig datum (1, 2, 2, 0, 0, 0, 0, 0, 1) >>> B.set_default_long_word([Integer(2),Integer(1),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2),Integer(3),Integer(1)]) >>> B.default_long_word() [2, 1, 3, 2, 1, 3, 2, 3, 1] >>> x PBW monomial with Lusztig datum (2, 0, 0, 0, 0, 0, 1, 3, 2)
- class sage.combinat.crystals.pbw_crystal.PBWCrystalElement(parent, lusztig_datum, long_word=None)[source]#
Bases:
Element
A crystal element in the PBW model.
- e(i)[source]#
Return the action of \(e_i\) on
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(['B', 3]) sage: b = B.highest_weight_vector() sage: c = b.f_string([2,1,3,2,1,3,2,2]); c PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 2) sage: c.e(2) PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 1) sage: c.e_string([2,2,1,3,2,1,3,2]) == b True
>>> from sage.all import * >>> B = crystals.infinity.PBW(['B', Integer(3)]) >>> b = B.highest_weight_vector() >>> c = b.f_string([Integer(2),Integer(1),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2),Integer(2)]); c PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 2) >>> c.e(Integer(2)) PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 1) >>> c.e_string([Integer(2),Integer(2),Integer(1),Integer(3),Integer(2),Integer(1),Integer(3),Integer(2)]) == b True
- epsilon(i)[source]#
Return \(\varepsilon_i\) of
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(["A2"]) sage: s = B((3,0,0), (1,2,1)) sage: s.epsilon(1) 3 sage: s.epsilon(2) 0
>>> from sage.all import * >>> B = crystals.infinity.PBW(["A2"]) >>> s = B((Integer(3),Integer(0),Integer(0)), (Integer(1),Integer(2),Integer(1))) >>> s.epsilon(Integer(1)) 3 >>> s.epsilon(Integer(2)) 0
- f(i)[source]#
Return the action of \(f_i\) on
self
.EXAMPLES:
sage: B = crystals.infinity.PBW("D4") sage: b = B.highest_weight_vector() sage: c = b.f_string([1,2,3,1,2,3,4]); c PBW monomial with Lusztig datum (0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0) sage: c == b.f_string([1,2,4,1,2,3,3]) True
>>> from sage.all import * >>> B = crystals.infinity.PBW("D4") >>> b = B.highest_weight_vector() >>> c = b.f_string([Integer(1),Integer(2),Integer(3),Integer(1),Integer(2),Integer(3),Integer(4)]); c PBW monomial with Lusztig datum (0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0) >>> c == b.f_string([Integer(1),Integer(2),Integer(4),Integer(1),Integer(2),Integer(3),Integer(3)]) True
- lusztig_datum(word=None)[source]#
Return the Lusztig datum of
self
with respect to the reduced expression of the long wordword
.EXAMPLES:
sage: B = crystals.infinity.PBW(['A', 2]) sage: u = B.highest_weight_vector() sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2]) sage: b.lusztig_datum() (6, 0, 10) sage: b.lusztig_datum(word=[2,1,2]) (4, 6, 0)
>>> from sage.all import * >>> B = crystals.infinity.PBW(['A', Integer(2)]) >>> u = B.highest_weight_vector() >>> b = u.f_string([Integer(2),Integer(1),Integer(2),Integer(2),Integer(2),Integer(2),Integer(1),Integer(1),Integer(2),Integer(1),Integer(2),Integer(1),Integer(2),Integer(1),Integer(2),Integer(2)]) >>> b.lusztig_datum() (6, 0, 10) >>> b.lusztig_datum(word=[Integer(2),Integer(1),Integer(2)]) (4, 6, 0)
- phi(i)[source]#
Return \(\varphi_i\) of
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(['A', 2]) sage: s = B((3,0,0), (1,2,1)) sage: s.phi(1) -3 sage: s.phi(2) 3
>>> from sage.all import * >>> B = crystals.infinity.PBW(['A', Integer(2)]) >>> s = B((Integer(3),Integer(0),Integer(0)), (Integer(1),Integer(2),Integer(1))) >>> s.phi(Integer(1)) -3 >>> s.phi(Integer(2)) 3
- star()[source]#
Return the starred crystal element corresponding to
self
.Let \(b\) be an element of
self
with Lusztig datum \((b_1, \ldots, b_N)\) with respect to \(w_0 = s_{i_1} \cdots s_{i_N}\). Then \(b^*\) is the element with Lusztig datum \((b_N, \ldots, b_1)\) with respect to \(w_0 = s_{i_N^*} \cdots s_{i_1^*}\), where \(i_j^* = \omega(i_j)\) with \(\omega\) being theautomorphism
given by the action of \(w_0\) on the simple roots.EXAMPLES:
sage: P = crystals.infinity.PBW(['A', 2]) sage: P((1,2,3), (1,2,1)).star() == P((3,2,1), (2,1,2)) True sage: B = crystals.infinity.PBW(['E', 6]) sage: b = B.highest_weight_vector() sage: c = b.f_string([1,2,6,3,4,2,5,2,3,4,1,6]) sage: c == c.star().star() True
>>> from sage.all import * >>> P = crystals.infinity.PBW(['A', Integer(2)]) >>> P((Integer(1),Integer(2),Integer(3)), (Integer(1),Integer(2),Integer(1))).star() == P((Integer(3),Integer(2),Integer(1)), (Integer(2),Integer(1),Integer(2))) True >>> B = crystals.infinity.PBW(['E', Integer(6)]) >>> b = B.highest_weight_vector() >>> c = b.f_string([Integer(1),Integer(2),Integer(6),Integer(3),Integer(4),Integer(2),Integer(5),Integer(2),Integer(3),Integer(4),Integer(1),Integer(6)]) >>> c == c.star().star() True
- weight()[source]#
Return weight of
self
.EXAMPLES:
sage: B = crystals.infinity.PBW(['A', 2]) sage: s = B((2,2,2), (1,2,1)) sage: s.weight() (-4, 0, 4)
>>> from sage.all import * >>> B = crystals.infinity.PBW(['A', Integer(2)]) >>> s = B((Integer(2),Integer(2),Integer(2)), (Integer(1),Integer(2),Integer(1))) >>> s.weight() (-4, 0, 4)