[GAP Forum] Cyclically Reduced Words
Alexander Hulpke
hulpke at mac.com
Sun Apr 2 23:00:51 BST 2006
Dear GAP-Forum,
On Mar 27, 2006, at 8:48 AM, pjd at maths.gla.ac.uk wrote:
>
> Given the alphabet {a,a^-1,b,b^-1}, how can I get GAP to produce a
> list of
> cyclically reduced words of length at most 3, 4, etc?
There is no predefined function which does this. What I would do if I
had to construct these words is to take the code for `Tuples' (in lib/
combinat.gi) to construct combinations of [-n,-(n-1),-
(n-2)..-2,-1,1,2,3,..n] and modify it to not permit i following -i
and vice versa or have a word starting in i and ending in -i and vice
versa.
If your application is not time/memory critical the following naive
approach is likely the easiest:
f:=FreeGroup("a","b");
IsCycRed:=l->l[1]<>-l[Length(l)] and ForAll([1..Length(l)-1],j->l[j]
<>-l[j+1]);
len:=4; # or whatever
w:=Filtered(Tuples([-2,-1,1,2],len),IsCycRed);
fam:=FamilyObj(One(f));;
List(w,i->AssocWordByLetterRep(fam,i));
Best,
Alexander Hulpke
More information about the Forum
mailing list