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

Reply via email to