Las rutinas para el cómputo de las presentaciones de intentar todo para producir razonablemente pequeña presentación y no se enfocan en tratar de reflejar las posibles semi directa de estructuras de producto. Así que para conseguir una presentación que refleja esta estructura, que probablemente es el más rápido para construir a mano. En primer lugar vamos a encontrar el (sub)normal subgrupos de orden de 16 y 8:
gap> G:=SmallGroup(32,7);
<pc group of size 32 with 5 generators>
gap> n:=Filtered(NormalSubgroups(G),x->Size(x)=16
> and Length(Complementclasses(G,x))>0);
[ Group([ f1*f2, f3, f4, f5 ]), Group([ f1, f3, f4, f5 ]) ]
gap> StructureDescription(n[1]);
"C8 : C2"
gap> u:=Filtered(NormalSubgroups(n[1]),x->Size(x)=8 and IsCyclic(x));
[ Group([ f1*f2*f4, f3*f4, f5 ]), Group([ f1*f2, f3*f4, f5 ]) ]
gap> Complementclasses(n[1],u[1]);
[ <pc group with 1 generators> ]
Por lo n[1]
y u[1]
son adecuados subgrupos, teniendo complementa. Ahora recogemos los generadores:
gap> b:=last[1].1;Order(b);
f3*f5
2
gap> a:=SmallGeneratingSet(u[1])[1];Order(a);
f1*f2*f3*f5
8
gap> Complementclasses(G,n[1]);
[ <pc group with 1 generators>, <pc group with 1 generators> ]
gap> c:=last[1].1;Order(c);
f2
2
Ahora identificar cómo b actúa en \langle a\rangle, y de cómo c actúa en \langle a,b\rangle:
gap> Factorization(Group(a),a^b);
x1^-3
gap> h:=Group(a,b);
<pc group with 2 generators>
gap> Factorization(h,a^c);
x2*x1
gap> Factorization(h,b^c);
x2
Ahora tenemos una presentación de \langle a,b,c\mid a^8=b^2=c^2=1,a^b=a^{-3},a^c=ba,b^c=b\rangle. El semidirect producto estructura implica que el orden no es mayor que el de 32, pero podemos comprobar esto:
gap> f:=FreeGroup("a","b","c");
<free group on the generators [ a, b, c ]>
gap> g:=f/ParseRelators(f,"a^8=b^2=c^2=1,a^b=a^-3,a^c=ba,b^c=b");
<fp group on the generators [ a, b, c ]>
gap> Size(g);
32
gap> IsomorphismGroups(g,G);
[ a, b, c ] -> [ f1*f3*f4*f5, f3*f5, f2*f3 ]
(Ot que este isomorfismo no encontrar imágenes como las hemos elegido, también podríamos construir el isomorfismo con la mano (la construcción de la homomorphism verifica el isomorfismo de la propiedad):
gap> isom:=GroupHomomorphismByImages(g,G,GeneratorsOfGroup(g),[a,b,c]);
[ a, b, c ] -> [ f1*f2*f3*f5, f3*f5, f2 ]
gap> IsBijective(isom);
true