Thierry Dana-Picard's question provoked two immediate replies by Peter
Webb and Martin Wursthorn which both stated: I have written GAP
routines ... . I enjoyed seeing this, I think it shows that the
GAP-forum serves its purpose.
However I would like to take this instance to appeal to use the
GAP-forum also for informally informing others of the existence of
such routines without waiting for a question. This aspect has not been
emphazised when the function of the GAP-forum was explained in the
README file with the announcement of GAP, but I think as time proceeds
there will be more such "hidden treasures" which might be useful for
others as well if one knows of them. So please tell in the GAP-forum
about routines that you have written (and hopefully are willing to
share) as well as about interesting applications. It should be clear
that since the GAP-forum is unrefereed this does in no way conflict
with formal publications.
Not being very well-versed in group theory, I have used GAP mainly for
combinatorial problems and finite relation algebras (including
polygroups, hypergraphs and a library of small examples). I find it a
very convenient language to write little routines that test
conjectures on these finite structures, and recently I have started
putting it together as a structured domain. However there is a big
difference between code written for private research and a public
package with documentation and extensive comments.
If other forum members are interested in the areas mentioned above, I
will gladly share what I've got. I'm certainly interested in feedback,
and on whether other GAP users are applying GAP outside group theory.
I realise that the developers are mainly commited to supporting
algorithms related to groups, but I think they have come up with a
nice, clean development system (and are giving it away free!) that
could be a basis for several other areas of abstract algebra and
discrete mathematics. Have other users of GAP implemented algorithms
and structures for universal algebra or related areas?
At this point I am only aware of GRAPE by Leonard Soicher for
graphs. Some of my routines would greatly benefit from his approach
but at the moment small finite polygroups are represented by a domain
that contains a list of all elements (records) and an operation table.
Most simple minded algorithms in this area loop of all subsets
of elements, so the complexity very bad and they won't work for larger
structures anyway. Relations are implemented as boolean matrices, but
it is simple to convert them to GRAPE format and then use the
interface to Brendan McKay's 'nauty' to get a more compact description
of the relation. In the near future I will also interface to some
c-code of my own, that searches for finite counter examples and
applies some theorem proving techniques for relation algebras.
BTW does anyone know of a program that tests finitary relational
structures for isomorphism (e.g. nauty does it for binary relational