PBW Data#
This contains helper classes and functions which encode PBW data in finite type.
AUTHORS:
Dinakar Muthiah (2015-05): initial version
Travis Scrimshaw (2016-06): simplified code and converted to Cython
- class sage.combinat.crystals.pbw_datum.PBWData(cartan_type)#
Bases:
object
Helper class for the set of PBW data.
- convert_to_new_long_word(pbw_datum, new_long_word)#
Convert the PBW datum
pbw_datum
from its long word tonew_long_word
.EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A2") sage: datum = PBWDatum(P, (1,2,1), (1,0,1)) sage: new_datum = P.convert_to_new_long_word(datum,(2,1,2)) sage: new_datum PBW Datum element of type ['A', 2] with long word (2, 1, 2) and Lusztig datum (0, 1, 0) sage: new_datum.long_word (2, 1, 2) sage: new_datum.lusztig_datum (0, 1, 0)
- class sage.combinat.crystals.pbw_datum.PBWDatum(parent, long_word, lusztig_datum)#
Bases:
object
Helper class which represents a PBW datum.
- convert_to_long_word_with_first_letter(i)#
Return a new PBWDatum equivalent to
self
whose long word begins withi
.EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A3") sage: datum = PBWDatum(P, (1,2,1,3,2,1), (1,0,1,4,2,3)) sage: datum.convert_to_long_word_with_first_letter(1) PBW Datum element of type ['A', 3] with long word (1, 2, 3, 1, 2, 1) and Lusztig datum (1, 0, 4, 1, 2, 3) sage: datum.convert_to_long_word_with_first_letter(2) PBW Datum element of type ['A', 3] with long word (2, 1, 2, 3, 2, 1) and Lusztig datum (0, 1, 0, 4, 2, 3) sage: datum.convert_to_long_word_with_first_letter(3) PBW Datum element of type ['A', 3] with long word (3, 1, 2, 3, 1, 2) and Lusztig datum (8, 1, 0, 4, 1, 2)
- convert_to_new_long_word(new_long_word)#
Return a new PBWDatum equivalent to
self
whose long word isnew_long_word
.EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A2") sage: datum = PBWDatum(P, (1,2,1), (1,0,1)) sage: new_datum = datum.convert_to_new_long_word((2,1,2)) sage: new_datum.long_word (2, 1, 2) sage: new_datum.lusztig_datum (0, 1, 0)
- is_equivalent_to(other_pbw_datum)#
Return whether
self
is equivalent toother_pbw_datum
. modulo the tropical Plücker relations.EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A2") sage: L1 = PBWDatum(P, (1,2,1), (1,0,1)) sage: L2 = PBWDatum(P, (2,1,2), (0,1,0)) sage: L1.is_equivalent_to(L2) True sage: L1 == L2 False
- star()#
Return the starred version of
self
, i.e., with reversed \(long_word\) and \(lusztig_datum\)EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A2") sage: L1 = PBWDatum(P, (1,2,1), (1,2,3)) sage: L1.star() == PBWDatum(P, (2,1,2), (3,2,1)) True
- weight()#
Return the weight of
self
.EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum sage: P = PBWData("A2") sage: L = PBWDatum(P, (1,2,1), (1,1,1)) sage: L.weight() -2*alpha[1] - 2*alpha[2]
- sage.combinat.crystals.pbw_datum.compute_new_lusztig_datum(enhanced_braid_chain, initial_lusztig_datum)#
Return the Lusztig datum obtained by applying tropical Plücker relations along
enhanced_braid_chain
starting withinitial_lusztig_datum
.EXAMPLES:
sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator sage: from sage.combinat.crystals.pbw_datum import enhance_braid_move_chain sage: from sage.combinat.crystals.pbw_datum import compute_new_lusztig_datum sage: ct = CartanType(['A', 2]) sage: W = CoxeterGroup(ct) sage: B = BraidMoveCalculator(W) sage: chain = B.chain_of_reduced_words((1,2,1),(2,1,2)) sage: enhanced_braid_chain = enhance_braid_move_chain(chain, ct) sage: compute_new_lusztig_datum(enhanced_braid_chain,(1,0,1)) (0, 1, 0)
- sage.combinat.crystals.pbw_datum.enhance_braid_move_chain(braid_move_chain, cartan_type)#
Return a list of tuples that records the data of the long words in
braid_move_chain
plus the data of the intervals where the braid moves occur and the data of the off-diagonal entries of the \(2 \times 2\) Cartan submatrices of each braid move.INPUT:
braid_move_chain
– a chain of reduced words in the Weyl group ofcartan_type
cartan_type
– a finite Cartan type
OUTPUT:
A list of 2-tuples
(interval_of_change, cartan_sub_matrix)
whereinterval_of_change
is the (half-open) interval of indices where the braid move occurs; this is \(None\) for the first tuplecartan_sub_matrix
is the off-diagonal entries of the \(2 \times 2\) submatrix of the Cartan matrix corresponding to the braid move; this is \(None\) for the first tuple
For a matrix:
[2 a] [b 2]
the
cartan_sub_matrix
is the pair(a, b)
.
- sage.combinat.crystals.pbw_datum.tropical_plucker_relation(a, lusztig_datum)#
Apply the tropical Plücker relation of type
a
tolusztig_datum
.The relations are obtained by tropicalizing the relations in Proposition 7.1 of [BZ01].
INPUT:
a
– a pair(x, y)
of the off-diagonal entries of a \(2 \times 2\) Cartan matrix
EXAMPLES:
sage: from sage.combinat.crystals.pbw_datum import tropical_plucker_relation sage: tropical_plucker_relation((0,0), (2,3)) (3, 2) sage: tropical_plucker_relation((-1,-1), (1,2,3)) (4, 1, 2) sage: tropical_plucker_relation((-1,-2), (1,2,3,4)) (8, 1, 2, 3) sage: tropical_plucker_relation((-2,-1), (1,2,3,4)) (6, 1, 2, 3)