13  Produto semidireto

13.1 O produto semidireto de grupos

Dados dois grupos \(N\) e \(H\) e um homomorfismo \(\alpha:H\to\mbox{Aut}(H)\), construimos o produto semidireto \(G=N\rtimes H\) na segiunte forma. O conjunto de \(G\) é o produto cartesiano \(N\times H\) e a multiplicação está definida pela seguinte regra: \[ (n_1,h_1)(n_2,h_2)=(n_1\cdot \alpha(h_1)(n_2),h_1h_2). \] É um exercício fácil mostrar que esta regra define um grupo. Neste projeto vamos ver como construir produto semidireto em GAP e depois vamos usar esta construção para construir os grupos de ordem \(12\)

13.2 Exploração interativa

Usando a função AutomorphismGroup(G), vamos construir alguns automorfimos.

gap> AutomorphismGroup(SmallGroup(4, 2));
<group with 4 generators>
gap> StructureDescrition(last);
"S3"
gap> AutomorphismGroup(DirectProduct(CyclicGroup(2), CyclicGroup(2)));
<group with 4 generators>
gap>  StructureDescription(last);
"S3"
gap>  AutomorphismGroup(CyclicGroup(3)); 
<group with 1 generator>
gap> StructureDescription( last );
"C2"

13.3 Tarefa 1

Agora vamos construir alguns homomorfismos de um grupo \(H\) para o grupo de automorfismos de \(N\), nos casos em que tais grupos são: \(C_2 \times C_2\) ou \(C_4\) ou \(C_3\). Usaremos a função GroupHomomorphismByImages( H, AutomorphismGroup(N), gens, imgs ), onde gens é uma lista de geradores de H de mesmo tamanho da lista de respectivas imagens imgs em AutomorphismGroup(N).

Primeiro, vamos fazer um exemplo e construir um homomorfismo do grupo grupo simétrico \(S_4=\left<(1,2), (1,2,3,4)\right>\) para o grupo \(\mbox{Aut}(S_3) \cong S_3 =\left<(1,2), (1,2,3)\right>\).

gap> s4 := SymmetricGroup(4);
Sym( [ 1 .. 4 ] )
gap>  gens:=GeneratorsOfGroup(s4);
[ (1,2,3,4), (1,2) ]
gap>  s3:=SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap>  imgs:=[(1,2),(2,3)];
[ (1,2), (2,3) ]
gap>  f := GroupHomomorphismByImages(s4, s3, gens, imgs);
[ (1,2,3,4), (1,2) ] -> [ (1,2), (2,3) ]
gap>  Image(f,(1,2,3,4));
(1,2)
gap>  Image(f, (1,3)(2,4));
()
gap>  Image(f, (1,2,3,4)*(1,2));
(1,3,2)
  1. Agora, construa um homomorfismo \(f\) de \(H:=C_4\) para \(\mbox{Aut}(C_3) \cong C_2\). Verifique qual é a imagem de \(a^3\) por \(f\), onde \(\left<a\right>=C_4\).
  2. Faça o mesmo de \(H:=C_2 \times C_2\) para \(\mbox{Aut}(C_3) \cong C_2\). Use a função DirectProduct e também GeneratorsOfGroup.

13.4 Tarefa 2

Agora vamos usar a função SemidirectProduct(H, a, N), onde \(a\) é um homomorfismo de \(H\) em \(\mbox{Aut}(N)\), já construído em tarefa anterior. Vamos obter os produtos semidiretos com \(H=C_4\) e \(N=C_3\). E como tarefa, faça o mesmo com \(H=C_2 \times C_2\) e \(N=C_3\).

gap> h:=CyclicGroup(4);
<pc group of size 4 with 2 generators>
gap>  n:=CyclicGroup(3) ;
<pc group of size 3 with 1 generator>
gap>  aut:=AutomorphismGroup(n);
<group with 1 generator>
gap>  alpha:=GroupHomomorphismByImages(h, aut, [GeneratorsOfGroup(h)[1]], [GeneratorsOfGroup(aut)[1]]); 
[ f1 ] -> [ [ f1 ] -> [ f1^2 ] ]
gap>  g:=SemidirectProduct(h,alpha,n);
<pc group of size 12 with 3 generators>
gap>  StructureDescription(g);
"C3 : C4"
gap>  alpha:=GroupHomomorphismByImages(h, aut, [GeneratorsOfGroup(h)[1]], [GeneratorsOfGroup(aut)[1]^2]);
[ f1 ] -> [ Pcgs([ f1 ]) -> [ f1 ] ]
gap>  g:=SemidirectProduct(h,alpha,n);
<pc group of size 12 with 3 generators>
gap>  StructureDescription(g);
"C12"

13.5 Tarefa 3

Um modo alternativo de se obter os homomorfismos de \(H\) para \(\mbox{Aut}(N)\) é usar a função AllHomomorphisms(H, AutomorphismGroup(N)). Vamos obter os homomorfismos de \(H\) para \(\mbox{Aut}(N)\) usando tal função.

gap> h:=CyclicGroup(4);
<pc group of size 4 with 2 generators>
gap>  n:=CyclicGroup(3);
<pc group of size 3 with 1 generator>
gap>  aut:=AutomorphismGroup(n);
<group with 1 generator>
gap>  a:=AllHomomorphisms(h, aut);
[ [ f1 ] -> [ IdentityMapping( <pc group of size 3 with 1 generator> ) ], 
  [ f1 ] -> [ [ f1 ] -> [ f1^2 ] ] ]
gap>  List(a, f-> StructureDescription(SemidirectProduct(h, f, n)));
[ "C12", "C3 : C4" ]

Usando AllHomomorphisms como acima, obtenha todos os produtos semidiretos \(N\rtimes H\)

  1. com \(H=C_3\) e \(N=C_4\);
  2. com \(H=C_4\) e \(H=C_3\);
  3. com \(H=C_2 \times C_2\) e \(N=C_3\);
  4. e também com \(H=C_3\) e \(N=C_2 \times C_2\).

Verifique nas suas respostas que os únicos grupos obtidos do produto semidireto \(N \rtimes H\) são os seguintes:

  1. \(C_{12}\) (com \(H=C_3\) e \(N=C_4\));
  2. \(C_3 \rtimes C_4\) e \(C_{12}\) (com \(H=C_4\) e \(N=C_3\));
  3. \(C_6 \times C_2\) e \(D_{12}\) (com \(H=C_2 \times C_2\) e \(N=C_3\));
  4. \(C_6 \times C_2\) e \(A_4\) (com \(H=C_3\) e \(N=C_2 \times C_2\)).

Portanto, existem exatamente \(5\) grupos de ordem \(12\), a menos de isomorfismos. Podemos obtê-los via produto semidireto \(N \rtimes H\), onde os grupos \(H\) e \(N\) correspondem a um grupo de ordem \(4\) e de ordem \(3\), respectivamente e vice-versa.

13.6 Tarefa 4

Escreva uma função all_semidirect_products( N, H ) que devolve todos os produtos semidiretos \(N\rtimes H\). A sua função deve funcionar como nos seguintes exemplos.

gap> all_semidirect_products( CyclicGroup( 3 ), CyclicGroup( 2 ));
[ <pc group of size 6 with 2 generators>, <pc group of size 6 with 2 generators> ]
gap> List( last, StructureDescription );
[ "C6", "S3" ]
gap> all_semidirect_products( CyclicGroup( 4 ), CyclicGroup( 2 ));
[ <pc group of size 8 with 3 generators>, <pc group of size 8 with 3 generators> ]
gap> List( last, StructureDescription );
[ "C4 x C2", "D8" ]
gap> all_semidirect_products( DirectProduct( CyclicGroup( 2 ), CyclicGroup( 2 )), CyclicGroup( 3 ));
[ <pc group of size 12 with 3 generators>, <pc group of size 12 with 3 generators>, <pc group of size 12 with 3 generators> ]
gap> List( last, StructureDescription );
[ "C6 x C2", "A4", "A4" ]