Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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 2x2 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.

share|cite|improve this question
Have you tried looking the Gap Manual specifically the section on semi-direct products? It looks like you might be able to do what you want with this function. – JSchlather Apr 5 '12 at 7:23
Thanks @JacobSchlather, I'll read those pages and post a solution if I can figure it out. Others are of course still welcome to help :) – Sid Raval Apr 5 '12 at 14:57
I noticed you still don't have an answer. You might get a quicker response if you email your question to the gap forum: – William DeMeo Apr 8 '12 at 1:16
up vote 5 down vote accepted

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);

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>
share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.