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

The Burnside ring of a group #37991

Draft
wants to merge 26 commits into
base: develop
Choose a base branch
from
Draft

Conversation

Newtech66
Copy link

@Newtech66 Newtech66 commented May 12, 2024

Resolves #35475.

We implement the Burnside ring for a group $G$. We provide a few ways to construct elements, either directly as a formal sum of orbit types $[G/H]$ (where $H$ is a subgroup of $G$), or by providing a group action $\alpha: G \times X \rightarrow X$ on some set $X$. Finally, we implement addition and multiplication of ring elements.

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

@mantepse

Copy link

github-actions bot commented May 15, 2024

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

@mantepse mantepse changed the title Implementing the Burnside ring of a group The Burnside ring of a group May 16, 2024
Newtech66 and others added 2 commits May 16, 2024 22:56
Co-authored-by: Martin Rubey <axiomize@yahoo.de>
@mantepse mantepse requested a review from trevorkarn May 17, 2024 06:17
@mantepse
Copy link
Collaborator

@trevorkarn, I'm adding you here because of your request at #35475 (comment)

The current branch is a prototype, not yet ready for review.

@trevorkarn
Copy link
Contributor

@trevorkarn, I'm adding you here because of your request at #35475 (comment)

The current branch is a prototype, not yet ready for review.

Thanks so much @mantepse! Just let me know when it is ready for review.

@mantepse
Copy link
Collaborator

I just realised that you can remove BurnsideRing._element_constructor_ completely, and instead implement ConjugacyClassesOfSubgroups.__contains__ (which we should provide anyway):

    def __contains__(self, H):
        return H.is_subgroup(self._G)

How is that working under the hood?

Not sure what exactly you mean here.

  1. __contains__ is python magic https://docs.python.org/3/reference/datamodel.html#object.__contains__
  2. CombinatorialFreeModule._element_constructor_ uses __contains__ here:
    elif x in self._indices:
    return self.monomial(self._indices(x))

@Newtech66
Copy link
Author

  1. __contains__ is python magic https://docs.python.org/3/reference/datamodel.html#object.__contains__
  2. CombinatorialFreeModule._element_constructor_ uses __contains__ here:
    elif x in self._indices:
    return self.monomial(self._indices(x))

Ah, I see, that makes sense.

@Newtech66
Copy link
Author

I propose we implement the conjugacy class renaming like B[Z3].rename_index("Z3"). We can make it fail if we try to call it on something that is not a basis element. Any alternative suggestions? Can the function be named better?

@mantepse
Copy link
Collaborator

I propose we implement the conjugacy class renaming like B[Z3].rename_index("Z3"). We can make it fail if we try to call it on something that is not a basis element. Any alternative suggestions? Can the function be named better?

Maybe, I don't know. I think we can delay thinking about this until we start to play with species.

sage: Z4 in B._indices
True
"""
return H.is_subgroup(self._G)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
return H.is_subgroup(self._G)
if parent(H) == self:
return True
return (isinstance(H, PermutationGroup_generic)
and H.is_subgroup(self._G))

Copy link
Author

Choose a reason for hiding this comment

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

from sage.structure.element import parent as get_parent_of was required, then if get_parent_of(H) == self.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Oh, sorry, yes. Except the renaming, this is unnecessary.

@dimpase
Copy link
Member

dimpase commented May 21, 2024

Does this use tables of marks? (With which it's much easier). GAP does have functionality to deal with tables of marks,
and has a large library of them, packaged as tomlib package. (tomlib is a part of Sage)

@mantepse
Copy link
Collaborator

Does this use tables of marks? (With which it's much easier). GAP does have functionality to deal with tables of marks, and has a large library of them, packaged as tomlib package. (tomlib is a part of Sage)

Not yet, but eventually we will use it whenever available. However, as you certainly know, the table of marks works is only available for relatively small groups, e.g. the symmetric groups up to $\mathfrak S_{13}$. I hope that some operations will be possible even for larger groups, although, of course, they will be very slow.

@Newtech66
Copy link
Author

Why are we adding SymmetricGroupAction in the name? The molecular decomposition of $F[n]$ is defined wrt $\mathfrak{S}_n$, so why the additional qualifier?

@mantepse
Copy link
Collaborator

Why are we adding SymmetricGroupAction in the name? The molecular decomposition of $F[n]$ is defined wrt $\mathfrak S_n$, so why the additional qualifier?

You are right, PolynomialMolecularDecomposition would be better. I admit, I don't care much about the name for the moment, and I didn't think much about it.

For me, the only question is whether we need this class at all, and I think that we do.

@Newtech66
Copy link
Author

If we use the GradedAlgebrasWithBasis category then completion/formal_series_ring should be provided automatically.

@mantepse
Copy link
Collaborator

If we use the GradedAlgebrasWithBasis category then completion/formal_series_ring should be provided automatically.

Yes, that's correct, and that's the whole point of having a class PolynomialMolecularDecomposition (or whatever name we use). Is it clear to you how to implement it? It will inherit again from CombinatorialFreeModule, the only part which might involve work is to get the basis_keys right. Possibly you have to define a class for these, i.e., ConjugacyClassesOfSymmetricGroupSubgroups - which is in InfiniteEnumeratedSets.

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.

Burnside ring of permutation representations
4 participants