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)