[GAP Forum] Computing number of isomorphism classes of finite group

Moritz Schmitt moritz.schmitt at gmail.com
Mon May 19 10:04:16 BST 2014


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 <max at quendi.de>:
> Dear Moritz,
>
> On 15.05.2014, at 10:14, Moritz Schmitt <moritz.schmitt at 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



More information about the Forum mailing list