> < ^ From:

< ^ Subject:

Dear GAP-Forum,

J"urgen Ecker asked:

> I was trying to turn the following group into a permutation group: > gap> f := FreeGroup(4);; > gap> r := [ f.1^2, f.2^2, [...] > gap> g := f/r;; > gap> PermGroup(g); > Error, List Element: <list>[1025] must have a value at [...] > WHY DOES THIS HAPPEN ?

The function that gets invoked by 'PermGroup' is the standard routine to

convert a group to a permutation group. It simply takes the right regular

representation. To get this representation, elements have to be compared.

This is impossible in general for finitely presented groups, as elements are

only given by representatives in the free group. The comparison will always

take place in the free group, it will yield 'true' only, if the

representatives in the free group for both elements are actually the same.

See the chapter on 'Finitely Presented Groups' for a more elaborate

explanation of the problems arising in this context.

In the case of the 'PermGroup' routine, products are formed by

multiplication which seem not to lie in the group (as the representative of

the product in the free group might differ from the elements

given in the list of element representatives).

Obviously the routine cannot cope with such cases.

As a coset enumeration has already taken place to obtain a list of elements,

one should use the result of this coset enumerations to get a permutation

representation.

You might be interested how to achieve this in GAP:

Specify a subgroup for coset enumeration (if you want to

ensure that the representation is faithful you might take the trivial

subgroup) and use the command 'OperationCosetsFpGroup' to get the

permutation representation on the cosets. The manual will tell you more.

If you don't care about the degree of the representations involved and if

you insist on using 'PermGroup' for conversion, you have to install a

function like the following one (which ought to become a standard function

in the next version) before calling 'PermGroup'.

Note, however, that there is no advantage over the method outlined above

in using this function, it just calls 'OperationCosetsFpGroups' to get the

action on the cosets of the trivial subgroup.

FpGroupOps.PermGroup:=function(G)

local P;

P:=OperationCosetsFpGroup(G,TrivialSubgroup(G));

P.bijection:=InverseMapping(OperationHomomorphism(G,P));

return P;

end;

Best,

Alexander Hulpke

> < [top]