Braid Move Calculator#

AUTHORS:

  • Dinakar Muthiah (2014-06-03): initial version

class sage.combinat.root_system.braid_move_calculator.BraidMoveCalculator(coxeter_group)[source]#

Bases: object

Helper class to compute braid moves.

chain_of_reduced_words(start_word, end_word)[source]#

Compute the chain of reduced words from stard_word to end_word.

INPUT:

  • start_word, end_word – two reduced expressions for the long word

EXAMPLES:

sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
sage: W = CoxeterGroup(['A',5])
sage: B = BraidMoveCalculator(W)
sage: B.chain_of_reduced_words((1,2,1,3,2,1,4,3,2,1,5,4,3,2,1), # not tested
....:                          (5,4,5,3,4,5,2,3,4,5,1,2,3,4,5))
>>> from sage.all import *
>>> from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
>>> W = CoxeterGroup(['A',Integer(5)])
>>> B = BraidMoveCalculator(W)
>>> B.chain_of_reduced_words((Integer(1),Integer(2),Integer(1),Integer(3),Integer(2),Integer(1),Integer(4),Integer(3),Integer(2),Integer(1),Integer(5),Integer(4),Integer(3),Integer(2),Integer(1)), # not tested
...                          (Integer(5),Integer(4),Integer(5),Integer(3),Integer(4),Integer(5),Integer(2),Integer(3),Integer(4),Integer(5),Integer(1),Integer(2),Integer(3),Integer(4),Integer(5)))
put_in_front(k, input_word)[source]#

Return a list of reduced words starting with input_word and ending with a reduced word whose first letter is k.

There still remains an issue with 0 indices.

EXAMPLES:

sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
sage: W = CoxeterGroup(['C',3])
sage: B = BraidMoveCalculator(W)
sage: B.put_in_front(2, (3, 2, 3, 1, 2, 3, 1, 2, 1))
((3, 2, 3, 1, 2, 3, 1, 2, 1),
 (3, 2, 3, 1, 2, 1, 3, 2, 1),
 (3, 2, 3, 2, 1, 2, 3, 2, 1),
 (2, 3, 2, 3, 1, 2, 3, 2, 1))
sage: B.put_in_front(1, (3, 2, 3, 1, 2, 3, 1, 2, 1))
((3, 2, 3, 1, 2, 3, 1, 2, 1),
 (3, 2, 1, 3, 2, 3, 1, 2, 1),
 (3, 2, 1, 3, 2, 3, 2, 1, 2),
 (3, 2, 1, 2, 3, 2, 3, 1, 2),
 (3, 1, 2, 1, 3, 2, 3, 1, 2),
 (1, 3, 2, 1, 3, 2, 3, 1, 2))
sage: B.put_in_front(1, (1, 3, 2, 3, 2, 1, 2, 3, 2))
((1, 3, 2, 3, 2, 1, 2, 3, 2),)
>>> from sage.all import *
>>> from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
>>> W = CoxeterGroup(['C',Integer(3)])
>>> B = BraidMoveCalculator(W)
>>> B.put_in_front(Integer(2), (Integer(3), Integer(2), Integer(3), Integer(1), Integer(2), Integer(3), Integer(1), Integer(2), Integer(1)))
((3, 2, 3, 1, 2, 3, 1, 2, 1),
 (3, 2, 3, 1, 2, 1, 3, 2, 1),
 (3, 2, 3, 2, 1, 2, 3, 2, 1),
 (2, 3, 2, 3, 1, 2, 3, 2, 1))
>>> B.put_in_front(Integer(1), (Integer(3), Integer(2), Integer(3), Integer(1), Integer(2), Integer(3), Integer(1), Integer(2), Integer(1)))
((3, 2, 3, 1, 2, 3, 1, 2, 1),
 (3, 2, 1, 3, 2, 3, 1, 2, 1),
 (3, 2, 1, 3, 2, 3, 2, 1, 2),
 (3, 2, 1, 2, 3, 2, 3, 1, 2),
 (3, 1, 2, 1, 3, 2, 3, 1, 2),
 (1, 3, 2, 1, 3, 2, 3, 1, 2))
>>> B.put_in_front(Integer(1), (Integer(1), Integer(3), Integer(2), Integer(3), Integer(2), Integer(1), Integer(2), Integer(3), Integer(2)))
((1, 3, 2, 3, 2, 1, 2, 3, 2),)