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

The return type of cbegin and cend .

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)

Construct from congruence_kind .

operator=(Sims1 const&) = default

Default copy assignment operator.

operator=(Sims1&&) = default

Default move assignment operator.

Settings

extra() const noexcept

Returns a const reference to the additional defining pairs.

extra(P const&)

Set the extra rules.

long_rule_length(size_t)

Define the long rule length.

long_rules() const noexcept

Returns the current long rules.

long_rules(P const&)

Set the long rules.

number_of_threads() const noexcept

Returns the current number of threads.

number_of_threads(size_t)

Set the number of threads.

report_interval() const noexcept

Returns the current report interval.

report_interval(size_t) noexcept

Set the report interval.

settings() const noexcept

Returns the settings object of *this.

settings(Sims1Settings const&)

Copy the settings from that into this.

short_rules() const noexcept

Returns a const reference to the current short rules.

short_rules(P const&)

Set the short rules.

split_at(size_t)

Split the rules in short_rules and long_rules .

stats() const noexcept

None

Member functions

cbegin(size_type) const

Returns a forward iterator pointing at the first congruence.

cend(size_type) const

Returns a forward iterator pointing one beyond the last congruence.

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

Apply the function pred to every one-sided congruence with at most n classes, until it returns true.

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

Apply the function pred to every one-sided congruence with at most n classes.

number_of_congruences(size_type) const

Returns the number of one-sided congruences with up to a given number of classes.