Dear GAP forum,
Juergen Ecker asked:
I want to have the elements of my groups expressed in terms of the generators
of the group. Is there a GAP-function that does this (I believe, no) or an
easy way to do it "by hand"?
The generic function for this is 'Factorization'. However, this function
keeps a list of all elements of the group and thus is applicable only to
groups of moderate size.
For larger groups, homomorphisms offer the possibility to decompose elements
into generators, for example:
gap> g:=Group((1,2),(1,2,3,4)); Group( (1,2), (1,2,3,4) ) gap> f:=FreeGroup(2); Group( f.1, f.2 ) gap> hom:=GroupHomomorphismByImages(f,g,f.generators,g.generators); GroupHomomorphismByImages( Group( f.1, f.2 ), Group( (1,2), (1,2,3,4) ), [ f.1, f.2 ], [ (1,2), (1,2,3,4) ] ) gap> hom.isMapping:=true; # tell GAP it is an homomorphism true gap> PreImagesRepresentative(hom,(1,2,3)); f.1^-1*f.2^-1*f.1^-1*f.2^-3*f.1^-1*f.2^-1*f.1^-2*f.2^-1*f.1^-1*f.2^-1*f.1^-1
Unfortunately the word returned by this method usually is very long, in fact it
might be too long to be feasible. One can play a lot of heuristic tricks to
get the word length down. For example see the Abstab package by Philip
Osterlund, available in the 'incoming' directory of our ftp server.