I have been trying to figure out a convenient way to convert a group
presentation into a monoid presentation in GAP (so that inverses can
be regarded as separate generators). The session below demonstrates that
things can go wrong when you do unexpected things - not surprising really?
Derek Holt.
gap> a:=AbstractGenerator("a");
a
gap> G:=Group(a,a^-1);
Group( a, a^-1 )
gap> G.relators:=[a^3];
[ a^3 ]
gap> Size(G);
Error, the coset enumeration has defined more than 64000 cosets:
etc.
gap> Add(G.relators,a*a^-1);
gap> G.relators;
[ a^3, IdWord ]
gap> Size(G);
Error, Subword: illegal <from> value at
while LengthWord( rel ^ Subword( rel, 1, 1 ) ) < LengthWord( rel ) ... in
RelatorRepresentatives( G.relators ) called from
RelsSortedByStartGen( G, table ) called from
AugmentedCosetTableMtc( G, H, -1, "_x" ) called from
D.operations.Size( D ) called from
Size( G ) called from
main loop
brk>
Comments:
1) I suspect "a^-1" should not be allowed as a parameter to Group(..).
2) The fp-group functions clearly don't like having the empty word as
a relator. One might reasonably call that a bug.