Page 106 - Ellingham, Mark, Mariusz Meszka, Primož Moravec, Enes Pasalic, 2014. 2014 PhD Summer School in Discrete Mathematics. Koper: University of Primorska Press. Famnit Lectures, 3.
P. 106
3.4 Some extension theory

The group H ∗ is said to be a complement of N ∗ in G . The group G is an extension of N ∗
by H ∗; we say that this extension is a split extension.

GAP offers two ways of constructing semidirect products. The first one is directly via
command SemidirectProduct(H, alpha, N). In the special case when N = GF(q )n ,
alpha must be a homomorphism from H into a matrix group of n × n matrices over a
subfield of GF(q ), or into a permutation group. The second option is to use

SemidirectProduct(H, N),

where H ≤ Aut(N ).
Let us build all possible semidirect products of C2 × C2 by C4:

gap> H := CyclicGroup(4);;
gap> N := AbelianGroup([2,2]);;

gap> hom := AllHomomorphisms(H, AutomorphismGroup(N));;
gap> for map in hom do
> Print(IdGroup(SemidirectProduct(H, map, N)),"\n");
> od;
[ 16, 10 ]
[ 16, 3 ]
[ 16, 3 ]
[ 16, 3 ]
gap> StructureDescription(SmallGroup(16,10));
"C4 x C2 x C2"
gap> StructureDescription(SmallGroup(16,3));
"(C4 x C2) : C2"

Here are two more examples:

gap> SemidirectProduct(Group((1,2,3),(2,3,4)),GF(5)^4);

gap> g:=Group((3,4,5),(1,2,3));;
gap> mats:=[[[Z(2^2),0*Z(2)],[0*Z(2),Z(2^2)^2]],
> [[Z(2)^0,Z(2)^0], [Z(2)^0,0*Z(2)]]];;
gap> hom:=GroupHomomorphismByImages(g,Group(mats),[g.1,g.2],mats);;
gap> SemidirectProduct(g,hom,GF(4)^2);


An important example of a semidirect product is the following. Let N be any group
and H = Aut(N ). Let α: H → Aut(N ) be the identity mapping. Then the semidirect prod-
uct Aut(N ) α N is called the holomorph of N .

Example 3.4.1 Let N = C n be an elementary abelian p -group of order p n . Its automor-
p
n
phism group is GL(n, p ). The holomorph AGL(n, p ) = GL(n, p ) C p is called the affine
group of dimension n over p . Show that AGL(2, 2) ∼= S4. Here is a
proof using GAP:

gap> G := AbelianGroup([2,2]);;
gap> agl := SemidirectProduct(AutomorphismGroup(G), G);;
gap> StructureDescription(agl);
"S4"
   101   102   103   104   105   106   107   108   109   110   111