Semidirect Products with GAP – Group Theory and Computer Algebra

computer-algebra-systemsgapgroup-theorysemidirect-product

I'm wondering how to specify to GAP which homomorphism to use when constructing a semidirect product. I'm trying to have it construct $\left(\mathbb{Z}_p\times\mathbb{Z}_p\right)\rtimes_\varphi S_3$. Since $\mathrm{Aut}\left(\mathbb{Z}_p\times\mathbb{Z}_p\right)\cong GL_2(\mathbb{F}_p)$, I want to specify $\varphi:S_3\rightarrow\mathrm{Aut}\left(\mathbb{Z}_p\times\mathbb{Z}_p\right)$ as $\varphi:S_3\rightarrow GL_2(\mathbb{F}_p)$ element by element (i.e. give a 2×2 matrix for each element of $S_3$).

I want to do this just to do group element multiplications quickly. I'll obviously specify $p$ when necessary.

I'm fairly new to GAP so a low-level answer (or reference) would be appreciated.

Best Answer

In case you still don't have an answer: You want to use the GAP command SemidirectProduct( <g>, <hom>, <n> ). Here, <hom> is a group homomorphism from the group <g> to the automorphism group of the group <n>. In GAP this might look like this (for $p=7$):

gap> h := CyclicGroup(7);;
gap> g := DirectProduct( h, h );;
gap> aut := AutomorphismGroup( g );;
gap> iso := IsomorphismGroups( GL(2,7), aut );;
gap> s := SymmetricGroup(3);;
gap> GeneratorsOfGroup( s );
[ (1,2,3), (1,2) ]
gap> hom := GroupHomomorphismByImages( s, GL(2,7), GeneratorsOfGroup( s ), [ a, b ] );
[ (1,2,3), (1,2) ] -> [ [ [ Z(7)^0, 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ], [ [ Z(7)^0, 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ] ]

a and b are your favourite images of (1,2,3) and (1,2), respectively. I chose One(GL(2,7)) because I'm lazy. Note that you have to tell GAP that your matrices are over $\mathbb{F}_p$. Fortunately, that can be done like this:

gap> a := [ [ 1, 2 ], [ 3, 4 ] ] * One( GF(7) ); 
[ [ Z(7)^0, Z(7)^2 ], [ Z(7), Z(7)^4 ] ]
gap> a in GL(2,7);
true

Now you can compose hom and iso and define your semidirect product:

gap> semi := SemidirectProduct( s, CompositionMapping( iso, hom ), g );
<pc group with 4 generators>
Related Question