Finitely presented semigroupsΒΆ
libsemigroups
implements several algorithms for computing finitely
presented semigroups and monoids. The main algorithms implemented are
Todd-Coxeter, Knuth-Bendix, and brute-force enumeration; see the links below
for further details. As a convenience, libsemigroups_pybind11
also has a class
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
KnuthBendix
.
At present some of the features for finitely presented semigroups in
libsemigroups
are not present in libsemigroups_pybind11
. We plan to add
the missing features in a later release.
All of the classes for finitely presented semigroups and monoids in
libsemigroups_pybind11
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,
KnuthBendix.run_for()
and
KnuthBendix.run_until()
.
The classes in libsemigroups_pybind11
for finitely presented semigroups and
monoids are: