-
Notifications
You must be signed in to change notification settings - Fork 160
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
Add LatticeSubgroups
method for the case IsHandledByNiceMonomorphism
#4639
Add LatticeSubgroups
method for the case IsHandledByNiceMonomorphism
#4639
Conversation
for the case `IsHandledByNiceMonomorphism`
> [ 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5) ], | ||
> [ Z(5), 0*Z(5), Z(5)^2, Z(5)^2, Z(5)^2, Z(5)^0 ], | ||
> [ Z(5)^3, Z(5), Z(5)^3, 0*Z(5), 0*Z(5), Z(5)^0 ] ] ] );; | ||
gap> Length( ConjugacyClassesSubgroups( g ) ); |
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.
How long does this actually take, though?x
When I tried something in this vein earlier today, the "nice" permutation group had relatively large degree and working with was rather slow.
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.
This example needs about 30 seconds on my notebook.
The permutation group is clearly not optimal --I get degree 7560, the smallest possible degree would be 200.
In larger examples, no reasonable faithful permutation representation exists at all, but this argument affects all methods that are based on the "nice monomorphism" idea.
I would say that the new method yields an improvement for "middle-sized examples" and does not cause problems for situations where better methods may become available. (This is how I understand @hulpke 's suggestion.)
But if we think that it would be better not to provide an admittedly slow way to computations like in this example (compared to what Magma offers) then perhaps we should discuss about restricting the "nice monomorphism" approach to small enough situations.
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.
Nah, I am fine with this PR, just wondering how effective it is in this example
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.
What irritates me is that the "nice monomorphism" approach in this example is faster than what one gets when the matgrp
package is loaded and FittingFreeLiftSetup
for the group is set; I get about 50 seconds in this situation.
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.
I am actually pleased that the lattice computation goes through with matgrp
without a hitch, as I have not really tried it before.
As for the performance, I can think of two possibilities:
- Some calculation still goes through nice monomorphisms -- not every subroutine used has a
solvable radical
analog - Certain calculations that happen frequently (say element membership) actually take significantly longer in the matrix representation and we need to figure out how to improve this.
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.
Yes, I had noticed that the NiceMonomorphism
value is set in the group after the computations with matgrp
.
LatticeSubgroups
method for the case IsHandledByNiceMonomorphism
LatticeSubgroups
method for the case IsHandledByNiceMonomorphism
resolves #4637