Using homomorphisms (see chapter Group Homomorphisms) is is possible to
express group elements as words in given generators: Create a free group
(see FreeGroup) on the correct number of generators and create a
homomorphism from this free group onto the group G in whose generators you
want to factorize. Then the preimage of an element of G is a word in the
free generators, that will map on this element again. The following example
shows how to decompose elements of S4 in the generators (1,2,3,4) and
(1,2):
gap> g:=Group((1,2,3,4),(1,2));
Group( [ (1,2,3,4), (1,2) ] )
gap> f:=FreeGroup("x","y");
<free group on the generators [x,y]>
gap> hom:=GroupHomomorphismByImagesNC(f,g,GeneratorsOfGroup(f),
> GeneratorsOfGroup(g));
[ x, y ] -> [ (1,2,3,4), (1,2) ]
gap> PreImagesRepresentative(hom,(2,3,4));
y^-1*x^-1*y^-1*x^-1
Factorization( G, elm ) F
returns a factorization of elm as word in the generators of G given in
the attribute GeneratorsOfGroup. (The corresponding free generators can
be obtained via the family fam of the result as
CollectionsFamily(fam)!.wholeGroup.)
The algorithm used computes all elements of the group to ensure a short word is found. Therefore this function should not be used when the group G has more than a few thousand elements. Because of this you also should not call this function within algorithms, but use homomorphisms instead. The sole use of this function is didactic.
gap> G:=SymmetricGroup( 6 );;
gap> r:=(3,4); s:=(1,2,3,4,5,6);
(3,4)
(1,2,3,4,5,6)
gap> H:= Subgroup(G, [ r, s ] ); # create a subgroup to force the system
# to use the generators r and s.
Group([ (3,4), (1,2,3,4,5,6) ])
gap> Factorization( H, (1,2,3) );
x2*x1*x2*x1*x2^4
gap> s*r*s*r*s^4;
(1,2,3)
[Top] [Previous] [Up] [Next] [Index]
GAP 4 manual