Metacyclic p-groups

Magma contains functions for constructing all metacyclic groups of order pn. It can also decide if a given p-group is metacyclic, construct invariants which distinguish this metacyclic group from all others of this order, and construct a standard presentation for the group.

This section describes the functions for accessing these algorithms. The functions were developed by Mike Newman, Eamonn O'Brien, and Michael Vaughan-Lee.

MetacyclicPGroups(p, n: parameters) : RngIntElt, RngIntElt -> SeqEnum
Return a list of the metacyclic groups of order pm, where p is a prime and n is a positive integer.
     PCGroups: BoolElt                   Default: true
If true, the groups returned are in category GrpPC, otherwise they are in category GrpFP -- this will be faster if the groups have large class.
IsMetacyclicPGroup(P) : Grp -> BoolElt
The group P is a p-group, either pc- or matrix or permutation group; if P is metacyclic, then return true, else false.
InvariantsMetacyclicPGroup(P) : Grp -> Tup
The group P is a metacyclic p-group, either pc- or matrix or permutation group; return tuple of invariants which uniquely identify metacyclic p-group P. This tuple which contains at least four terms, < r, s, t, n > has the following meaning: P has order pn + s; its derived quotient is Cpr x Cps; its derived group is cyclic of order pn - r; it has exponent pn + s - t.

If p = 2, then additional invariants are needed to distinguish among the groups. We record the abelian invariants of the centre of P. If s = 1 and the centre of P has order 2, then the 2-group is maximal class and we record whether it is dihedral, quaternion or semidihedral. If s > 1 then the group has two cyclic central normal subgroups of order 2s - 1 whose central quotients are both semidihedral, or dihedral and quaternion. The invariant tuple has length at most 6.

StandardMetacyclicPGroup(P): Grp -> GrpPC
The group P is a metacyclic p-group, either pc- or matrix or permutation group; return metacyclic p-group having a canonical pc-presentation which is isomorphic to P. If two metacyclic p-groups have the same canonical presentation, then they are isomorphic.
NumberOfMetacyclicPGroups(p, n): RngIntElt, RngIntElt -> SeqEnum
Return number of metacyclic groups of order pn.
HasAllPQuotientsMetacyclic(G): GrpFP -> BoolElt, SeqEnum
HasAllPQuotientsMetacyclic(G, p): GrpFP -> BoolElt
Return true if for all primes p all p-quotients of the finitely-presented group G are metacyclic; otherwise return false and a description of the set of primes for which G has non-metacyclic p-quotient.

If a prime p is supplied as a second argument, then the function returns true if all p-quotients of G are metacyclic; otherwise it returns false.

Example GrpData_meta (H72E7)

> X := MetacyclicPGroups (3, 6);
> #X;
11
> X[4];
GrpPC of order 729 = 3^6
PC-Relations:
    $.1^3 = $.3,
    $.2^3 = $.4,
    $.3^3 = $.6,
    $.4^3 = $.5,
    $.5^3 = $.6,
    $.2^$.1 = $.2 * $.6^2
> H := SmallGroup (729, 59);
> IsMetacyclicPGroup (H);
true
> I := InvariantsMetacyclicPGroup(H);
> I;
<2, 2, 2, 4, [], , >
> S := StandardMetacyclicPGroup (H);
GrpPC : S of order 729 = 3^6
PC-Relations:
    S.1^3 = S.3,
    S.2^3 = S.4,
    S.3^3 = S.6,
    S.4^3 = S.5,
    S.5^3 = S.6,
    S.2^S.1 = S.2 * S.6^2
> /* find this group in list */
> [IsIdenticalPresentation (S, X[i]): i in [1..#X]];
[ false, false, false, true, false, false, false, false, false, false, false ]
> /* so this group is #4 in list */
> NumberOfMetacyclicPGroups (19, 7);
14
> Q := FreeGroup (4);
> G := quo < Q |  Q.2^2, Q.4^3, Q.2 * Q.3 * Q.2 * Q.3^-1, Q.1^9>;
> /* are all p-quotients of G metacyclic? */
> HasAllPQuotientsMetacyclic (G);
false [ 3 ]
> /* the 3-quotient is not metacyclic */
V2.28, 13 July 2023