All Tutorials Tutorial

Group Properties & Homomorphisms

Permutation groups, continued

Accessing Group Information

Every permutation group G carries basic data you can query directly: its defining generators, its degree, and the symmetric group it naturally sits inside.

> G := PermutationGroup< 12 | (1,6,7)(2,5,8,3,4,9)(11,12),
>                             (1,3)(4,9,12)(5,8,10,6,7,11) >;
> G.1;
(1, 6, 7)(2, 5, 8, 3, 4, 9)(11, 12)
> Degree(G);
12
> Ngens(G);
2
> Generic(G);
Symmetric group acting on a set of cardinality 12

G.i returns the i-th defining generator (G.0 is the identity, and a negative index gives the generator's inverse). Generators(G) returns the generating set, Ngens(G) counts it, and Generic(G) gives the ambient symmetric group G is a subgroup of. Parent(x) recovers the group an element belongs to, and GSet(G) returns the underlying G-set.

Group Order

Order(G) (or # G) computes the order of G, building a base and strong generating set (BSGS) behind the scenes if one doesn't already exist. FactoredOrder(G) returns the order pre-factored as a sequence of <prime, exponent> pairs.

> Order(G);
648
> FactoredOrder(G);
[ <2, 3>, <3, 4> ]

Abstract Properties

A family of Boolean-valued intrinsics test standard abstract properties without requiring you to reason about the structure yourself: IsAbelian, IsCyclic, IsElementaryAbelian, IsNilpotent, IsSoluble (= IsSolvable), IsPerfect, and IsSimple. IsWreathProduct(G) additionally returns the two subgroups witnessing a wreath product decomposition when one exists.

> IsAbelian(G);
false
> IsSoluble(G);
true

Homomorphisms

Many Magma constructors — quo, sub, OrbitAction, RadicalQuotient — return homomorphisms automatically, but you can also build one explicitly with hom<G -> H | L>, where L gives images for the generators of G (either as a plain list of images, or as <generator, image> pairs).

> S := SymmetricGroup(8);
> f := hom< G -> S | images >;
> Domain(f);   // G
> Codomain(f); // S
> Image(f);
Permutation group acting on a set of cardinality 8
Order = 24 = 2^3 * 3
> Kernel(f);
Permutation group acting on a set of cardinality 12
Order = 27 = 3^3

Image(f) and Kernel(f) are computed together in one pass. The @ and @@ operators apply a map and its inverse (preimage) respectively — for instance pCore(H, 2) @@ f pulls the Sylow 2-core of the image back to a subgroup of G. IsHomomorphism(G, H, Q) checks whether a proposed sequence of images Q actually extends to a well-defined homomorphism, returning the map itself if so.

Quiz