Implementing Fully Commutative Elements in SageMath


Experimental Mathematics Lab, Spring 2020


    Below are the notes and Sage worksheets from our weekly meetings. In some weeks we did not meet due to severe winter weather, spring break or COVID-19.

    Week Summary
    1 We introduced symmetric groups and Coxeter groups. Notes.
    2 We defined reduced words and fully commutative (FC) elements. Notes (by Sarah).
    3 We learned about antichains and the n-values of FC elements. We compiled a list of questions to potentially study. Notes.
    4 We had a quick introduction to Sage and looked at the functionalities Sage currently has regarding Coxeter groups. Sage worksheet; Notes.
    5 We started working on our first problem: writing an FC test to check if a given word expresses an FC element. We wrote two such tests using built-in functions from Sage. Saurabh led the session! Sage worksheet; Notes.
    6 We tried to improve our FC tests from the previous week. To do so we studied the current Sage source code relevant to Coxeter groups, and we modified an existing function braid_orbit to commutation_orbit, a new function that we hoped to use in a more efficient FC test. (A variation of commutation_orbit is used in our final FC test.)
    7 We wrote a third, breadth-first FC test, which is more efficient than our previous two tests. Natalie led the session! Sage worksheet.
    8 Saurabh wrote a fourth, depth-first FC test, as well as a recursive FC test using inner functions. We discussed recursive functions in Sage and started comparing the FC tests we had. Natalie and Wei volunteered to reorganize, document, and improve our code.
    9 We shared what we learned about depth-first and breadth-first search/generation algorithms after the last meeting. We finalized our FC test and decided to move on to the problem of generating all FC elements up to a given length in a given Coxeter group. Sage worksheet (organized by Natalie and Wei); Notes.
    10 We used built-in Sage functions to write a function generating all FC elements of a given length k. The function produces all length-k elements first and then picks out the FC ones using our FC test. We then improved the function by checking reducedness and full commutativity as new words are generated. Sage worksheet.
    11 We discussed descents of FC elements and how multiplication by a Coxeter generator may break full commutativity. Using this discussion, we then wrote a function to efficiently generate all length-k FC elements from the length-(k-1) FC elements. Sage worksheet.
    12 In this last meeting of the project, we reviewed the theory we learned and the code we developed during the term. We sketched how to combine the results from the previous two meetings to generate, by induction on length, all FC elements in an arbitrary Coxeter group. We also outlined some further problems that our results naturally lead to. Many of these problems are solved in this summer research program, which Natalie continued to participate in.