Dear Russell Blyth,
You asked about factoization of group elements in GAP4.
Unfortunately (as you mentioned already) the function `Factorization'
has disappeared in GAP4. This is now done by taking pre-images, but
the output of this can be rather ugly.
There are two possible solutions to this problem.
One is to convert the GAP3 code of Factorization to GAP4.
Another solution consists in constructing the map from the finite
group into the free group (rather than the other way round). Then we
can use the function `ImagesRepresentative'. This by itself does not
solve the problem, because the "principal" method for this
operation does basically the same as `PreImagesRepresentative'.
However, the "second" method is a lot better for your purpose.
gap> G:=SymmetricGroup(6); Sym( [ 1 .. 6 ] ) gap> r:=(1,2); s:=(1,2,3,4,5,6); (1,2) (1,2,3,4,5,6) gap> K:=Subgroup(G,[r,s]); Group([ (1,2), (1,2,3,4,5,6) ]) gap> F:=FreeGroup("x","y"); <free group on the generators [ x, y ]> gap> kk:= GeneratorsOfGroup(K); [ (1,2), (1,2,3,4,5,6) ] gap> ff:= GeneratorsOfGroup(F); [ x, y ] gap> hom:= GroupGeneralMappingByImages( K, F, kk, ff ); [ (1,2), (1,2,3,4,5,6) ] -> [ x, y ] gap> NiceImage:= ApplicableMethod(ImagesRepresentative,[hom,(2,3,4)],0,2); function( hom, elm ) ... end gap> NiceImage( hom, (2,3,4) ); y^4*x*y*x*y
As a general comment we would like to point out that the problem of
finding a short word (in the generators) for a group element is
an interesting one. However in GAP there is no clever
functionality for this as yet.
We hope this answer helps; if you have any more questions, please ask.
Willem de Graaf