The p-groups of Order Dividing p7

Magma contains the means to construct all p-groups of order pn where n≤7. This section describes the functions for accessing these constructions. The data used in the constructions was supplied by Hans Ulrich Besche, Bettina Eick, Eamonn O'Brien, Mike Newman and Michael Vaughan-Lee [BE99a], [BEO01], [BE99b], [O'B90], [BE01], [O'B91], [MNVL04], [OVL05].

SearchPGroups(p, n: parameters) : RngIntElt, RngIntElt -> SeqEnum
Produce a sequence of groups of order pn satisfying the conditions specified by the following parameters. The restrictions on the order are n ≤7 or p=2 and n≤9.
     Rank: SetEnum                       Default: {1, ... n}
All groups returned will have Frattini quotient rank in Rank. This parameter may also be set to a single integer.
     Class: SetEnum                      Default: {1, ... n}
All groups returned will have p-class in Class. This parameter may also be set to a single integer.
     Select: Program                     Default: true
The parameter must be set to a program returning either true or false when given a p-group satisfying the above conditions. All groups G returned will then satisfy Select(G) eq true.
     Limit: RngIntElt                    Default: 0
If Limit is set to a positive number n, then the program may end its search and return when there are at least n groups found.
CountPGroups(p, n: parameters) : RngIntElt, RngIntElt -> SeqEnum
Count the number of groups of order pn satisfying the conditions specified by the parameters. The parameters are the same as for SearchPGroups, except that the Limit parameter is ignored.

Example GrpData_p7 (H72E6)

We search the groups of order 197 for specific examples. There are, in total, 9380741 groups with this order. We start with a search for those of rank 5, class 3, and exponent 19. Since we do not set the Limit parameter, we will get a sequence containing all the examples.
> time Q := SearchPGroups(19, 7:Rank := 5, Class := 3,
>    Select := func<G|IsPrime(Exponent(G))> );
Time: 0.050
> #Q;
4
> Q[1];
GrpPC of order 893871739 = 19^7
PC-Relations:
  $.2^$.1 = $.2 * $.6,
  $.6^$.1 = $.6 * $.7
This time we limit the number returned.
> time    Q := SearchPGroups(19, 7:Rank := 4, Class := {3,4},
>    Select := func<G|IsPrime(Exponent(G))>, Limit := 5);
Time: 13.090
> #Q;
5
> [pClass(G):G in Q];
[ 3, 3, 3, 3, 3 ]
> time    Q4 := SearchPGroups(19, 7:Rank := 4, Class := 4,
>   Select := func<G|IsPrime(Exponent(G))>, Limit := 5);
Time: 0.150
> #Q4;
6
Note that the limit is not always adhered to exactly. We can also count the number of groups with our property.
> time CountPGroups(19, 7:Rank := 4, Class := {3,4},
>   Select := func<G|IsPrime(Exponent(G))>);
Time: 334.720
43
> time CountPGroups(19, 7:Rank := 4, Class := 4,
>    Select := func<G|IsPrime(Exponent(G))>);
10
Time: 0.310
V2.28, 13 July 2023