# Re: [GAP Forum] Semidirect Products

```On Wed, June 24, 2015 6:06 pm, German Combariza wrote:
>
> I am trying to do a semidirect product of groups in GAP without any luck. I
> will
> appreciate if some body can show me a way to do it.
>
> The product is between the groups:
>
> G := CyclicGroup(4);
> N := FreeAbelianGroup(6);
>
> Via the homomorphism:
>
> hom := GroupHomomorphismByImages(N, N, [N.1, N.2,N.3,N.4,N.5,N.6], [N.1^-1,
> N.2^-1,N.4^-1,N.3,N.6^-1,N.5]);```
```
I think the following is supposed to work:

gap> G := CyclicGroup(4);
<pc group of size 4 with 2 generators>
gap> N := FreeAbelianGroup(6);
<fp group on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> hom := GroupHomomorphismByImages(N, N, [N.1,N.2,N.3,N.4,N.5,N.6], [N.1^-1,
> N.2^-1,N.4^-1,N.3,N.6^-1,N.5]);
[ f1, f2, f3, f4, f5, f6 ] -> [ f1^-1, f2^-1, f4^-1, f3, f6^-1, f5 ]
gap> S := SemidirectProduct(Group(hom),N);
Error, user interrupt in

Though apparently this runs into an infinite loop.

What you can do however is e.g. the following:

gap> N := Group(List(AllResidueClassesModulo(6),ClassShift));
<rcwa group over Z with 6 generators>
gap> StructureDescription(N); # free abelian group of rank 6
"Z x Z x Z x Z x Z x Z"
gap> g := ClassReflection(0,6)*ClassReflection(1,6)*ClassReflection(3,6)
>        *ClassTransposition(2,6,3,6)*ClassReflection(5,6)
>        *ClassTransposition(4,6,5,6);
<rcwa permutation of Z with modulus 6>
gap> Order(g);
4
gap> S := ClosureGroup(N,g); # the desired semidirect product
<rcwa group over Z with 7 generators>

Some checks:

gap> Action(S,AllResidueClassesModulo(6));
Group([ (), (), (), (), (), (), (3,4)(5,6) ])
gap> IsNormal(S,N);
true
gap> Q := S/N;
Group([ (), (), (), (), (), (), (1,2,3,4) ])
gap> Size(Q);
4

Hope this helps,

Stefan

_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum
```