gap-packages / walrus

Computational Methods for Finitely Generated Monoids and Groups
https://gap-packages.github.io/walrus
BSD 3-Clause "New" or "Revised" License
2 stars 3 forks source link

Better interface for handling pregroup words #16

Open markuspf opened 5 years ago

markuspf commented 5 years ago

Currently when creating pregroup presentations one has to awkwardly give pregroup words as lists of elements:

pg := SmallPregroup(4,2);
<pregroup with 4 elements in table rep>
gap> pgp := NewPregroupPresentation(pg, [[pg[2],pg[3]],[pg[3],pg[2],pg[2]]]);
<pregroup presentation with 3 generators and 2 relators>
gap> IsHyperbolic(pgp, 1/6);
[ fail, [ [ 2, 0, 0, 0 ], [ 5, 1, 1, 1/3 ], [ 4, 1, 1, 1/3 ], [ 3, 2, 2, 2/3 ], [ 1, 2, 2, 2/3 ], [ 2, 2, 2, 2/3 ] ], [ 5, 1, 1, 1/3 ] ]

Probably pregroup words should be implemented as objects.

colva commented 5 years ago

Currently when creating pregroup presentations one has to awkwardly give pregroup words as lists of elements:

pg := SmallPregroup(4,2); <pregroup with 4 elements in table rep> gap> pgp := NewPregroupPresentation(pg, [[pg[2],pg[3]],[pg[3],pg[2],pg[2]]]); <pregroup presentation with 3 generators and 2 relators> gap> IsHyperbolic(pgp, 1/6); [ fail, [ [ 2, 0, 0, 0 ], [ 5, 1, 1, 1/3 ], [ 4, 1, 1, 1/3 ], [ 3, 2, 2, 2/3 ], [ 1, 2, 2, 2/3 ], [ 2, 2, 2, 2/3 ] ], [ 5, 1, 1, 1/3 ] ]

Probably pregroup words should be implemented as objects.

I’m not quite sure what implementing them as objects would do, but I agree that the current words are awkward


Colva Roney-Dougal Professor of Pure Mathematics Director of the Centre for Interdisciplinary Research in Computational Algebra Editor of London Mathematical Society Lecture Notes Series Editor of Proceedings A of the Royal Society of Edinburgh Director of Undergraduate Mathematics Admissions

The University of St Andrews is a charity registered in Scotland : No SC013532

markuspf commented 5 years ago

I basically want to implement "words over pregroups", hence enabling behaviour similar to handling free groups (following for illustration)

gap> pg := SmallPregroup(4,2);;
gap> x := pg[2];; y := pg[3];;
gap> w := x^5 * y *  x^-1;
<pregroup word>

It's not hard to do, I just don't want to get distracted from writing documentation and doing the first go at submitting the package before I go on with word problem solver or polish.