libsemigroups - Version 1.0.3¶
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 Froidure-Pin algorithm for computing finite semigroups [FP97];
the Todd-Coxeter algorithm for finitely presented semigroups and monoids;
the Knuth-Bendix algorithm for finitely presented semigroups and monoids;
the Schreier-Sims algorithm for permutation groups.
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