CongruenceByPairs

template<typename TFroidurePinType>
class CongruenceByPairs : public libsemigroups::CongruenceInterface, protected libsemigroups::detail::BruidhinnTraits<TFroidurePinType::element_type>

Defined in cong-pair.hpp.

This class contains an implementation of a brute force breadth first search algorithm for computing left, right, and 2-sided congruences on semigroups and monoids.

This page contains a summary of the member functions of the class CongruenceByPairs, and related things in libsemigroups.

See also

congruence_kind and tril.

Example
using namespace libsemigroups;
auto      rg = ReportGuard();
using Transf = typename TransfHelper<8>::type;
FroidurePin<Transf> S({Transf({7, 3, 5, 3, 4, 2, 7, 7}),
                       Transf({1, 2, 4, 4, 7, 3, 0, 7}),
                       Transf({0, 6, 4, 2, 2, 6, 6, 4}),
                       Transf({3, 6, 3, 4, 0, 6, 0, 7})});

using P = CongruenceByPairs<decltype(S)>;

P cong1(right, S);
cong1.number_of_classes();   // 11804
P cong2(left, S);
cong2.number_of_classes();   // 11804
P cong3(twosided, S);
cong3.number_of_classes();   // 11804

Aliases

EqualTo

No doc.

Hash

No doc.

Product

No doc.

class_index_type

Type for indices of congruence class indices.

const_iterator

const_reference

The type of a const reference to an element_type .

element_type

froidure_pin_type

No doc.

non_trivial_class_iterator

non_trivial_classes_type

reference

The type of a reference to an element_type .

state_type

No doc.

Constructors

CongruenceByPairs(CongruenceByPairs const&) = default

A default copy constructor.

CongruenceByPairs(CongruenceByPairs&&) = default

A default move constructor.

CongruenceByPairs(congruence_kind, T const&)

CongruenceByPairs(congruence_kind, std::shared_ptr<FroidurePinBase>) noexcept

CongruenceByPairs(congruence_kind, std::shared_ptr<T>, bool)

No doc.

Deleted constructors

CongruenceByPairs() = delete

operator=(CongruenceByPairs const&) = delete

operator=(CongruenceByPairs&&) = delete

Member functions inherited from CongruenceInterface

add_pair(std::initializer_list<size_t>, std::initializer_list<size_t>)

add_pair(word_type const&, word_type const&)

cbegin_generating_pairs() const noexcept

cbegin_ntc()

cend_generating_pairs() const noexcept

cend_ntc()

class_index_to_word(class_index_type)

const_contains(word_type const&, word_type const&) const

contains(word_type const&, word_type const&)

has_parent_fpsemigroup() const noexcept

has_parent_froidure_pin() const noexcept

has_quotient_froidure_pin() const noexcept

is_quotient_obviously_finite()

is_quotient_obviously_infinite()

kind() const noexcept

less(word_type const&, word_type const&)

non_trivial_classes()

number_of_classes()

number_of_generating_pairs() const noexcept

number_of_generators() const noexcept

number_of_non_trivial_classes()

parent_fpsemigroup() const

parent_froidure_pin() const

quotient_froidure_pin()

set_number_of_generators(size_t)

word_to_class_index(word_type const&)

Member functions inherited from Runner

dead() const noexcept

finished() const

kill() noexcept

report() const

report_every() const noexcept

report_every(TIntType)

report_every(std::chrono::nanoseconds)

report_why_we_stopped() const

run()

run_for(TIntType)

run_for(std::chrono::nanoseconds)

run_until(T&&)

run_until(bool(*)())

running() const noexcept

running_for() const noexcept

running_until() const noexcept

started() const

stopped() const

stopped_by_predicate() const

timed_out() const