Element structure of groups of order 16

Conjugacy class sizes
Because of the small order, it turns out that the nilpotency class completely determines the number of conjugacy classes of each size.

In particular, we have:

Automorphism class sizes and conjugacy class sizes
The automorphism group acts on the group, permuting conjugacy classes, and the inner automorphism group sends every element to within its conjugacy class. We thus get an action of the outer automorphism group on the set of conjugacy classes.

In the table below, the column "Sizes of orbits of size 2 conjugacy classes" gives the sizes of the orbits under the action on size 2 conjugacy classes. Each orbit on elements is twice the size, and the row underneath gives that data. Similarly for orbits of size 4.

1-isomorphism
Recall that a 1-isomorphism of groups is a bijection that induces an isomorphism on cyclic subgroups on either side. Two groups are 1-isomorphic if they admit a 1-isomorphism between them.

Of the 14 groups of order 16, 10 are not 1-isomorphic to any other group. The remaining four come in pairs. These two pairs are described below.

Order statistics raw data
Note that because number of nth roots is a multiple of n, we see that the number of elements whose order is $$1$$ or $$2$$ is odd, while all the other numbers are even. The total number of $$n^{th}$$ roots is even for all $$n = 2^k, k \ge 1$$.

Here are the GAP commands to generate these order statistics:

gap> F := List(AllSmallGroups(16),G -> List(Set(G),Order));; gap> K := List(F,L->[Length(Filtered(L,x -> x = 1)), > Length(Filtered(L,x -> x = 2)),Length(Filtered(L,x -> x = 4)), > Length(Filtered(L,x -> x = 8)),Length(Filtered(L,x -> x = 16))]);; gap> M := List([1..14], i ->[i,K[i]]);

GAP's output is:

[ [ 1, [ 1, 1, 2, 4, 8 ] ], [ 2, [ 1, 3, 12, 0, 0 ] ], [ 3, [ 1, 7, 8, 0, 0 ] ], [ 4, [ 1, 3, 12, 0, 0 ] ], [ 5, [ 1, 3, 4, 8, 0 ] ], [ 6, [ 1, 3, 4, 8, 0 ] ], [ 7, [ 1, 9, 2, 4, 0 ] ], [ 8, [ 1, 5, 6, 4, 0 ] ], [ 9, [ 1, 1, 10, 4, 0 ] ], [ 10, [ 1, 7, 8, 0, 0 ] ],  [ 11, [ 1, 11, 4, 0, 0 ] ], [ 12, [ 1, 3, 12, 0, 0 ] ], [ 13, [ 1, 7, 8, 0, 0 ] ], [ 14, [ 1, 15, 0, 0, 0 ] ] ]

A shorter version of this can be done by first writing the function OrderStatistics and then writing:

List(AllSmallGroups(16),G -> [IdGroup(G)[2],OrderStatistics(G)]);

which yields the same output.

Here are the cumulative statistics, which gives the number of $$n^{th}$$ roots:

Here are the GAP commands to generate these cumulative statistics:

gap> F := List(AllSmallGroups(16),G -> List(Set(G),Order));; gap> J := List(F,L->[Length(Filtered(L,x -> x = 1)), > Length(Filtered(L,x -> x <= 2)),Length(Filtered(L,x -> x <= 4)), > Length(Filtered(L,x -> x <= 8)),Length(Filtered(L,x -> x <= 16))]);; gap> N := List([1..14], i ->[i,J[i]]);

Here is GAP's output:

[ [ 1, [ 1, 2, 4, 8, 16 ] ], [ 2, [ 1, 4, 16, 16, 16 ] ], [ 3, [ 1, 8, 16, 16, 16 ] ], [ 4, [ 1, 4, 16, 16, 16 ] ], [ 5, [ 1, 4, 8, 16, 16 ] ], [ 6, [ 1, 4, 8, 16, 16 ] ], [ 7, [ 1, 10, 12, 16, 16 ] ], [ 8, [ 1, 6, 12, 16, 16 ] ], [ 9, [ 1, 2, 12, 16, 16 ] ], [ 10, [ 1, 8, 16, 16, 16 ] ],  [ 11, [ 1, 12, 16, 16, 16 ] ], [ 12, [ 1, 4, 16, 16, 16 ] ], [ 13, [ 1, 8, 16, 16, 16 ] ], [ 14, [ 1, 16, 16, 16, 16 ] ] ]

We can also use the OrderStatisticsCumulative function, followed by:

List(AllSmallGroups(16),G -> [IdGroup(G)[2],OrderStatisticsCumulative(G)]);

Equivalence classes based on order statistics
Here, we discuss the equivalence classes of groups of order 16 up to being order statistics-equivalent finite groups and up to the stronger notion of being 1-isomorphic groups (which means there is a bijection that restricts to isomorphisms on cyclic subgroups). See also order statistics-equivalent not implies 1-isomorphic.

Here are the GAP commands to produce a list sorted by order statistics:

gap> F := List(AllSmallGroups(16),G -> List(Set(G),Order));; gap> K := List(F,L->[Length(Filtered(L,x -> x = 1)), > Length(Filtered(L,x -> x = 2)),Length(Filtered(L,x -> x = 4)), > Length(Filtered(L,x -> x = 8)),Length(Filtered(L,x -> x = 16))]);; gap> M := List([1..14], i ->[K[i],i]);; gap> S := SortedList(M);

Here is GAP's output (note that this does not distinguish based on 1-isomorphism):

[ [ [ 1, 1, 2, 4, 8 ], 1 ], [ [ 1, 1, 10, 4, 0 ], 9 ], [ [ 1, 3, 4, 8, 0 ], 5 ], [ [ 1, 3, 4, 8, 0 ], 6 ], [ [ 1, 3, 12, 0, 0 ], 2 ], [ [ 1, 3, 12, 0, 0 ], 4 ], [ [ 1, 3, 12, 0, 0 ], 12 ], [ [ 1, 5, 6, 4, 0 ], 8 ], [ [ 1, 7, 8, 0, 0 ], 3 ], [ [ 1, 7, 8, 0, 0 ], 10 ],  [ [ 1, 7, 8, 0, 0 ], 13 ], [ [ 1, 9, 2, 4, 0 ], 7 ], [ [ 1, 11, 4, 0, 0 ], 11 ], [ [ 1, 15, 0, 0, 0 ], 14 ] ]

Explanation of the equivalences
Some of the equivalences between order statistics arise on account of 1-isomorphisms, discussed in the 1-isomorphism section. Here, we focus on the equivalences in order statistics that do not arise from 1-isomorphisms. There are three such equivalences that need to be "explained":

Nilpotency class one: abelian groups
There are 16 conjugacy classes of size 1. See the order statistics section for the order statistics of these groups.

Nilpotency class exactly two
There are 4 conjugacy classes of size 1, comprising the central elements, and 6 conjugacy classes of size two. Listed below are the conjugacy classes sorted by order. Note that the numbers listed are the numbers of conjugacy classes with the given size/order specifications. To obtain the number of elements, multiply by the size of the conjugacy class.

Here is the GAP code to generate this:

gap> B := Filtered(AllSmallGroups(16),G -> NilpotencyClassOfGroup(G) = 2);; gap> F := List(B,G->SortedList(List(ConjugacyClasses(G),c -> [Size(c),Order(Representative(c))])));; gap> K := List(F,L->[Length(Filtered(L,x->x=[1,1])), > Length(Filtered(L,x->x=[1,2])),Length(Filtered(L,x->x=[1,4])), > Length(Filtered(L,x->x=[2,2])),Length(Filtered(L,x->x=[2,4])), > Length(Filtered(L,x->x=[2,8]))]);; gap> List([1..6],i -> [IdGroup(B[i])[2],K[i]]);

GAP's output is:

[ [ 3, [ 1, 3, 0, 2, 4, 0 ] ], [ 4, [ 1, 3, 0, 0, 6, 0 ] ], [ 6, [ 1, 1, 2, 1, 1, 4 ] ], [ 11, [ 1, 3, 0, 4, 2, 0 ] ], [ 12, [ 1, 3, 0, 0, 6, 0 ] ], [ 13, [ 1, 1, 2, 3, 3, 0 ] ] ]

Nilpotency class exactly three
There are 2 conjugacy classes of size 1, comprising the central elements, 3 conjugacy classes of size 2, and 2 conjugacy classes of size 4. Listed below are the conjugacy classes sorted by order. Note that the numbers listed are the numbers of conjugacy classes with the given size/order specifications. To obtain the number of elements, multiply by the size of the conjugacy class.

Here is the GAP code to generate this:

gap> B := Filtered(AllSmallGroups(16),G -> NilpotencyClassOfGroup(G) = 3);; gap> F := List(B,G->SortedList(List(ConjugacyClasses(G),c -> [Size(c),Order(Representative(c))])));; gap> K := List(F,L->[Length(Filtered(L,x->x=[1,1])), > Length(Filtered(L,x->x=[1,2])),Length(Filtered(L,x->x=[2,2])), > Length(Filtered(L,x->x=[2,4])),Length(Filtered(L,x->x=[2,8])), > Length(Filtered(L,x->x=[4,2])),Length(Filtered(L,x->x=[4,4]))]);; gap> List([1..3],i -> [IdGroup(B[i])[2],K[i]]);

Here is GAP's output:

[ [ 7, [ 1, 1, 0, 1, 2, 2, 0 ] ], [ 8, [ 1, 1, 0, 1, 2, 1, 1 ] ], [ 9, [ 1, 1, 0, 1, 2, 0, 2 ] ] ]

Cumulative power statistics
Note that the number of first powers is always 16 and the number of 16th powers is always 1.

Equivalence classes based on power statistics
Here, we discuss the equivalence classes of groups of order 16 up to being power statistics-equivalent finite groups and up to the stronger notion of being 1-isomorphic groups (which means there is a bijection that restricts to isomorphisms on cyclic subgroups). See also power statistics-equivalent not implies 1-isomorphic.