Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Specht modules in the tabloid basis #36748

Merged
merged 9 commits into from
Mar 25, 2024

Conversation

tscrim
Copy link
Collaborator

@tscrim tscrim commented Nov 22, 2023

This provides an implementation of the Specht modules over arbitrary fields in the standard tableaux basis. To do so, we also implement the tabloid module, where the tabloids are implemented as OrderedSetsPartitions. Using this, we can construct the maximal submodule and simple submodule from a Specht module.

We also implement a method to compute the Brauer character of the representations.

📝 Checklist

  • The title is concise, informative, and self-explanatory.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation accordingly.

⌛ Dependencies

@tscrim
Copy link
Collaborator Author

tscrim commented Jan 1, 2024

I have addressed all of the comments and added a few more doctests for the codecov (those I felt were reasonable).

@tscrim
Copy link
Collaborator Author

tscrim commented Jan 12, 2024

@darijgr ping?

@mantepse
Copy link
Collaborator

@tscrim, is there any reason you know of that this code is not yet in sage?

@darijgr
Copy link
Contributor

darijgr commented Feb 13, 2024

@mantepse Lazy reviewers...

@mantepse
Copy link
Collaborator

@darijgr, do you want to look more thoroughly? For me it certainly looks "good enough" - I would be extremely surprised to see any fundamental flaws that cannot be fixed in follow up tickets. What do you think?

@darijgr
Copy link
Contributor

darijgr commented Feb 17, 2024

I don't have time any more in this quarter :(

Martin, can you review this?

Copy link
Collaborator

@mantepse mantepse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

(I'll leave it up to you whether you want to allow compositions now or not)

src/sage/combinat/tabloid.py Outdated Show resolved Hide resolved
src/sage/combinat/specht_module.py Show resolved Hide resolved
src/sage/combinat/specht_module.py Outdated Show resolved Hide resolved
Copy link
Collaborator

@mantepse mantepse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

src/sage/combinat/tabloid.py Outdated Show resolved Hide resolved
@mantepse
Copy link
Collaborator

Copying this from above, because apparently, once resolved, text is not shown anymore.

I agree. In fact, I now think that Tabloids should really be OrderedSetPartitions_scomp(n, alpha), without any extra methods. Maybe the name of the method symmetric_group_action is not ideal, do we need it at all?

For example, __iter__ of OrderedSetPartitions_scomp should be the same as __iter__, so we don't need to optimize two iterators.

I'll give it positive review anyway and leave this to you.

@tscrim
Copy link
Collaborator Author

tscrim commented Feb 19, 2024

Copying this from above, because apparently, once resolved, text is not shown anymore.

I agree. In fact, I now think that Tabloids should really be OrderedSetPartitions_scomp(n, alpha), without any extra methods. Maybe the name of the method symmetric_group_action is not ideal, do we need it at all?

I have two reasons for this:

  1. I use the symmetric_group_action method to build the action. Although this could be moved into the tabloid module itself.
  2. I want to actually have latex/ascii_art output as tabloids. This can also be moved into the tabloid module code, but it is a less natural place.

For example, __iter__ of OrderedSetPartitions_scomp should be the same as __iter__, so we don't need to optimize two iterators.

Indeed.

I'll give it positive review anyway and leave this to you.

Thank you, but I seriously considering dumping the Tabloids class for OSPs. Its duplicating too much for no clear benefits or extensions that OSPs wouldn't be able to do themselves (with perhaps a special subclass for those whose base set is $[n]$). It seems like you are also in favor of this as well, right?

@mantepse
Copy link
Collaborator

Yes, I am always in favour of less duplication.

@mantepse
Copy link
Collaborator

PS: I think eventually we should have a clear framework for combinatorial objects 'naturally defined on the set [n]' and on arbitrary sets, that is used consistently for SetPartitions, Combinations, Tableaux, etc.

(and also walk through possibly misleading classes, eg., Tuples, and eventually deprecate them)

@tscrim
Copy link
Collaborator Author

tscrim commented Feb 20, 2024

I have removed the Tabloid(s) classes in my latest push since they are (currently) redundant and moved the corresponding functionality into the TabloidModule class. I also fixed a bug with partitions not being recognized as compositions (necessary for the code now). I reshuffled the class hierarchy a bit in order to bring in more functionality from Representation_abstract. To get everything to work, I needed to add a gens() method to StandardPermutations_n.

@fchapoton
Copy link
Contributor

the doctests, they are a failin' 🎶

@tscrim
Copy link
Collaborator Author

tscrim commented Mar 5, 2024

Seems like how the error is generated changed with the changes to the submodule code. I will need to check this before updating the error message; although I feel like the error message should not be changed...

@tscrim
Copy link
Collaborator Author

tscrim commented Mar 7, 2024

Come gather 'round people, wherever you roam, and finish the PR review with doctest passin'.

So it was a deeper issue (and more strangely/worrisome, something I couldn't reproduce locally!). The is_submodule check should not have raised an error if the ambient spaces were different but instead simply returned False because of the generic coercion check for modules is relying on that. This is now fixed in the last commit and the doctests in specht_module.py now pass for me.

Copy link

github-actions bot commented Mar 7, 2024

Documentation preview for this PR (built with commit 95a8ed3; changes) is ready! 🎉

Copy link
Contributor

@fchapoton fchapoton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, let's go

@tscrim
Copy link
Collaborator Author

tscrim commented Mar 7, 2024

Merci!

@vbraun vbraun merged commit 78bdda4 into sagemath:develop Mar 25, 2024
16 checks passed
@mkoeppe mkoeppe added this to the sage-10.4 milestone Mar 25, 2024
@tscrim tscrim deleted the combinat/tabloids_specht branch March 28, 2024 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants