> < ^ From:

> < ^ Subject:

Dear Bill, dear Gap Forum,

I had the same problem, and probably also other people. What I usually do (and

probably what is more or less the natural thing to do here) is to convert the

group into a isomorphic permutation group with "OperationCosetsFpGroup", and

then define two mutually inverse isomorphisms phi, psi between my original group

g and the permutation group p.

I would solve your example this way:

gap> f:=FreeGroup("x");

Group( x )

gap> x:=f.1;

x

gap> g:=f/[x^2];

Group( x )

gap> x:=g.1;

x

gap> p:=OperationCosetsFpGroup(g,TrivialSubgroup(g));

Group( (1,2) )

gap> phi:=GroupHomomorphismByImages(g,p,g.generators,p.generators);

GroupHomomorphismByImages( Group( x ), Group( (1,2) ), [ x ], [ (1,2) ] )

gap> psi:=GroupHomomorphismByImages(p,g,p.generators,g.generators);

GroupHomomorphismByImages( Group( (1,2) ), Group( x ), [ (1,2) ], [ x ] )

gap> IsIsomorphism(phi); IsIsomorphism(psi);

true

true

gap> ((x*x*x*x*x*x*x)^phi)^psi;

x^-1

(This is a strange, but at least canonical GAP says "x".)

Note that this approach does unfortunately not always (but almost) work. Namely

it does not work when one of the generators of g becomes trivial by the

relations you gave. Then this element would be mapped onto the empty permutation

under phi, so GAP seems to throw it out of the set of generators of p. (It

obviously is not needed to generate p. But the generating sets of g and p are

not "compatible" anymore, so you have a harder time defining phi and psi.)

Maybe there's a better way, in this case I would be interested, too.

Regards,

Richard

_______________________________________________________________________________ http://www.minet.uni-jena.de/~richard/

> < [top]