Konieczny

template<typename TElementType, typename TTraits = KoniecznyTraits<TElementType>>
class Konieczny : public libsemigroups::Runner, private libsemigroups::detail::BruidhinnTraits<TElementType>

Defined in konieczny.hpp.

The class template Konieczny implements Konieczny’s algorithm as described in the article ‘Green’s equivalences in finite semigroups of binary relations’ by Janusz Konieczny; see here for more details. This algorithm is similar to that of Lallement and McFadden; see this paper for more details. It differs in being applicable to subsemigroups of a non-regular semigroup, though is essentially the same algorithm for elements which happen to be regular.

A Konieczny instance is defined by a generating set, and the main function is Konieczny::run, which implements Konieczny’s Algorithm. If Konieczny::run is invoked and Konieczny::finished returns true, then the size, partial order of \(\mathscr{D}\)-classes, and frames for each \(\mathscr{D}\)-class are known.

See also

KoniecznyTraits and DClass

Template Parameters:
  • TElementType – the type of the elements of the semigroup (must not be a pointer).

  • TTraits – the type of a traits class with the requirements of KoniecznyTraits.

Member types

D_class_index_type

const_d_class_iterator

const_element_type

The type of const elements.

const_iterator

A type for const iterators through elements.

const_reference

Type of element const references.

const_regular_d_class_iterator

element_type

The type of elements.

lambda_orb_type

The type of the orbit of the lambda values.

lambda_value_type

The type of lambda values.

rho_orb_type

The type of the orbit of the rho values.

rho_value_type

The type of rho values.

Adapter member types

Degree

EqualTo

Lambda

Less

One

Product

Rank

Rho

Swap

Constructors

Konieczny()

Konieczny(std::vector<element_type> const&)

Deleted constructors

Konieczny(Konieczny &&) = delete

Deleted.

Konieczny(Konieczny const &) = delete

Deleted.

operator=(Konieczny &&) = delete

Deleted.

operator=(Konieczny const &) = delete

Deleted.

Initialisation

add_generator(const_reference)

add_generators(T const&)

add_generators(T const&, T const&)

add_generators(std::initializer_list<const_element_type>)

Elements

contains(const_reference)

is_regular_element(const_reference)

Attributes

D_class_of_element(const_reference)

number_of_D_classes()

number_of_H_classes()

number_of_L_classes()

number_of_R_classes()

number_of_idempotents()

number_of_regular_D_classes()

number_of_regular_L_classes()

number_of_regular_R_classes()

number_of_regular_elements()

size()

Const Attributes

current_number_of_D_classes() const

current_number_of_H_classes() const

current_number_of_L_classes() const

current_number_of_R_classes() const

current_number_of_idempotents() const

current_number_of_regular_D_classes() const

current_number_of_regular_L_classes() const

current_number_of_regular_R_classes() const

current_number_of_regular_elements() const

current_size() const

degree() const noexcept

generator(size_t) const

number_of_generators() const noexcept

Iterators

cbegin_D_classes() const

cbegin_generators() const noexcept

cbegin_rdc() const noexcept

Shorter form of cbegin_regular_D_classes .

cbegin_regular_D_classes() const

cend_D_classes() const noexcept

cend_generators() const noexcept

cend_rdc() const

Shorter form of cend_regular_D_classes .

cend_regular_D_classes() const noexcept

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