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: