Sims1

template<typename T>
class Sims1 : public libsemigroups::Sims1Settings<Sims1<T>>

Defined in sims1.hpp.

On this page we describe the functionality relating to the small index congruence algorithm. The algorithm implemented by this class template is essentially the low index subgroup algorithm for finitely presented groups described in Section 5.6 of Computation with Finitely Presented Groups by C. Sims. The low index subgroups algorithm was adapted for semigroups and monoids by J. D. Mitchell and M. Tsalakou.

The purpose of this class is to provide the functions cbegin, cend, for_each, and find_if which permit iterating through the one-sided congruences of a semigroup or monoid defined by a presentation containing (a possibly empty) set of pairs and with at most a given number of classes. An iterator returned by cbegin points at an ActionDigraph instance containing the action of the semigroup or monoid on the classes of a congruence.

Member types

digraph_type

The type of the associated ActionDigraph objects.

iterator

letter_type

Type for letters in the underlying presentation.

node_type

Type for the nodes in the associated ActionDigraph objects.

size_type

The size_type of the associated ActionDigraph objects.

Constructors

Sims1() = delete

Default constructor - deleted!

Sims1(Sims1 const&) = default

Default copy constructor.

Sims1(Sims1&&) = default

Default move constructor.

Sims1(congruence_kind)

operator=(Sims1 const&) = default

Default copy assignment operator.

operator=(Sims1&&) = default

Default move assignment operator.

Settings

extra() const noexcept

extra(P const&)

None

long_rule_length(size_t)

long_rules() const noexcept

None

long_rules(P const&)

number_of_threads() const noexcept

None

number_of_threads(size_t)

report_interval() const noexcept

None

report_interval(size_t) noexcept

settings() const noexcept

settings(Sims1Settings const&)

None

short_rules() const noexcept

None

short_rules(P const&)

split_at(size_t)

stats() const noexcept

Member functions

cbegin(size_type) const

cend(size_type) const

find_if(size_type,std::function<bool(digraph_type const &)>) const

for_each(size_type,std::function<void(digraph_type const &)>) const

number_of_congruences(size_type) const