This article gives both numerical information and links to known facts/conjectures about the distribution of nilpotency class among finite p-groups, i.e., how many p-groups there are of a given nilpotency class.
Facts known for general primes
Facts known for specific primes
The case 
|
|
total number of groups |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6 |
class 7
|
0 |
1 |
1 |
1
|
1 |
2 |
1 |
0 |
1
|
2 |
4 |
2 |
0 |
2
|
3 |
8 |
5 |
0 |
3 |
2
|
4 |
16 |
14 |
0 |
5 |
6 |
3
|
5 |
32 |
51 |
0 |
7 |
26 |
15 |
3
|
6 |
64 |
267 |
0 |
11 |
117 |
114 |
22 |
3
|
7 |
128 |
2328 |
0 |
15 |
947 |
1137 |
197 |
29 |
3
|
8 |
256 |
56092 |
0 |
22 |
31742 |
21325 |
2642 |
320 |
38 |
3
|
Here is the GAP code to generate this information:
[SHOW MORE]
We use the function SortArithmeticFunctionSizes, which is not in-built but is easy to code (follow link to get code). We also use the in-built function NilpotencyClassOfGroup. Using these functions, the above data can be generated as follows:
gap> SortArithmeticFunctionSizes(2,0,NilpotencyClassOfGroup);
[ [ 0, 1 ] ]
gap> SortArithmeticFunctionSizes(2,1,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 1 ] ]
gap> SortArithmeticFunctionSizes(2,2,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 2 ], [ 2, 0 ] ]
gap> SortArithmeticFunctionSizes(2,3,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 3 ], [ 2, 2 ], [ 3, 0 ] ]
gap> SortArithmeticFunctionSizes(2,4,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 5 ], [ 2, 6 ], [ 3, 3 ], [ 4, 0 ] ]
gap> SortArithmeticFunctionSizes(2,5,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 7 ], [ 2, 26 ], [ 3, 15 ], [ 4, 3 ], [ 5, 0 ] ]
gap> SortArithmeticFunctionSizes(2,6,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 11 ], [ 2, 117 ], [ 3, 114 ], [ 4, 22 ], [ 5, 3 ], [ 6, 0 ] ]
gap> SortArithmeticFunctionSizes(2,7,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 15 ], [ 2, 947 ], [ 3, 1137 ], [ 4, 197 ], [ 5, 29 ], [ 6, 3 ], [ 7, 0 ] ]
gap> SortArithmeticFunctionSizes(2,8,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 22 ], [ 2, 31742 ], [ 3, 21325 ], [ 4, 2642 ], [ 5, 320 ], [ 6, 38 ], [ 7, 3 ], [ 8, 0 ] ]
Although the command can in principle be run for

, it requires a huge memory allocation (this can be controlled setting the "-o" command line option when starting GAP). To obtain the result for

, it is best to split the list of all small groups of order

into sub-lists and run the function on each.
Here is the same information, now given in terms of the fraction of groups of a given order that are of a given nilpotency class. For ease of comparison, all fractions are written as decimals, rounded to the fourth decimal place.
|
|
total number of groups |
average of values (equal weighting on all groups) |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6 |
class 7
|
0 |
1 |
1 |
0 |
1
|
1 |
2 |
1 |
1 |
0 |
1
|
2 |
4 |
2 |
1 |
0 |
1
|
3 |
8 |
5 |
1.4 |
0 |
0.6000 |
0.4000
|
4 |
16 |
14 |
1.8571 |
0 |
0.3571 |
0.4286 |
0.2143
|
5 |
32 |
51 |
2.2745 |
0 |
0.1373 |
0.5098 |
0.2941 |
0.0588
|
6 |
64 |
267 |
2.5843 |
0 |
0.0412 |
0.4382 |
0.4270 |
0.0824 |
0.0112
|
7 |
128 |
2328 |
2.6937 |
0 |
0.0064 |
0.4068 |
0.4884 |
0.0846 |
0.01245 |
0.0013
|
8 |
256 |
56092 |
2.4941 |
0 |
0.0004 |
0.5659 |
0.3802 |
0.0471 |
0.0057 |
0.0007 |
0.0001
|
Below is the information for the probability distribution by nilpotency class using the
cohomology tree probability distribution:
[SHOW MORE]
|
|
total number of groups |
weighted average nilpotency class under the distribution |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6 |
class 7
|
0 |
1 |
1 |
0 |
1
|
1 |
2 |
1 |
1 |
0 |
1
|
2 |
4 |
2 |
1 |
0 |
1
|
3 |
8 |
5 |
1.25 |
0 |
0.7500 |
0.2500
|
4 |
16 |
14 |
1.6172 |
0 |
0.4766 |
0.4297 |
0.0938
|
5 |
32 |
51 |
1.9889 |
0 |
0.2772 |
0.4684 |
0.2427 |
0.0117
|
6 |
64 |
267 |
2.3329 |
0 |
0.1533 |
0.4231 |
0.3623 |
0.0598 |
0.0015
|
The case 
The case 
|
|
total number of groups |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6
|
0 |
1 |
1 |
1
|
1 |
5 |
1 |
0 |
1
|
2 |
25 |
2 |
0 |
2
|
3 |
125 |
5 |
0 |
3 |
2
|
4 |
625 |
15 |
0 |
5 |
6 |
4
|
5 |
3125 |
77 |
0 |
7 |
30 |
31 |
9
|
6 |
15625 |
684 |
0 |
11 |
149 |
386 |
99 |
39
|
7 |
78125 |
34297 |
0 |
15 |
7069 |
22652 |
3274 |
1188 |
99
|
Here is the GAP code to generate this information:
[SHOW MORE]
We use the function SortArithmeticFunctionSizes, which is not in-built but is easy to code (follow link to get code). We also use the in-built function NilpotencyClassOfGroup. Using these, we get:
gap> SortArithmeticFunctionSizes(5,0,NilpotencyClassOfGroup);
[ [ 0, 1 ] ]
gap> SortArithmeticFunctionSizes(5,1,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 1 ] ]
gap> SortArithmeticFunctionSizes(5,2,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 2 ], [ 2, 0 ] ]
gap> SortArithmeticFunctionSizes(5,3,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 3 ], [ 2, 2 ], [ 3, 0 ] ]
gap> SortArithmeticFunctionSizes(5,4,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 5 ], [ 2, 6 ], [ 3, 4 ], [ 4, 0 ] ]
gap> SortArithmeticFunctionSizes(5,5,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 7 ], [ 2, 30 ], [ 3, 31 ], [ 4, 9 ], [ 5, 0 ] ]
gap> SortArithmeticFunctionSizes(5,6,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 11 ], [ 2, 149 ], [ 3, 386 ], [ 4, 99 ], [ 5, 39 ], [ 6, 0 ]
]
gap> SortArithmeticFunctionSizes(5,7,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 15 ], [ 2, 7069 ], [ 3, 22652 ], [ 4, 3274 ], [ 5, 1188 ], [ 6, 99 ], [ 7, 0 ] ]
Note that for the
case, the new version of the SmallGroup library (obtain here) is needed, and additional memory may need to be allocated using the command line option `-o' (e.g., gap -o 5G).
Here is the same information, now given in terms of the fraction of groups of a given order that are of a given nilpotency class. For ease of comparison, all fractions are written as decimals, rounded to the fourth decimal place.
|
|
total number of groups |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6
|
0 |
1 |
1 |
1
|
1 |
5 |
1 |
0 |
1
|
2 |
25 |
2 |
0 |
1
|
3 |
125 |
5 |
0 |
0.6000 |
0.4000
|
4 |
625 |
15 |
0 |
0.3333 |
0.4000 |
0.2667
|
5 |
3125 |
77 |
0 |
0.0909 |
0.3896 |
0.4026 |
0.1169
|
6 |
15625 |
684 |
0 |
0.0161 |
0.2178 |
0.5643 |
0.1447 |
0.5702
|
7 |
78125 |
34297 |
0 |
0.0044 |
0.2063 |
0.6605 |
0.0955 |
0.0346 |
0.0289
|
The case 
|
|
total number of groups |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6
|
0 |
1 |
1 |
1
|
1 |
7 |
1 |
0 |
1
|
2 |
49 |
2 |
0 |
2
|
3 |
343 |
5 |
0 |
3 |
2
|
4 |
2401 |
15 |
0 |
5 |
6 |
4
|
5 |
16807 |
83 |
0 |
7 |
32 |
33 |
11
|
6 |
117649 |
860 |
0 |
11 |
165 |
508 |
133 |
43
|
Here is the GAP code to generate this information:
[SHOW MORE]
We use the function SortArithmeticFunctionSizes, which is not in-built but is easy to code (follow link to get code). We also use the in-built function NilpotencyClassOfGroup. Using these functions, the above data can be generated as follows:
gap> SortArithmeticFunctionSizes(7,0,NilpotencyClassOfGroup);
[ [ 0, 1 ] ]
gap> SortArithmeticFunctionSizes(7,1,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 1 ] ]
gap> SortArithmeticFunctionSizes(7,2,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 2 ], [ 2, 0 ] ]
gap> SortArithmeticFunctionSizes(7,3,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 3 ], [ 2, 2 ], [ 3, 0 ] ]
gap> SortArithmeticFunctionSizes(7,4,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 5 ], [ 2, 6 ], [ 3, 4 ], [ 4, 0 ] ]
gap> SortArithmeticFunctionSizes(7,5,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 7 ], [ 2, 32 ], [ 3, 33 ], [ 4, 11 ], [ 5, 0 ] ]
gap> SortArithmeticFunctionSizes(7,6,NilpotencyClassOfGroup);
[ [ 0, 0 ], [ 1, 11 ], [ 2, 165 ], [ 3, 508 ], [ 4, 133 ], [ 5, 43 ], [ 6, 0 ] ]
Here is the same information, now given in terms of the fraction of groups of a given order that are of a given nilpotency class. For ease of comparison, all fractions are written as decimals, rounded to the fourth decimal place.
|
|
total number of groups |
class 0 |
class 1 |
class 2 |
class 3 |
class 4 |
class 5 |
class 6
|
0 |
1 |
1 |
1
|
1 |
7 |
1 |
0 |
1
|
2 |
49 |
2 |
0 |
1
|
3 |
343 |
5 |
0 |
0.6000 |
0.4000
|
4 |
2401 |
15 |
0 |
0.3333 |
0.4000 |
0.2667
|
5 |
16807 |
83 |
0 |
0.0843 |
0.3855 |
0.3976 |
0.1325
|
6 |
117649 |
860 |
0 |
0.0128 |
0.1919 |
0.5907 |
0.1547 |
0.0500
|