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 the ladder idempotents of the symmetric group algebra #37859

Merged
merged 6 commits into from
May 12, 2024

Conversation

tscrim
Copy link
Collaborator

@tscrim tscrim commented Apr 24, 2024

We implement the so-called ladder idempotents of the symmetric group algebra $F[S_n]$, defined by Ryom-Hansen, which can be used to construct the projective covers of simple modules when the field $F$ has positive characteristic.

📝 Checklist

  • The title is concise and informative.
  • 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 and checked the documentation preview.

⌛ Dependencies

@tscrim
Copy link
Collaborator Author

tscrim commented Apr 24, 2024

@AndrewMathas This is something I came across while trying to devise a method to construct the projective covers. Thought it might be worthwhile to add.

@AndrewMathas AndrewMathas requested review from AndrewMathas and removed request for AndrewMathas April 30, 2024 23:30
@AndrewMathas AndrewMathas self-assigned this Apr 30, 2024
@AndrewMathas
Copy link
Member

The e-ladders returned by ladder_tableau are e+1-ladders in the literature. This needs to be changed or it will confuse the people who are likely to use this. The reason ladders come up is that they give nodes of constant e-residue, which is why they have slope e-1. Secondly, ladder_sizes should be renamed as ladder_lengths because this is the term used in the literature.

Apart from these minor points, everything seems fine. I have forgotten the protocols when reviewing. In particular, I don't remember when it is permissible for me to make these changes or if I suggest you make them.

When I went to test your code I discovered that I have the following method that returns a dictionary of the e-ladders of a partition.

def ladders(self,e):
    """INPUT: ladders(``e``), for a non-negative integer ``e``.

    Returns a dictionary containing the ladders in the diagram of the partition.
    A node $(i,j)$ in a partition belongs to the $l$th $e$-ladder where
    $l=(e-1)r+c$.

    EXAMPLES::

        sage: Partition([3,2]).ladders(3)
        {0: [(0, 0)], 1: [(0, 1)], 2: [(0, 2), (1, 0)], 3: [(1, 1)]}
    """
    lads={}
    for row in range(len(self)):
        for col in range(self[row]):
            l=col+row*(e-1)
            if not l in lads: lads[l]=[]
            lads[l].append((row,col))
    return lads

I suggest that this method be added as part of this PR.

@tscrim tscrim force-pushed the combinat/ladder_idempotents branch from 8255cb9 to 164a678 Compare May 1, 2024 05:48
@AndrewMathas AndrewMathas removed their request for review May 1, 2024 05:52
@tscrim
Copy link
Collaborator Author

tscrim commented May 1, 2024

Thank you. That's a good point. I think I lost track of what $e$ meant when writing the function. I also made the other change you suggested and added your code.

In the trac workflow, you would be allowed to push commits. However, with GH this has become very inconvenient for reviewers (or general collaborative code writing) to do... (The "standard" ways would be to either do a PR to the branch on my fork (not the main repo here); just do your own PR with the additional commit(s); or I pull commits from a specific branch of yours) Well, no matter what I am okay with you pushing changes in one form or another (we might even set up something so you can just generically push to my fork, but it might not be worth the trouble)

Copy link
Member

@AndrewMathas AndrewMathas left a comment

Choose a reason for hiding this comment

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

Looks good but one more minor change that I should have picked up the first time.

of the partition `\lambda` from left-to-right.
The `e`-*ladder tableau* is the standard Young tableau obtained
by reading the *ladders*, the set of cells `(i, j)` that differ
from `(i+e-1, j-1)`, of the partition `\lambda` from left-to-right.

INPUT:

- ``e`` -- a positive integer
Copy link
Member

Choose a reason for hiding this comment

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

Sorry, should have caught this earlier too. You want e to be a non-negative integer, where e=0 corresponds to (quantum) characteristic 0.

[1, 1, 2, 2, 3, 3, 3]
"""
Tlad = [[None] * val for val in self]
counter = 0
start = 0
n = sum(self)
sizes = []
e -= 1
Copy link
Member

Choose a reason for hiding this comment

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

To cope with e=0 this could be: e = self.size() if e=0 else e-1

@tscrim
Copy link
Collaborator Author

tscrim commented May 1, 2024

What do you want ladders() to do when e = 0? Error out?

@AndrewMathas
Copy link
Member

AndrewMathas commented May 1, 2024

What do you want ladders() to do when e = 0? Error out?

Sincee=0 corresponds to characteristic zero, the 0-ladders are the ladders when e is large. Setting e to be the size plus one is large enough. Above I suggested replacing line 2982 with
e = self.size() if e=0 else e-1 but I guess it really should be e = self.size()+1 if e=0 else e-1

Edit: actually, e = self.size() if e=0 else e-1 is sufficient as no two nodes in a diagram with n nodes can have the same n-residue. In this case the ladder tableau is just the initial tableau.

@tscrim
Copy link
Collaborator Author

tscrim commented May 1, 2024

For the ladder_tableau() method, I agree that this is clear. However, the behavior of ladders() depends on the size. While it isn't a major difference, it is not quite consistent as I add boxes to the bottom. Compare:

sage: Partition([3, 2]).ladders(0)
{0: [(0, 0)], 1: [(0, 1)], 2: [(0, 2)], 5: [(1, 0)], 6: [(1, 1)]}
sage: Partition([3, 2, 1]).ladders(0)
{0: [(0, 0)], 1: [(0, 1)], 2: [(0, 2)], 6: [(1, 0)], 7: [(1, 1)], 12: [(2, 0)]}
sage: Partition([3, 2, 1, 1]).ladders(0)
{0: [(0, 0)], 1: [(0, 1)], 2: [(0, 2)], 7: [(1, 0)], 8: [(1, 1)], 14: [(2, 0)], 21: [(3, 0)]}

In particular, see the ladder for the cell (1, 0) changing. It's just a matter of what the best behavior would be, but it is unlikely to be used in that setting I feel. So this might basically be bikeshedding...

@AndrewMathas
Copy link
Member

Good catch: I evidently had not applied my comment to the ladders method. For e=0 the set of nodes in the different ladders are independent of n whenever it is large enough but the "ladder index" changes.

In particular, see the ladder for the cell (1, 0) changing. It's just a matter of what the best behavior would be, but it is unlikely to be used in that setting I feel. So this might basically be bikeshedding...

This is correct because the "ladder index" depends on e, or the partition size when e=0, because the ladder index counts the ladders in order starting from the ladder through (0, 0). The reason why the ladder index for (1, 0) changes when e=0 is that there are some ladders for partitions of n that do not intersect these partitions. The way it is set up, the first n cells in the first row of a partition will be in ladders of index 0, 1, ..., n-1, respectively, the first n cells in the second row will have ladder indices n, n+1, ..., 2n-1 etc. For e ≥ n, each ladder will contain a single node, but the ladder indices depend on n.

Btw, Steen's ladder idempotents still make sense when e=0: in this case, these idempotents pick out a Specht module, which is (irreducible and) projective in characteristic zero.

@AndrewMathas
Copy link
Member

AndrewMathas commented May 1, 2024

If you're happy, then I will set this to a positive review.

@tscrim
Copy link
Collaborator Author

tscrim commented May 2, 2024

Thank you. I added some more documentation and examples to illustrate these points about e = 0. If everything looks good to you, then please approve the PR and also set it to a positive review. (The former is more important as I cannot do that, but I can do the latter).

@AndrewMathas
Copy link
Member

Thanks for your changes.
Looks good to me!

@tscrim
Copy link
Collaborator Author

tscrim commented May 2, 2024

Thank you. Could you also please approve the PR by going to the "files changed" and do the "review changes" with selecting the "approve"?

@tscrim tscrim force-pushed the combinat/ladder_idempotents branch from 4c94243 to c84f55d Compare May 2, 2024 08:46
@tscrim
Copy link
Collaborator Author

tscrim commented May 2, 2024

(The last force push was just to remove some trailing whitespace I accidentally added.)

Copy link
Member

@AndrewMathas AndrewMathas left a comment

Choose a reason for hiding this comment

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

Everything looks good to me.

@tscrim
Copy link
Collaborator Author

tscrim commented May 2, 2024

Thank you.

@vbraun
Copy link
Member

vbraun commented May 4, 2024

Docs don't build (see CI)

@tscrim
Copy link
Collaborator Author

tscrim commented May 7, 2024

Sorry about that; fixed.

Copy link

github-actions bot commented May 8, 2024

Documentation preview for this PR (built with commit 5754976; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

vbraun pushed a commit to vbraun/sage that referenced this pull request May 9, 2024
…roup algebra

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

We implement the so-called ladder idempotents of the symmetric group
algebra $F[S_n]$, defined by Ryom-Hansen, which can be used to construct
the projective covers of simple modules when the field $F$ has positive
characteristic.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#37859
Reported by: Travis Scrimshaw
Reviewer(s): Andrew Mathas
vbraun pushed a commit to vbraun/sage that referenced this pull request May 11, 2024
…roup algebra

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

We implement the so-called ladder idempotents of the symmetric group
algebra $F[S_n]$, defined by Ryom-Hansen, which can be used to construct
the projective covers of simple modules when the field $F$ has positive
characteristic.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#37859
Reported by: Travis Scrimshaw
Reviewer(s): Andrew Mathas
vbraun pushed a commit to vbraun/sage that referenced this pull request May 12, 2024
…roup algebra

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

We implement the so-called ladder idempotents of the symmetric group
algebra $F[S_n]$, defined by Ryom-Hansen, which can be used to construct
the projective covers of simple modules when the field $F$ has positive
characteristic.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#37859
Reported by: Travis Scrimshaw
Reviewer(s): Andrew Mathas
@vbraun vbraun merged commit 6fa34e7 into sagemath:develop May 12, 2024
13 checks passed
@mkoeppe mkoeppe added this to the sage-10.4 milestone May 12, 2024
@tscrim tscrim deleted the combinat/ladder_idempotents branch May 14, 2024 00:26
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.

4 participants