> < ^ Date: Wed, 29 Jun 1994 09:52:00 +0200
> < ^ From: Alexander Hulpke <hulpke@math.colostate.edu >
< ^ Subject: Re: Semi-direct products

Dear GAP-Forum.,

Given a finite group G and an automorphism f of G,
it would be nice if GAP would give an easy implementation
of the semi-direct product G.<f> of G by the cyclic
group generated by f.

Does 'SemidirectProduct' not suit your needs?

For example

```gap> g:=SymmetricGroup(6);
gap> hom:=GroupHomomorphismByImages(g,g,g.generators,[(1,4)(2,3)(5,6),
> (1,6)(2,5)(3,4),(1,3)(2,6)(4,5),(1,5)(2,4)(3,6),(1,2)(3,5)(4,6)])
gap> H:=Group(hom);
Group( GroupHomomorphismByImages( Group( (1,6), (2,6), (3,6), (4,6),
(5,6) ), Group( (1,6), (2,6), (3,6), (4,6), (5,6) ),
[ (1,6), (2,6), (3,6), (4,6), (5,6) ], [ (1,4)(2,3)(5,6), (1,6)(2,5)(3,4),
(1,3)(2,6)(4,5), (1,5)(2,4)(3,6), (1,2)(3,5)(4,6) ] ) )
gap> Size(H);
10
```

We will need a mapping from H onto a group of automorphisms. In this case,
it is the identity:

```gap> sdp:=SemidirectProduct(H,IdentityMapping(H),g);
Group( SemidirectProductElement( GroupHomomorphismByImages( Group( (1,6),
(2,6), (3,6), (4,6), (5,6) ), Group( (1,6), (2,6), (3,6), (4,6), (5,6) ),
[ (1,6), (2,6), (3,6), (4,6), (5,6) ], [ (1,4)(2,3)(5,6), (1,6)(2,5)(3,4),
(1,3)(2,6)(4,5), (1,5)(2,4)(3,6), (1,2)(3,5)(4,6)
] ), GroupHomomorphismByImages( Group( (1,6), (2,6), (3,6), (4,6),
(5,6) ), Group( (1,6), (2,6), (3,6), (4,6), (5,6) ),
[ (1,6), (2,6), (3,6), (4,6), (5,6) ], [ (1,4)(2,3)(5,6), (1,6)(2,5)(3,4),
(1,3)(2,6)(4,5), (1,5)(2,4)(3,6), (1,2)(3,5)(4,6)
] ), () ), SemidirectProductElement( IdentityMapping( Group( (1,6), (2,6),
(3,6), (4,6), (5,6) ) ), IdentityMapping( Group( (1,6), (2,6), (3,6), (4,6),
(5,6) ) ), (1,6) ), SemidirectProductElement( IdentityMapping( Group( (1,6),
(2,6), (3,6), (4,6), (5,6) ) ), IdentityMapping( Group( (1,6), (2,6), (3,6),
(4,6), (5,6) ) ), (2,6) ), SemidirectProductElement( IdentityMapping( Group(
(1,6), (2,6), (3,6), (4,6), (5,6) ) ), IdentityMapping( Group( (1,6), (2,6),
(3,6), (4,6), (5,6) ) ),
(3,6) ), SemidirectProductElement( IdentityMapping( Group( (1,6), (2,6),
(3,6), (4,6), (5,6) ) ), IdentityMapping( Group( (1,6), (2,6), (3,6), (4,6),
(5,6) ) ), (4,6) ), SemidirectProductElement( IdentityMapping( Group( (1,6),
(2,6), (3,6), (4,6), (5,6) ) ), IdentityMapping( Group( (1,6), (2,6), (3,6),
(4,6), (5,6) ) ), (5,6) ) )
gap> Size(sdp);
7200
```

Alexander Hulpke

> < [top]