libsemigroups - Version 1.2.1

C++ library for semigroups and monoids

What is libsemigroups?

libsemigroups is a C++11 library containing implementations of several algorithms for computing finite and finitely presented semigroups. Namely:

The development version of libsemigroups is available on github, and some related projects are here.

The main classes in libsemigroups are named after the algorithms they implement; see, for example, libsemigroups::FroidurePin, libsemigroups::congruence::ToddCoxeter, libsemigroups::fpsemigroup::KnuthBendix, and libsemigroups::SchreierSims.

The implementations in libsemigroups::FroidurePin and libsemigroups::SchreierSims are generic and easily adapted to user-defined types.

libsemigroups uses: HPCombi which uses the SSE and AVX instruction sets for very fast manipulation of transformations, partial permutations, permutations, and boolean matrices of small size; catch for tests; and fmt for reporting.

How to use it

See the installation instructions:

libsemigroups is used in the Semigroups package for GAP, and the development version is available on Github. There were python bindings (for Python 2 and 3) for earlier versions of libsemigroups, and there will be in the future too, but presently they don’t work.

For the authors, contributors, and acknowledgements and a comparison with Semigroupe by Jean-Eric Pin see below.

Further info