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

Cannot compute FrattiniSubgroup for G=PerfectGroup(1344,2) but can compute for SmallGroup(IdGroup(G)) #980

Closed
hungaborhorvath opened this issue Dec 4, 2016 · 6 comments

Comments

@hungaborhorvath
Copy link
Contributor

hungaborhorvath commented Dec 4, 2016

GAP cannot compute the FrattiniSubgroup of PerfectGroup(1344,2) (errors out with no method found), but can if it is defined as a small group.

 ┌───────┐   GAP v4.8.6-922-g46c3e87 of 2016-12-02 22:34:53 (CET)
 │  GAP  │   http://www.gap-system.org
 └───────┘   Architecture: x86_64-pc-linux-gnu-gcc-default64
 Libs used:  gmp, readline
 Loading the library and packages ...
 Components: trans 1.0, prim 3.0, small* 1.0, id* 1.0
 Packages:   AClib 1.2, Alnuth 3.0.0, AtlasRep 1.5.1, AutPGrp 1.6, 
             Browse 1.8.6, CRISP 1.4.4, Cryst 4.1.12, CrystCat 1.1.6, 
             CTblLib 1.2.2, FactInt 1.5.3, FGA 1.3.1, GAPDoc 1.5.1, IO 4.4.6, 
             IRREDSOL 1.3.1, LAGUNA 3.7.0, Polenta 1.3.7, Polycyclic 2.11, 
             RadiRoot 2.7, ResClasses 4.5.0, Sophus 1.23, SpinSym 1.5, 
             TomLib 1.2.6, Utils 0.43
 Try '??help' for help. See also '?copyright', '?cite' and '?authors'
gap> G := PerfectGroup(1344,2);
L3(2) N 2^3
gap> FrattiniSubgroup(G);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `FittingFreeLiftSetup' on 1 arguments at /home/ghorvath/work/gap/lib/methsel2.g:241 called from
FittingFreeLiftSetup( G 
 ) at /home/ghorvath/work/gap/lib/maxsub.gi:176 called from
MaximalSubgroupClassesSol( G 
 ) at /home/ghorvath/work/gap/lib/maxsub.gi:343 called from
<function "unknown">( <arguments> )
 called from read-eval loop at *stdin*:2
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk> 
gap> IdGroup(G);
[ 1344, 814 ]
gap> FrattiniSubgroup(SmallGroup(1344,814));
Group([ (4,6)(9,12)(10,13)(11,14), (3,5)(7,8)(9,12)(10,13), (1,2)(7,8)(9,12)
(11,14) ])
gap> 

Same happens with perfect groups 1920.4, 1920.5, 1920.6, 1920.7.

@hulpke
Copy link
Contributor

hulpke commented Dec 5, 2016

PerfectGroup returns by default a finitely presented group.
Use

 G := PerfectGroup(IsPermGroup,1344,2);

and it works.

@hungaborhorvath
Copy link
Contributor Author

@hulpke Ah, very nice, thank you! I must have missed this in the manual. I wonder, though, why they are not represented as permutation groups by default....

@hulpke
Copy link
Contributor

hulpke commented Dec 5, 2016

Presentations are the "native" format of the library (as it was published in the book by Plesken and Holt. Reasons include:

  • Presentations are more compact (for these kinds of groups)
  • The presentation indicates the composition structure and action on chief factors nicely
  • It is easy to form central products

Because of this the person who implemented the GAP library decided to stick with presentations as the default format, though they are not the best way of working with the groups on the computer.

@hungaborhorvath
Copy link
Contributor Author

@hulpke Thank you for this information. It is in fact very interesting. I went back to check the manual and saw that the last sentence (just before 50.8-1 SizesPerfectGroups) says that all groups are represented as fp-groups instead of permutation groups, and there is also a comment about computational time. Would it be possible to include your points above into this part of the manual? I think it would be interesting/helpful.

Also, in 50.8-2 PerfectGroup it does not say that the default filter is IsSubgroupFpGroup. Of course it is implicitly stated by the examples, but still it confused me, so could a sentence be added about which filter is the default? And maybe another comment on computational speed?

I am happy to do a PR on this if you prefer. Thanks.

hulpke added a commit to hulpke/gap that referenced this issue Dec 5, 2016
Only call these methods if `CanComputeFittingFree` is set. This will be set
for perm and pc groups, as well as if HasFittingFreeLiftSetup is set.
Add some fallback methods.

This fixes gap-system#980
hulpke added a commit to hulpke/gap that referenced this issue Dec 5, 2016
Only call these methods if `CanComputeFittingFree` is set. This will be set
for perm and pc groups, as well as if HasFittingFreeLiftSetup is set.
Add some fallback methods.
Finiteness test fallback for lattice

This fixes gap-system#980
hulpke added a commit to hulpke/gap that referenced this issue Dec 5, 2016
Only call these methods if `CanComputeFittingFree` is set. This will be set
for perm and pc groups, as well as if HasFittingFreeLiftSetup is set.
Add some fallback methods.
Finiteness test fallback for lattice

This fixes gap-system#980
@fingolfin
Copy link
Member

@hungaborhorvath adding a comment as to what the default filter is sounds like a good idea, feel free to open a PR. As to the computational speed, I am not so sure; after all, this is relevant to virtually all algorithms in computational group theory. Discussing it in one particular spot seems arbitrary.

Finally, what should be done with this issue now? I see three options:

  1. We could add an IsFpGroup method for either FrattiniSubgroup or FittingFreeLiftSetup or whatever, which works via IsomorphismPermGroups.
  2. Alternatively, we could install a method which simply prints an error and suggests to the user to convert the group to another format.
  3. Lastly, we could decide that things are fine as they are.

@hulpke
Copy link
Contributor

hulpke commented Dec 7, 2016

This is fixed in #968 (by having Fp groups etc. use more generic methods).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants