Dear Max, Thanks for your very helpful reply!
I was able to compute the number of isomorphism classes for quite a number of groups that I am interested in. The only thing that didn't work so far was to calculate the number of conjugacy classes of subgroups of the Coxeter group B_6 (which is isomorphic to O(6) \cap GL(6,Z)). I get the following error: +--------------------------------------------------------------------+ | Sage Version 5.11, Release Date: 2013-08-13 | | Type "notebook()" for the browser-based notebook interface. | | Type "help()" for help. | +--------------------------------------------------------------------+ sage: gap_console() ┌───────┐ GAP, Version 4.6.4 of 04-May-2013 (free software, GPL) │ GAP │ http://www.gap-system.org └───────┘ Architecture: x86_64-unknown-linux-gnu-gcc-default64 Libs used: gmp, readline Loading the library and packages ... Components: trans 1.0, prim 2.1, small* 1.0, id* 1.0 Packages: Alnuth 3.0.0, AutPGrp 1.5, CTblLib 1.2.2, FactInt 1.5.3, GAPDoc 1.5.1, LAGUNA 3.6.3, Polycyclic 2.11, TomLib 1.2.2 Try '?help' for help. See also '?copyright' and '?authors' gap> G := WreathProduct(CyclicGroup(2), SymmetricGroup(6)); <group of size 46080 with 3 generators> gap> cc := ConjugacyClassesSubgroups(G);; Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `GroupByGenerators' on 2 arguments called from GroupByGenerators( arg[1], arg[2] ) called from Group( SmallGeneratingSet( stb ), () ) called from VectorspaceComplementOrbitsLattice( n, a, ser[i - 1], nts[j] ) called from LatticeSubgroups( G ) called from <function "unknown">( <arguments> ) called from read-eval loop at line 2 of *stdin* you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> Is this a bug? Or is GAP trying to say "too complicated, cannot do it"? Please let me know if I should provide further debugging information. Best, Moritz 2014-05-16 13:36 GMT+02:00 Max Horn <m...@quendi.de>: > Dear Moritz, > > On 15.05.2014, at 10:14, Moritz Schmitt <moritz.schm...@gmail.com> wrote: > >> Dear GAP community, >> >> Given a finite group in GAP, how do I compute the number of >> isomorphism classes of subgroups of this group? >> >> I wasn't able to find a function that does it for me. What I could do, >> I guess, is to compute representatives of the conjugacy classes of >> subgroups of the group and then check all representatives pairwise for >> isomorphism. But would that be the GAP way to do it? > > I'd say "yes, that's how you do it". Though you can and should refine the > last step using group invariants, as actually testing for isomorphism can be > quite slow. Many group invariants can be euseful, e.g. the size of the > groups, whether they are solvable or not, abelian invariants, fitting > subgroup, etc. And for "small" subgroups, using IdGroup might actually be the > best way to split them into separate classes. > > To illustrate this with an example: > > gap> G:=GL(3,4); > GL(3,4) > gap> Size(G); > 181440 > gap> cc:=ConjugacyClassesSubgroups(G);; > ap> Length(cc); > 282 > gap> ccR:=List(cc,Representative);; > gap> Collected(List(ccR,Size)); > [ [ 1, 1 ], [ 2, 1 ], [ 3, 5 ], [ 4, 4 ], [ 5, 1 ], [ 6, 5 ], [ 7, 1 ], > [ 8, 5 ], [ 9, 6 ], [ 10, 1 ], [ 12, 20 ], [ 15, 4 ], [ 16, 7 ], > [ 18, 5 ], [ 21, 2 ], [ 24, 16 ], [ 27, 3 ], [ 30, 4 ], [ 32, 3 ], > [ 36, 15 ], [ 45, 1 ], [ 48, 29 ], [ 54, 2 ], [ 60, 3 ], [ 63, 4 ], > [ 64, 1 ], [ 72, 5 ], [ 80, 2 ], [ 81, 1 ], [ 90, 1 ], [ 96, 11 ], > [ 108, 2 ], [ 144, 20 ], [ 160, 2 ], [ 162, 1 ], [ 168, 1 ], [ 180, 6 ], > [ 189, 1 ], [ 192, 13 ], [ 216, 1 ], [ 240, 8 ], [ 288, 10 ], > [ 432, 2 ], [ 480, 8 ], [ 504, 1 ], [ 540, 1 ], [ 576, 13 ], [ 648, 1 ], > [ 720, 2 ], [ 864, 2 ], [ 960, 2 ], [ 1080, 1 ], [ 1440, 2 ], > [ 1728, 1 ], [ 2880, 8 ], [ 8640, 2 ], [ 60480, 1 ], [ 181440, 1 ] ] > > # There are 270 conjugacy classes of subgroups of order < 2000: > gap> Number(ccR,g->Size(g)<2000); > 270 > > # But these amount to only 109 isomorphism classes > gap> Length(Set(Filtered(ccR,g->Size(g)<2000),IdGroup)); > 109 > > # This leaves 12 classes of groups of order >= 2000: > gap> Number(ccR,g->Size(g)>=2000); > 12 > > # The two subgroups of order 8640 are isomorphic > gap> c8640:=Filtered(ccR,g->Size(g)=8640);; > gap> IsomorphismGroups(c8640[1],c8640[2]) <> fail; > true; > > # The eight subgroups of order 2880 split into (at least) two isomorphism > classes: > gap> List(c2880,g->IdGroup(FittingSubgroup(g))); > [ [ 48, 52 ], [ 16, 14 ], [ 16, 14 ], [ 16, 14 ], [ 16, 14 ], [ 16, 14 ], > [ 16, 14 ], [ 48, 52 ] ] > > # Indeed, groups 1 and 8 are isomorphic, as are 2..7: > gap> IsomorphismGroups(c2880[1],c2880[8]) <> fail; > true > gap> ForAll([3..7], i->IsomorphismGroups(c2880[2],c2880[i]) <> fail); > true > > # So in total, we have 109 isomorphism classes of subgroups of order <2000, > # and 2+1+1=4 of order >=2000, for a total of 113. > > > Hope that helps, > Max _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum