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: