¿Puede alguien orientarme, o incluso explicar aquí, el algoritmo que utiliza GAP para calcular el producto semidirecto de dos grupos de permutación que da como resultado otro grupo de permutación?
EJEMPLO:
gap> C3:=Grupo Cíclico(IsPermGroup,3);
Grupo([ (1,2,3) ])
gap> C7:=CyclicGroup(IsPermGroup,7);
Grupo([ (1,2,3,4,5,6,7) ])
gap> A:=AutomorfismoGrupo(C7);
< grupo con 1 generadores >
gap> elts := Elementos(A);
[ IdentityMapping( Group([ (1,2,3,4,5,6,7) ]),
[ (1,2,3,4,5,6,7) ] -> [ (1,3,5,7,2,4,6) ],
[ (1,2,3,4,5,6,7) ] -> [ (1,4,7,3,6,2,5) ],
[ (1,2,3,4,5,6,7) ] -> [ (1,5,2,6,3,7,4) ],
[ (1,2,3,4,5,6,7) ] -> [ (1,6,4,2,7,5,3) ],
[ (1,2,3,4,5,6,7) ] -> [ (1,7,6,5,4,3,2) ] ]
gap> sigma := elts[2];
[ (1,2,3,4,5,6,7) ] -> [ (1,3,5,7,2,4,6) ]
gap> sigma^3;
[ (1,2,3,4,5,6,7) ] -> [ (1,2,3,4,5,6,7) ]
gap> map := GroupHomorphismByImages(C3, A, GeneratorsOfGroup(C3), [sigma]);
[ (1,2,3) ] -> [ [ (1,2,3,4,5,6,7) ] -> [ (1,3,5,7,2,4,6) ] ]
gap> SDP := SemidirectProduct(C3, map, C7);
Grupo([ (2,3,5)(4,7,6), (1,2,3,4,5,6,7) ])