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: