libsemigroups - Version 1.3.4¶
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;
a preliminary implementation of the Konieczny [Kon94] and Lallement-McFadden [LM90] algorithm for computing finite semigroups which act on sets.
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::Konieczny
,
libsemigroups::congruence::ToddCoxeter
,
libsemigroups::fpsemigroup::KnuthBendix
, and
libsemigroups::SchreierSims
.
The implementations in libsemigroups::FroidurePin
,
libsemigroups::Konieczny
, 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;
fmt for reporting; and eigen for some linear algebra computations.
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.
API REFERENCE
Bibliography
For the authors, contributors, and acknowledgements and a comparison with Semigroupe by Jean-Eric Pin see below.
Further info