# Number of groups of order $9261$?

I checked the odd numbers upto $10\ 000$ , whether they are group-perfect ($gnu(n)=n$ , where $gnu(n)$ is the number of groups of order $n$), and the only case I could not decide is

$$9261=3^3\times 7^3$$

What is $gnu(9261)=gnu(3^3\times 7^3)$ ?

I would already be content with a proof of $gnu(9261)<9261$, which is my conjecture because $gnu(3087)=46$ is small and $9261=3\times 3087$.

• math.stackexchange.com/a/1599437/8581 Jan 19, 2016 at 14:21
• @HagenvonEitzen That's not truet. Any finite group of order divisible by $p^k$ for $p$ prime has a subgroup of that order. In particular, a group of order $27$ has a subgroup of order $9$. Jan 19, 2016 at 19:51

CORRECTION: There are $215$ groups of order 9261 (by the same methods as used for previous questions).

As was pointed out by @James the ConstrucctAllGroups may return lists that are not yet isomorphism tested.

In this case there is one list, and a hard isomorphism test distinguishes the two groups.

m:=Filtered(l,IsList);
IsomorphismGroups(m[1][1],m[1][2]); #returns fail

• Interesting - see the new answer by @James claiming it is 215 Jan 21, 2016 at 13:05

I think the answer is $\operatorname{gnu}( 9261 ) = 215$. By itself, the grpconst package function ConstructAllGroups may produce a list in which not all groups have been distinguished up to isomorphism. Thus it is not sufficient to simply count the number of elements of the list it returns. One must also check whether there are any nested lists consisting of groups whose isomorphism has not been decided by the algorithm. The GrpConst package then provides the function DistinguishGroups that employs stronger methods to resolve any undecided isomorphisms remaining.

Here is a simplified version of the frontend that I use that employs these considerations.

CountGroups := function( n )
local L, trouble, okay, c;

L := ConstructAllGroups( n );
okay := Filtered( L, x -> not IsList( x ) );
trouble := Filtered( L, IsList );

if Length( trouble ) > 0 then
for c in trouble do
c := DistinguishGroups( c, true );
if ForAny( c, IsList ) then
Error( "could not resolve some isomorphisms" );
fi;
Append( okay, c );
od;
fi;

return Length( okay );
end;;


Using this, we obtain the claimed result.

gap> CountGroups( 9261 );
215


Having said all that, I confess I am far from an expert on GAP. If I have made a mistake, I should be happy to improve my understanding.

• Looks correct to me - I think the answer is likely most likely right (I did not rerun it). Thanks for drawing attention to the documentation as well ;-) indeed, it says that it may return lists. Jan 21, 2016 at 18:51
• It would be very disappointing if GAP might made an error with the ConstructOfAllGroups-command. I was sure the command is reliable. Jan 21, 2016 at 20:28
• @AlexanderKonovalov Thanks for your comment, and for improving my answer formatting. Jan 21, 2016 at 20:30
• @Peter Please note that my answer does not suggest any error in the ConstructAllGroups command, but rather with how it is used. Jan 21, 2016 at 20:31
• @Peter I agree, but ... RTFM? :-) The first paragraph of documentation for this function fairly clearly describes its behaviour. I'm sure the package authors had their reasons for making this design choice. (See, for example, p. 9 of the manual.) Jan 21, 2016 at 20:45

@james was right, please do not take my answer as a correct answer. It seems that gnu(9261)=215

• Thanks for approving the result. How long did the calculation take ? Jan 19, 2016 at 21:05
• It takes about 5 hours with an intel core i7, 128 GB RAM 2800Mhz Jan 19, 2016 at 21:14
• Thanks that you took the time although the result was already mentioned. Jan 19, 2016 at 21:15
• @AngelBlasco thanks - good to cross-check! Same number using two different methods. Jan 19, 2016 at 21:16
• @AngelBlasco oops - please read all further findings above and note ConstructAllGroups  specification. Could you please correct the answer? Jan 21, 2016 at 23:53