Question about products of group elements using GAP

281 Views Asked by At

Background: In GAP I created the DihedralGroup of an octagon as a quotient of the freegroup on 2 variables and the presentation $r^8=s^2=s*r*(r^7*s)^{-1}=e \ $ as follows:

 gap> f:=FreeGroup(2);
 <free group on the generators [ f1, f2 ]>
 gap> r:=f.1;
 f1
 gap> s:=f.2;
 f2
 gap> G:=f/[r^8,s^2,s*r*(r^7*s)^-1];
 <fp group on the generators [ f1, f2 ]>
 gap> str(G);
 "D16"
 gap> r^8;
 f1^8
 gap> Elements(G);
[ <identity ...>, f1, f2, f1^2, f1^4, f1*f2, f1^3, f1^5, f1^6*f2, f1^4*f2,
 f1^6, f1^7*f2, f1^5*f2, f1^7, f1^2*f2, f1^3*f2 ]
 gap>

I would have expected that r^8 would return the identity element, instead it leaves r^8 unevaluated.

Question: What should I do so that GAP evaluates $r^8$ to $e$?

2

There are 2 best solutions below

0
On BEST ANSWER

You wantSetReducedMultiplicationwhich handles the monoid conversion for you.

 gap> f := FreeGroup( "r", "s" );;
 gap> g := f/ParseRelators(f,"r^8,s^2,rsr=s");;
 gap> SetReducedMultiplication( g );;
 gap> AssignGeneratorVariables(g);;
 #I  Assigned the global variables [ r, s ]
 gap> r^8;
 <identity ...>
 gap> (r*s)^5;
 r*s
1
On

You have defined ${\mathrm r}$ to be the first generator of the free group, so there is no way of getting it to evaluate to the identity of $G$!

But you would have the same problem with $\mathrm{G.1^8}$. With a small finite group like this one, you could do the following:

gap> elts := Elements(G);;
gap> elts[Position(elts,G.1^8)];
<identity ...>
gap> elts[Position(elts, G.1^-3 * G.2 * G.1^6 * G.1^-1 * G.1)];
f1^7*f2

There are things called rewriting systems in GAP that you can use to attempt to reduce words in finitely presented groups to a normal form, but they are a little complicated, and you have to start by converting the group to a monoid.