Finitely presented semigroups¶
libsemigroups
implements several algorithms for computing finitely
presented semigroups and monoids. The main algorithms implemented are
Todd-Coxeter, Knuth-Bendix, algorithms for C(4) small overlap monoids (by
Kambites and Tsalakou), and brute-force enumeration; see the links below for
further details. As a convenience, libsemigroups
also has a class
libsemigroups::FpSemigroup
that runs some predetermined variants of
Todd-Coxeter, Knuth-Bendix, and the brute-force enumeration in parallel. This
class is, at present, not very customisable, and lacks some of the fine grained
control offered by the classes implementing individual algorithms, such as
libsemigroups::fpsemigroup::ToddCoxeter
and
libsemigroups::fpsemigroup::KnuthBendix
.
All of the classes for finitely presented semigroups and monoids in
libsemigroups
can be used “interactively”, in the sense that they can be
run for a particular amount of time, or until some condition is met; for
further details see, for example,
libsemigroups::Runner::run_for()
and
libsemigroups::Runner::run_until()
.
The classes in libsemigroups
for finitely presented semigroups
and monoids are: