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) (
- 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\).
- 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émGeneratorsOfGroup
.
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\)
- com \(H=C_3\) e \(N=C_4\);
- com \(H=C_4\) e \(H=C_3\);
- com \(H=C_2 \times C_2\) e \(N=C_3\);
- 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:
- \(C_{12}\) (com \(H=C_3\) e \(N=C_4\));
- \(C_3 \rtimes C_4\) e \(C_{12}\) (com \(H=C_4\) e \(N=C_3\));
- \(C_6 \times C_2\) e \(D_{12}\) (com \(H=C_2 \times C_2\) e \(N=C_3\));
- \(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" ] [