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