Congruences

libsemigroups_pybind11 implements several algorithms for computing a congruence of a semigroup or monoid. 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 Congruence 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 ToddCoxeter and KnuthBendix.

All of the classes for congruences 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, ToddCoxeter.run_for() and ToddCoxeter.run_until().

The "handedness" of a congruence is determined by:

class congruence_kind(self: _libsemigroups_pybind11.congruence_kind, value: int)

The values in this class can be used to indicate that a congruence should be 2-sided, left, or right.

Members:

left

right

twosided

The classes in libsemigroups_pybind11 for congruences are: