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

dft for symmetric group algebra when p|n! #37748

Closed
wants to merge 15 commits into from
Closed

dft for symmetric group algebra when p|n! #37748

wants to merge 15 commits into from

Conversation

jacksonwalters
Copy link
Contributor

@jacksonwalters jacksonwalters commented Apr 4, 2024

The DFT for the SGA throws a ZeroDivisionError when p|n. Uses the idempotents as computed in [Murphy '83] to build the Pierce decomposition of the symmetric group algebra over a finite field. There is a homomorphic projection onto each block via v |--> v*e_i. The change of basis matrix is the modular Fourier transform, and works even when p|n.

📝 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 accordingly.

⌛ Dependencies

The DFT for the SGA throws a ZeroDivisionError p|n. Uses the idempotents as computed in [Murphy '83] to build the Pierce decomposition of the group algebra over a finite field. The "modular" Fourier transform is the homomorphic projection onto each block via v |--> v*e_i. This change of basis matrix is the modular Fourier transform, and works even when p|n.
attempting to get through lint
remove helper functions in favor of lambda functions
@jacksonwalters
Copy link
Contributor Author

doctest is currently failing. I think that has something to do with the preloaded examples in the comments. I am attempting to build sage locally for the first time to run doctest with the changed symmetric_group_algebra.py file.

use p=2, n=3 for a small example.
lowercase m in matrix
@jacksonwalters
Copy link
Contributor Author

the output in the example I had was wrong. that's been corrected. now test modularized distributions is failing with:

[sagemath_objects-10.4.beta1] ERROR: Could not find a version that satisfies the requirement cysignals>=1.10.2 (from versions: none)

@jacksonwalters
Copy link
Contributor Author

#37750

@jacksonwalters
Copy link
Contributor Author

#37734

@jacksonwalters
Copy link
Contributor Author

#37751

Copy link
Contributor

@S17A05 S17A05 left a comment

Choose a reason for hiding this comment

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

Admittedly I don't know enough about modular representation theory to check this code mathematically, but here are some programming comments.

Also, the documentation for the .dft-method should be rewritten a bit to explain the form argument, to make the explanation of mult dependent on form = "seminormal", and to also explain the different approaches used depending on form. For the explanation of the modular approach, you can also refer to [Murphy '83], which needs to be formatted as [Mur1983]_ in the docstring to give a hyperlink in the documentation.

Comment on lines 1910 to 1911
if form == "seminormal":
return self._dft_seminormal(mult=mult)
Copy link
Contributor

Choose a reason for hiding this comment

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

It might be a good idea to catch the error in the case $p \mid n$ here and raise an error with a clearer error message, or to remove the standard argument for form and choose it depending on whether the characteristic divides $n$ (depending on whether ._dft_seminormal always fails in the modular case)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I agree, at the very least the failing cases p|n should at least be handled with a clear error message. I believe it only fails when p | n! (n was a type - it's the order of the symmetric group, so n!). I've chosen to just remove the standard argument for form and return the modular DFT in that case.

src/sage/combinat/symmetric_group_algebra.py Outdated Show resolved Hide resolved
src/sage/combinat/symmetric_group_algebra.py Outdated Show resolved Hide resolved
jacksonwalters and others added 4 commits April 5, 2024 19:36
remove the self-reference to .dft(). just state that it's computing the DFT when the characteristic divides the order of the group.

Co-authored-by: Sebastian A. Spindler <153911337+S17A05@users.noreply.github.com>
Co-authored-by: Sebastian A. Spindler <153911337+S17A05@users.noreply.github.com>
Copy link

github-actions bot commented Apr 6, 2024

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

@jacksonwalters jacksonwalters changed the title dft for symmetric group algebra when p|n dft for symmetric group algebra when p|n! Apr 6, 2024
@jacksonwalters jacksonwalters closed this by deleting the head repository Apr 6, 2024
@jacksonwalters
Copy link
Contributor Author

Accidentally closed this PR when I deleted the fork on my end. Should be reopened.

@jacksonwalters jacksonwalters deleted the symmetric_group_dft_modular_case branch April 6, 2024 20:22
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.

3 participants