Congruence

class Congruence : public libsemigroups::CongruenceInterface

Defined in cong.hpp.

On this page we describe the functionality relating to the Congruence class. This class can be used for computing a congruence over a semigroup by running every applicable algorithm from libsemigroups (and some variants of the same algorithm) in parallel. This class is provided for convenience, at present it is not very customisable, and lacks some of the fine grained control offered by the classes implementing individual algorithms, such as congruence::ToddCoxeter and congruence::KnuthBendix.

See

congruence_type and tril.

Example

FpSemigroup S;
S.set_alphabet(3);
S.set_identity(0);
S.add_rule({1, 2}, {0});
S.is_obviously_infinite();  // false

Congruence cong(twosided, S);
cong.add_pair({1, 1, 1}, {0});
cong.nr_classes(); // 3

Public types

Words and class indices