-
Notifications
You must be signed in to change notification settings - Fork 161
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
Another method for minimum generating set for finite groups #5716
base: master
Are you sure you want to change the base?
Conversation
@fingolfin could you please review this PR ? This is the same algorithm that you reviewed in the PR to SageMath. |
My initial comment is maybe add some tests? I'm guessing you understand the types of groups you need to hit the various cases in the algorithm, and make sure it is fully tested? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your contribution, much appreciated!
Unfortunately the code has a lot of issues (I pointed out a couple of them), and it is difficult to read and/or match to the paper. Adding some more comments would make it easier to review and thus increase the chance of it being merged.
But sadly as it is right now, the code quality is not at a level that would make it acceptable to merge this.
MinimalGeneratingSet
I have some small comments, but I'd say the BIG missing thing is tests, lots of tests! As a suggestion, you could base you tests on something like this:
As (I think!) this is basically what we want to check -- we make the write group, and the set has the right size. Then, you can just call In case you wonder, that |
I have added a test ( I am eager to know the small comments as well. |
I don't think this test ever executes the code from line 76 onwards |
Yes, the first time that block runs is for |
Any other changes that I should make ? |
There is no documentation at the moment. I think in this case (but I might be wrong, feel free to comment!) this probably shouldn't be used by default for MinimalGeneratingSet, as there are cases where it is much faster and cases where it is much slower? If that's true, then it would make more sense to add it as another option, and try to give a hint when this method should be used. |
I added a paragraph in documentation for |
> return Concatenation("MinimalGeneratingSet is failing on AllSmallGroups(",String(size),")[",String(i),"]"); | ||
> fi; | ||
> G2 := GroupByGenerators(gens2); | ||
> if (not G = G2) or Length(gens1) < Length(gens2) then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be Length(gens1) != Length(gens2)
? If these are a different length, one of the functions is wrong?
I have added a function
MinimalGeneratingSetUsingChiefSeries
that computes a minimum generating set for finite groups using the algorithm derived from the research paper by Dhara Thakkar and Andrea Lucchini. We (me and Ruchit Jagodara) tried doing the same thing in SageMath first. The pull request is yet to be merged.The algorithm works as shown in this flowchart :