Ordering of Permutation Groups

Magma has an implementation of the Hulpke--Linton algorithm for a lexicographically least generating set of a permutation group [HL03]. The underlying point ordering is as given by the Labelling intrinsic function. This generating set is used internally by Magma for fast access in sets of permutation groups. Direct access is possible by the intrinsic functions below.

CanonicalGenerators(G) : GrpPerm -> SeqEnum[GrpPermElt], GrpPermElt
Returns the sequence of lexicographically minimal generators of G as described in [HL03]. The underlying point order is as given by the Labelling intrinsic function. Two subgroups of the same symmetric group are equal if and only if the two lexicographically minimal generating sequences are equal. The second return value is the lexicographically last group element. This may be used to construct a linear ordering of subgroups compatible with the standard subset ordering (see Lemma 6 of op. cit.).
CanonicalInvariant(G) : GrpPerm -> SeqEnum[SeqEnum], Seqenum
Return the same permutations as CanonicalGenerators but as sequences which may be tested easily for equality and lexicographic ordering.

Example GrpPerm_CanonicalGenerators (H64E45)

We take a transitive group and a random subgroup and compare their canonical generating sets.
> G := TransitiveGroup(6,4);
> G;
Permutation group G acting on a set of cardinality 6
Order = 12 = 2^2 * 3
  (1, 4)(2, 5)
  (1, 3, 5)(2, 4, 6)
> CanonicalGenerators(G);
[
  (2, 5)(3, 6),
  (1, 2, 3)(4, 5, 6)
]
(1, 6, 5)(2, 4, 3)
> H := sub<G|Random(G), Random(G)>;
> H;
Permutation group H acting on a set of cardinality 6
  (1, 6, 2)(3, 5, 4)
  (1, 5, 6)(2, 3, 4)
> CanonicalGenerators(H);
[
  (2, 5)(3, 6),
  (1, 2, 3)(4, 5, 6)
]
(1, 6, 5)(2, 4, 3)
The equality of the canonical generators shows that G equals H, despite different defining generators.
V2.28, 13 July 2023