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: