#10446 closed enhancement (fixed)
Implementation of the Schuetzenberger involution, the Lusztig involution and the promotion operator
Reported by: | ebeyerstedt | Owned by: | sage-combinat |
---|---|---|---|
Priority: | major | Milestone: | sage-4.7.1 |
Component: | combinatorics | Keywords: | schuetzenberger, words, crystals |
Cc: | aschilling, ilke, sage-combinat | Merged in: | sage-4.7.1.alpha0 |
Authors: | Erin Beyerstedt, Ilke Canakci, Anne Schilling | Reviewers: | Jason Bandlow, Nicolas M. Thiéry |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
This patch implements the Schuetzenberger involution on both words and tableaux. In addition it generalizes the promotion operator on tableaux to act not only on rectangular tableaux, but tableaux of any shape.
For crystals in the category ClassicalCrystals?, the Lusztig involution is implemented and tested in type A
to give the same result as the Schuetzenberger involution.
A section about the Lusztig involution is added to the thematic tutorial on crystals. A copy of the html documentation built using
sage -docbuild thematic_tutorials html
is available here:
http://www.math.ucdavis.edu/~anne/sage/lie/crystals.html
(which might not always be completely up to date).
Apply trac_10446_schuetzenberger_involution-as.patch
Attachments (2)
Change History (35)
comment:1 Changed 6 years ago by
- Cc aschilling added
comment:2 Changed 6 years ago by
comment:3 Changed 6 years ago by
- Cc ilke added
- Status changed from new to needs_work
comment:4 Changed 6 years ago by
- Summary changed from Schuetzenberger Involution to Schuetzenberger Involution on Words
comment:5 Changed 6 years ago by
- Status changed from needs_work to needs_review
comment:6 Changed 6 years ago by
- Description modified (diff)
- Summary changed from Schuetzenberger Involution on Words to Schuetzenberger Involution
This patch now contains two functions, both of which define the schuetzenberger involution - one that works on the class of words and the other on tableau.
comment:7 follow-up: ↓ 8 Changed 6 years ago by
- Reviewers set to Anne Schilling
comment:8 in reply to: ↑ 7 Changed 6 years ago by
- Description modified (diff)
Replying to aschilling:
This looks good and all tests pass! One suggestion I have is that it should be possible to pass the alphabet underlying a given tableau for the method schuetzenberger_involution for tableaux. Currently
sage: t = Tableau(1,1,4],[2?) sage: t.schuetzenberger_involution() 1, 3, 4], [4?
but if the underlying alphabet is different, the answer would be different. This would require to change the method to_word in tableau.py.
Also, for words it would be good to add a test that shows that one can have repeated letters:
sage: w = Word([2,1,1,4], alphabet=[1,2,3,4,5,6]) sage: w.schuetzenberger_involution() word: 3665
Thanks so much for your work on this!
Anne
comment:9 Changed 6 years ago by
- Status changed from needs_review to needs_work
comment:10 Changed 6 years ago by
- Cc sage-combinat added
- Description modified (diff)
- Milestone set to sage-4.7
- Reviewers Anne Schilling deleted
- Status changed from needs_work to needs_review
- Summary changed from Schuetzenberger Involution to Schuetzenberger involution and promotion operator
- Type changed from task to enhancement
comment:11 Changed 6 years ago by
I just fixed the issues with the Schuetzenberger involution that were still bothering me and also added a new implementation of the promotion operator that can now act on tableaux of any shape.
Apply trac_10446_schuetzenberger_involution-as.patch
comment:12 follow-up: ↓ 13 Changed 6 years ago by
- Status changed from needs_review to needs_work
Hi Anne,
Thanks for the patch! I am happy to review this. The biggest issue I have right now is the name of the function 'has_letter'. I think that a function with that name should just return True or False. I think what I would prefer is for the method 'cells' to include an optional parameter. So, something like the following behavior:
sage: t = Tableau([[1,2],[2]]) sage: t.cells() [(0, 0), (0, 1), (1, 0)] sage: t.cells(2) [(0, 1), (1, 0)]
What do you think?
comment:13 in reply to: ↑ 12 ; follow-up: ↓ 14 Changed 6 years ago by
Replying to jbandlow:
Thanks for the patch! I am happy to review this. The biggest issue I have right now is the name of the function 'has_letter'. I think that a function with that name should just return True or False. I think what I would prefer is for the method 'cells' to include an optional parameter. So, something like the following behavior:
sage: t = Tableau([[1,2],[2]]) sage: t.cells() [(0, 0), (0, 1), (1, 0)] sage: t.cells(2) [(0, 1), (1, 0)]What do you think?
What about:
sage: t.cells_containing(2) [(0,1), (1,0)]
to not pollute cells
with more logic?
comment:14 in reply to: ↑ 13 Changed 6 years ago by
Replying to nthiery:
What about:
sage: t.cells_containing(2) [(0,1), (1,0)]to not pollute
cells
with more logic?
Sounds good to me.
comment:15 Changed 6 years ago by
- Description modified (diff)
- Reviewers set to Jason Bandlow
- Status changed from needs_work to needs_review
- Summary changed from Schuetzenberger involution and promotion operator to Implementation of the Schuetzenberger involution, the Lusztig involution and the promotion operator
A new version of the patch is attached. The method has_letter
is now called cells_containing
. In addition, in CrystalsOfTableaux? the new method lusztig_involution
is added. It is tested that for type A
it gives the same answer as the Schuetzenberger involution on tableaux.
comment:16 Changed 6 years ago by
- Keywords crystals added; involution removed
comment:17 Changed 6 years ago by
Just posted a new version of the patch including Dan's suggestion that the star map should be created as a dictionary when the crystal is created.
comment:18 Changed 6 years ago by
A new version of the patch is attached, where I changed the map i->i^{* to a cached method rather than an attribute of the crystal according to Nicolas' suggestion on the sage-combinat mailing list. }
Cheers,
Anne
comment:19 Changed 6 years ago by
- Description modified (diff)
comment:20 Changed 6 years ago by
Following Dan's suggestions, the Lustzig involution is now a method of ClassicalCrystals?. It also works for finite-dimensional highest weight crystals of type E_6
for example. A section on the Lusztig involution is added to the thematic tutorial.
I hope this is now finally ready!
Anne
comment:21 Changed 6 years ago by
- Description modified (diff)
comment:22 Changed 6 years ago by
- Reviewers changed from Jason Bandlow to Jason Bandlow, Nicolas Thiery
Posted a slightly revised version incorporating Nicolas' review patch. Jason, could you give it a final review?
Anne
comment:23 Changed 6 years ago by
- Status changed from needs_review to needs_work
Hi Anne,
The code looks good to me, but it fails to apply for me to a clean 4.6.2. Are there dependencies?
-Jason
comment:24 Changed 6 years ago by
- Status changed from needs_work to needs_review
comment:25 Changed 6 years ago by
- Status changed from needs_review to positive_review
Hi Anne,
I don't have the latest alpha, but I tested the patch on the sage-combinat queue, as well as looked carefully at the code, and it looks good to me.
Thanks!
comment:26 Changed 6 years ago by
Apply trac_10446_schuetzenberger_involution-as.patch
comment:27 follow-up: ↓ 29 Changed 6 years ago by
Hi Jeroen,
Would it be possible to get this patch into sage-4.7 for Sage Days 30?
Thank you,
Anne
comment:28 Changed 6 years ago by
- Milestone changed from sage-4.7 to sage-4.7.1
comment:29 in reply to: ↑ 27 Changed 6 years ago by
Replying to aschilling:
Hi Jeroen,
Would it be possible to get this patch into sage-4.7 for Sage Days 30?
Well, I kind of made sage-4.7 "feature-complete" already, so I prefer not to do this. Normally, it should go into sage-4.7.1.alpha0 in time for Sage Days 30.
comment:30 follow-up: ↓ 31 Changed 6 years ago by
Could you remove the following part from the commit message, which doesn't really serve any purpose:
A section about the Lusztig involution is added to the thematic tutorial on crystals. A copy of the html documentation built using {{{ sage -docbuild thematic_tutorials html }}} is available here: http://www.math.ucdavis.edu/~anne/sage/lie/crystals.html (which might not always be completely up to date).
Changed 6 years ago by
comment:31 in reply to: ↑ 30 Changed 6 years ago by
Replying to jdemeyer:
Could you remove the following part from the commit message, which doesn't really serve any purpose:
Done. I left the first sentence since it does serve a purpose.
comment:32 Changed 6 years ago by
- Merged in set to sage-4.7.1.alpha0
- Resolution set to fixed
- Status changed from positive_review to closed
comment:33 Changed 6 years ago by
- Reviewers changed from Jason Bandlow, Nicolas Thiery to Jason Bandlow, Nicolas M. Thiéry
This already looks very good!
One suggestion I have is to check whether there is an alphabet associated to a given word 'self'. In this case it would be better to use the maximum of the alphabet instead of the maximum of the appearing letters. For example, if you inputted
sage: w=Word([1,2,3],alphabet=[1,2,3,4,5]) sage: w.alphabet() Ordered Alphabet [1, 2, 3, 4, 5]
then you would like the Schuetzenberger involution to return the word 345 instead of 123.
Anne