Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

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$?

share|improve this question
add comment

2 Answers

up vote 6 down vote accepted

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
share|improve this answer
add comment

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.

share|improve this answer
    
So, I'll find the 'proper' way of doing it in chapter 36 of the manual, is that right? Please let me know, if there is more. –  ndroock1 Feb 7 '12 at 12:32
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.