libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
Konieczny< Element, Traits >
template<typename Element, typename Traits = KoniecznyTraits<Element>>
class libsemigroups::Konieczny< Element, Traits >

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 [40]. This algorithm is similar to that of Lallement and McFadden; see [42]. 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.

Template Parameters
Elementthe type of the elements of the semigroup (must not be a pointer).
Traitsthe type of a traits class with the requirements of KoniecznyTraits.
See also
KoniecznyTraits and DClass
Inheritance diagram for Konieczny< Element, Traits >:
[legend]

Classes

class  DClass
 A class representing a \(\mathscr{D}\)-class in a Konieczny object. More...
 

Public Types

using const_d_class_iterator = detail::ConstIteratorStateless<DClassIteratorTraits<DClass>>
 Return type of cbegin_current_D_classes and cend_current_D_classes.
 
using const_element_type = typename Traits::const_element_type
 The type of const elements.
 
using const_iterator
 A type for const iterators through elements.
 
using const_reference
 Type of element const references.
 
using const_regular_d_class_iterator = detail::ConstIteratorStateless<DClassIteratorTraits<RegularDClass>>
 Return type of cbegin_current_regular_D_classes and cend_current_regular_D_classes.
 
using D_class_index_type = size_t
 
using Degree = typename Traits::Degree
 Adapter for the degree of an element.
 
using element_type = typename Traits::element_type
 The type of elements.
 
using EqualTo = typename Traits::EqualTo
 Adapter for testing equality.
 
using Lambda = typename Traits::Lambda
 Adapter for the action on LambdaValue's.
 
using lambda_orb_type = typename Traits::lambda_orb_type
 The type of the orbit of the lambda values.
 
using lambda_value_type = typename Traits::lambda_value_type
 The type of lambda values.
 
using Less = typename Traits::Less
 Adapter for comparisons.
 
using One = typename Traits::One
 Adapter for the identity element of the given type.
 
using Product = typename Traits::Product
 Adapter for the product of two elements.
 
using Rank = typename Traits::Rank
 Adapter for calculating ranks.
 
using Rho = typename Traits::Rho
 Adapter for the action on RhoValue's.
 
using rho_orb_type = typename Traits::rho_orb_type
 The type of the orbit of the rho values.
 
using rho_value_type = typename Traits::rho_value_type
 The type of rho values.
 
using Swap = typename Traits::Swap
 Adapter for swapping.
 
- Public Types inherited from Runner
enum class  state {
  never_run = 0 , running_to_finish = 1 , running_for = 2 , running_until = 3 ,
  timed_out = 4 , stopped_by_predicate = 6 , not_running = 7 , dead = 8
}
 Enum class for the state of the Runner. More...
 
- Public Types inherited from Reporter
using nanoseconds = std::chrono::nanoseconds
 Alias for std::chrono::nanoseconds.
 
using time_point = std::chrono::high_resolution_clock::time_point
 Alias for std::chrono::high_resolution_clock::time_point.
 

Public Member Functions

 Konieczny ()
 Default constructor.
 
 Konieczny (Konieczny &&that)
 Move constructor.
 
 Konieczny (Konieczny const &that)
 Copy constructor.
 
void add_generator (const_reference gen)
 Add a copy of an element to the generators of a Konieczny.
 
template<typename T>
void add_generators (T const &first, T const &last)
 Add collection of generators from iterators.
 
const_d_class_iterator cbegin_current_D_classes () const
 Returns a const iterator referring to a pointer to the current first \(\mathscr{D}\)-class.
 
const_regular_d_class_iterator cbegin_current_regular_D_classes () const
 Returns a const iterator referring to a pointer to the current first regular \(\mathscr{D}\)-class.
 
const_d_class_iterator cbegin_D_classes ()
 Returns a const iterator referring to a pointer to the first \(\mathscr{D}\)-class.
 
const_iterator cbegin_generators () const noexcept
 Returns a const iterator pointing to the first generator.
 
const_regular_d_class_iterator cbegin_regular_D_classes ()
 Returns a const iterator referring to a pointer to the first regular \(\mathscr{D}\)-class.
 
const_d_class_iterator cend_current_D_classes () const noexcept
 Returns a const iterator referring to past the pointer to the current last \(\mathscr{D}\)-class.
 
const_regular_d_class_iterator cend_current_regular_D_classes () const noexcept
 Returns a const iterator referring to past the pointer to the current last regular \(\mathscr{D}\)-class.
 
const_d_class_iterator cend_D_classes ()
 Returns a const iterator referring to past the pointer to the last \(\mathscr{D}\)-class.
 
const_iterator cend_generators () const noexcept
 Returns a const iterator pointing to one past the last generator.
 
const_regular_d_class_iterator cend_regular_D_classes ()
 Returns a const iterator referring to past the pointer to the last regular \(\mathscr{D}\)-class.
 
bool contains (const_reference x)
 Test membership of an element.
 
size_t current_number_of_D_classes () const
 Returns the current number of \(\mathscr{D}\)-classes.
 
size_t current_number_of_H_classes () const
 Returns the current number of \(\mathscr{H}\)-classes.
 
size_t current_number_of_idempotents () const
 Returns the current number of idempotents.
 
size_t current_number_of_L_classes () const
 Returns the current number of \(\mathscr{L}\)-classes.
 
size_t current_number_of_R_classes () const
 Returns the current number of regular \(\mathscr{R}\)-classes.
 
size_t current_number_of_regular_D_classes () const
 Returns the current number of regular \(\mathscr{D}\)-classes.
 
size_t current_number_of_regular_elements () const
 Returns the current number of regular elements.
 
size_t current_number_of_regular_L_classes () const
 Returns the current number of regular \(\mathscr{L}\)-classes.
 
size_t current_number_of_regular_R_classes () const
 Returns the current number of regular \(\mathscr{R}\)-classes.
 
size_t current_size () const
 Returns the current size.
 
DClassD_class_of_element (const_reference x)
 Returns the \(\mathscr{D}\)-class containing an element.
 
size_t degree () const noexcept
 Returns the degree of elements.
 
const_reference generator (size_t pos) const
 Returns a const reference to the generator given by an index.
 
Koniecznyinit ()
 Reinitialize an existing Konieczny object.
 
bool is_regular_element (const_reference x)
 Test regularity of an element.
 
size_t number_of_D_classes ()
 Returns the number of \(\mathscr{D}\)-classes.
 
size_t number_of_generators () const noexcept
 Returns the number of generators.
 
size_t number_of_H_classes ()
 Returns the number of \(\mathscr{H}\)-classes.
 
size_t number_of_idempotents ()
 Returns the number of idempotents.
 
size_t number_of_L_classes ()
 Returns the number of \(\mathscr{L}\)-classes.
 
size_t number_of_R_classes ()
 Returns the number of \(\mathscr{R}\)-classes.
 
size_t number_of_regular_D_classes ()
 Returns the number of regular \(\mathscr{D}\)-classes.
 
size_t number_of_regular_elements ()
 Returns the number of regular elements.
 
size_t number_of_regular_L_classes ()
 Returns the number of regular \(\mathscr{L}\)-classes.
 
size_t number_of_regular_R_classes ()
 Returns the number of regular \(\mathscr{R}\)-classes.
 
Koniecznyoperator= (Konieczny &&)
 Move assignment operator.
 
Koniecznyoperator= (Konieczny const &)
 Copy assignment operator.
 
size_t size ()
 Returns the size.
 
- Public Member Functions inherited from Runner
 Runner ()
 Default constructor.
 
 Runner (Runner &&other)
 Move constructor.
 
 Runner (Runner const &other)
 Copy constructor.
 
state current_state () const noexcept
 Return the current state.
 
bool dead () const noexcept
 Check if the runner is dead.
 
bool finished () const
 Check if run has been run to completion or not.
 
Runnerinit ()
 Initialize an existing Runner object.
 
void kill () noexcept
 Stop run from running (thread-safe).
 
Runneroperator= (Runner &&other)
 Move assignment operator.
 
Runneroperator= (Runner const &other)
 Copy assignment operator.
 
void report_why_we_stopped () const
 Report why run stopped.
 
void run ()
 Run until finished.
 
void run_for (std::chrono::nanoseconds t)
 Run for a specified amount of time.
 
template<typename Time>
void run_for (Time t)
 Run for a specified amount of time.
 
void run_until (bool(*func)())
 Run until a nullary predicate returns true or finished.
 
template<typename Func>
void run_until (Func &&func)
 Run until a nullary predicate returns true or finished.
 
bool running () const noexcept
 Check if currently running.
 
bool running_for () const noexcept
 Check if the runner is currently running for a particular length of time.
 
bool running_until () const noexcept
 Check if the runner is currently running until a nullary predicate returns true.
 
bool started () const noexcept
 Check if run has been called at least once before.
 
bool stopped () const
 Check if the runner is stopped.
 
bool stopped_by_predicate () const
 Check if the runner was stopped, or should stop, because of the argument last passed to run_until.
 
virtual bool success () const
 Check if run has been run to completion successfully.
 
bool timed_out () const
 Check if the amount of time passed to run_for has elapsed.
 
- Public Member Functions inherited from Reporter
 Reporter ()
 Default constructor.
 
 Reporter (Reporter &&that)
 Default move constructor.
 
 Reporter (Reporter const &that)
 Default copy constructor.
 
void emit_divider ()
 
Reporterinit ()
 Initialize an existing Reporter object.
 
time_point last_report () const noexcept
 Get the time point of the last report.
 
Reporteroperator= (Reporter &&that)
 Default move assignment operator.
 
Reporteroperator= (Reporter const &that)
 Default copy assignment operator.
 
bool report () const
 Check if it is time to report.
 
std::string const & report_divider () const noexcept
 
Reporterreport_divider (std::string const &val)
 
nanoseconds report_every () const noexcept
 Get the minimum elapsed time between reports.
 
Reporterreport_every (nanoseconds val) noexcept
 Set the minimum elapsed time between reports in nanoseconds.
 
template<typename Time>
Reporterreport_every (Time t) noexcept
 Set the minimum elapsed time between reports in a unit of time other than nanoseconds.
 
std::string const & report_prefix () const noexcept
 Get the current prefix string for reporting.
 
Reporterreport_prefix (std::string const &val)
 Set the prefix string for reporting.
 
Reporter const & reset_last_report () const
 Set the last report time point to now.
 
Reporter const & reset_start_time () const
 Reset the start time (and last report) to now.
 
time_point start_time () const noexcept
 Get the start time.
 

Additional Inherited Members

Member Typedef Documentation

◆ const_d_class_iterator

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using const_d_class_iterator = detail::ConstIteratorStateless<DClassIteratorTraits<DClass>>

Type for const random access iterators through the \(\mathscr{D}\)-classes, in the order they were enumerated.

See also
const_regular_d_class_iterator.

◆ const_iterator

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using const_iterator
Initial value:
detail::BruidhinnConstIterator<element_type,
typename detail::BruidhinnTraits< Element >::value_type element_type
Type of the elements.
Definition froidure-pin.hpp:247

◆ const_reference

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using const_reference
Initial value:
typename detail::BruidhinnTraits<Element>::const_reference

◆ const_regular_d_class_iterator

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using const_regular_d_class_iterator = detail::ConstIteratorStateless<DClassIteratorTraits<RegularDClass>>

A type for const random access iterators through the regular \(\mathscr{D}\)-classes, in the order they were enumerated.

See also
const_d_class_iterator.

◆ D_class_index_type

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using D_class_index_type = size_t

Type of indices of \(\mathscr{D}\)-classes.

See also
cbegin_current_D_classes and cbegin_current_regular_D_classes.

◆ Degree

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Degree = typename Traits::Degree

Defined in adapters.hpp.

Specialisations of this struct should be stateless trivially default constructible with a call operator of signature size_t operator()(Element const& x) const (possibly noexcept, inline and/or constexpr also).

The return value of the call operator ought to indicate the degree of a Element instance which may or may not depend on the parameter x. The degree of a permutation, for instance, would be the the number of points it acts on, the degree of a matrix is its dimension, and so on. This is used, for example, by SchreierSimsTraits in some member functions to determine whether it is known a priori that a permutation does not belong to the object, because it acts on too many points.

Template Parameters
Elementthe type of the elements of a semigroup.

The second template parameter exists for SFINAE.

Used by:
Example
template <>
struct Degree<BMat8> {
constexpr inline size_t operator()(BMat8 const&) const noexcept {
return 8;
}
};
Fast boolean matrices of dimension up to 8 x 8.
Definition bmat8.hpp:74
typename Traits::Degree Degree
Adapter for the degree of an element.
Definition konieczny.hpp:232

◆ EqualTo

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using EqualTo = typename Traits::EqualTo

Defined in adapters.hpp.

This type should be a stateless trivially default constructible with a call operator of signature bool operator()(Value const&, Value const&) (possibly noexcept, inline and/or constexpr also) for use with, for example, std::unordered_map.

Template Parameters
Valuethe type of objects to compare.

The second template parameter exists for SFINAE.

Used by:

◆ Lambda

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Lambda = typename Traits::Lambda

Defined in adapters.hpp.

This type should be a stateless trivially default constructible with an operator of signature void operator()(Point&, Element const&), which should modify the first argument in-place to contain the lambda value of the second argument. The kernel of the lambda function should be Green's \(\mathscr{L}\)-relation on the semigroup in question.

Template Parameters
Elementthe type of elements.
Pointthe type of the lambda points.

The third template parameter exists for SFINAE.

Used by:

◆ Less

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Less = typename Traits::Less

Defined in adapters.hpp.

This type should be a stateless trivially default constructible with a call operator of signature bool operator()(Value const&, Value const&) (possibly noexcept, inline and/or constexpr also) which defines a linear order on the objects of type Value.

Template Parameters
Valuethe type of objects to compare.

The second template parameter exists for SFINAE.

Used by:

◆ One

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using One = typename Traits::One

Specialisations of this struct should be stateless trivially default constructible with two call operator of signatures:

  1. Element operator()(size_t n) const (possibly noexcept, inline and/or constexpr also) returning a multiplicative identity element for the category Element and with Degree<Element>()(x) equal to the parameter n. For example, if Element is a type of n x n matrices, then this should return the n x n identity matrix.
  2. Element operator()(T const&) const (possibly noexcept, inline and/or constexpr also). This could be implemented as:
    Element operator()(Element const& x) const noexcept {
    return this->operator()(Degree<Element>()(x));
    }
Template Parameters
Elementthe type of the elements of a semigroup.

The second template parameter exists for SFINAE.

Used by:
Example
template <typename T>
struct One<
T,
typename std::enable_if<std::is_base_of<PTransf16, T>::value>::type> {
T operator()(size_t = 0) const noexcept {
return T::one();
}
T operator()(T const&) const noexcept {
return T::one();
}
};
typename Traits::One One
Adapter for the identity element of the given type.
Definition konieczny.hpp:244

◆ Product

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Product = typename Traits::Product

Defined in adapters.hpp.

Specialisations of this struct should be stateless trivially default constructible with a call operator of signature void operator()(Element&, Element const&, Element const&, size_t = 0) (possibly noexcept, inline and/or constexpr also).

The call operator should change xy in-place to be the product of x and y. The 4th parameter is optional and it can be used as an index for static thread local storage, that might be required for forming the product of x and y. The purpose of the 1st parameter is to avoid repeated allocations of memory to hold temporary products that are discarded soon after they are created.

Template Parameters
Elementthe type of the elements of a semigroup.

The second template parameter exists for SFINAE.

Used by:
Example
template <>
struct Product<size_t> {
void operator()(size_t& xy, size_t x, size_t y, size_t = 0) const
noexcept {
xy = x * y;
}
};
typename Traits::Product Product
Adapter for the product of two elements.
Definition konieczny.hpp:247

◆ Rank

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Rank = typename Traits::Rank

Defined in adapters.hpp.

This type should be default constructible and a call operator of signature size_t operator()(Element const&) if no additional data is required to compute the rank, or a call operator of signature size_t operator()(State<Element> const&, Element const&) if additional data is required.

The call operator should return the rank of the element given as argument. This must satisfy the following properties:

  • \(\operatorname{rank}\) should agree with the \(D\)-order on the semigroup; that is, if \(D_x \leq D_y\), then \(\operatorname{rank}(x) \leq \operatorname{rank}(y)\),
  • if \(D_x \leq D_y\) and \(\operatorname{rank}(x) = \operatorname{rank}(y)\), then \(D_x = D_y\).
Template Parameters
Elementthe type of elements.
Statethe type of the data required to compute ranks of Elements; defaults to RankState<Element>.

The third template parameter exists for SFINAE.

Used by:

◆ Rho

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Rho = typename Traits::Rho

Defined in adapters.hpp.

This type should be a stateless trivially default constructible with an operator of signature void operator()(Point&, Element const&), which should modify the first argument in-place to contain the rho value of the second argument. The kernel of the rho function should be Green's \(\mathscr{R}\)-relation on the semigroup in question.

Template Parameters
Elementthe type of elements.
Pointthe type of the rho points.

The third template parameter exists for SFINAE.

Used by:

◆ Swap

template<typename Element, typename Traits = KoniecznyTraits<Element>>
using Swap = typename Traits::Swap

Defined in adapters.hpp.

This type should be a stateless trivially default constructible with a call operator of signature void operator()(Value&, Value&) (possibly noexcept, inline and/or constexpr also) which swaps its arguments.

Template Parameters
Valuethe type of objects to swap.

The second template parameter exists for SFINAE.

Used by:

Constructor & Destructor Documentation

◆ Konieczny() [1/3]

template<typename Element, typename Traits = KoniecznyTraits<Element>>
Konieczny ( )

This is the standard constructor for a Konieczny instance with unspecified generators.

Exceptions
This function guarantees not to throw a LibsemigroupsException.
See also
add_generator and add_generators

◆ Konieczny() [2/3]

template<typename Element, typename Traits = KoniecznyTraits<Element>>
Konieczny ( Konieczny< Element, Traits > const & that)

Constructs a new Konieczny which is an exact copy of that. No enumeration is triggered for either that or of the newly constructed Konieczny object.

Parameters
thatthe Konieczny to copy.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ Konieczny() [3/3]

template<typename Element, typename Traits = KoniecznyTraits<Element>>
Konieczny ( Konieczny< Element, Traits > && that)

Constructs a new Konieczny using the data from that. No enumeration is triggered for either that or of the newly constructed Konieczny object. The object that is left in a state which is undefined, though guaranteed to be independent from the new Konieczny object.

Parameters
thatthe Konieczny to move from.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

Member Function Documentation

◆ add_generator()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
void add_generator ( const_reference gen)
inline

It is possible, if perhaps not desirable, to add the same generator multiple times.

Parameters
genthe generator to add.
Exceptions
LibsemigroupsExceptionif any of the following hold:
  • the degree of x is incompatible with K.degree();
  • K.started() returns true.

◆ add_generators()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
template<typename T>
void add_generators ( T const & first,
T const & last )

Add copies of the generators in the range first to last to this. See add_generator for a detailed description.

Template Parameters
thetype of an iterator pointing to an element_type.
Parameters
firstiterator pointing to the first generator to add.
lastiterator pointing one past the last generator to add.
Exceptions
LibsemigroupsExceptionif any of the following hold:
  • the degree of x is incompatible with the existing degree.
  • started returns true

◆ cbegin_current_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_d_class_iterator cbegin_current_D_classes ( ) const
inline

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ cbegin_current_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_regular_d_class_iterator cbegin_current_regular_D_classes ( ) const
inline

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ cbegin_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_d_class_iterator cbegin_D_classes ( )
inline

This function triggers the main algorithm to run fully.

Returns
A value of type const_d_class_iterator.

◆ cbegin_generators()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_iterator cbegin_generators ( ) const
inlinenoexcept

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_iterator.
Exceptions
This function is noexcept and is guaranteed never to throw.
See also
cend_generators

◆ cbegin_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_regular_d_class_iterator cbegin_regular_D_classes ( )
inline

This function triggers the main algorithm to run fully.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ cend_current_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_d_class_iterator cend_current_D_classes ( ) const
inlinenoexcept

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ cend_current_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_regular_d_class_iterator cend_current_regular_D_classes ( ) const
inlinenoexcept

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ cend_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_d_class_iterator cend_D_classes ( )
inline

This function triggers the main algorithm to run fully.

Returns
A value of type const_d_class_iterator.

◆ cend_generators()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_iterator cend_generators ( ) const
inlinenoexcept

This function does not trigger any enumeration; the iterator returned may be invalidated by any call to a non-const member function of the Konieczny class.

Returns
A value of type const_iterator.
Exceptions
This function is noexcept and is guaranteed never to throw.
See also
cbegin_generators

◆ cend_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_regular_d_class_iterator cend_regular_D_classes ( )
inline

This function triggers the main algorithm to run fully.

Returns
A value of type const_d_class_iterator.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ contains()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
bool contains ( const_reference x)
inline

Returns true if x belongs to this and false if it does not.

Parameters
xa const reference to a possible element.
Returns
A value of type bool.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function may trigger a (partial) enumeration.

◆ current_number_of_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_D_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_H_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_H_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_idempotents()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_idempotents ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_L_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_L_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_R_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_R_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_regular_D_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_regular_elements()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_regular_elements ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_regular_L_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_regular_L_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_number_of_regular_R_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_number_of_regular_R_classes ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.

◆ current_size()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t current_size ( ) const
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers no enumeration.
See also
size.

◆ D_class_of_element()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
DClass & D_class_of_element ( const_reference x)
inline
Parameters
xa const reference to a possible element.
Returns
A reference to DClass.
Exceptions
LibsemigroupsExceptionif x does not belong to this.
Note
This involves computing as many frames for \(\mathscr{D}\)-classes as necessary.

◆ degree()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t degree ( ) const
inlinenoexcept

All elements of a Konieczny must have the same degree, as computed by an instance of Degree; this function returns that degree.

Returns
A value of type size_t.
Exceptions
This function is noexcept and is guaranteed never to throw.
See also
Degree

◆ generator()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
const_reference generator ( size_t pos) const
inline

This function returns a const reference to the pos generators of this.

Parameters
posthe index of the generator.
Returns
A value of type const_reference
Exceptions
LibsemigroupsExceptionif the value of pos is greater than number_of_generators().
Complexity
Constant.
Note
There may be duplicate generators, and so this may have more generators than unique generators.
See also
add_generator and add_generators

◆ init()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
Konieczny & init ( )

This function re-initializes a Konieczny instance so that it is in the same (logical) state as if it had just been default-constructed.

Returns
A reference to *this.
Exceptions
This function guarantees not to throw a LibsemigroupsException.

◆ is_regular_element()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
bool is_regular_element ( const_reference x)
inline

Returns true if x is a regular element and false if it is not.

Parameters
xa const reference to a possible element.
Returns
A value of type bool.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers the computation of the orbits of the Lambda and Rho values, if they are not already known.

◆ number_of_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_D_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_generators()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_generators ( ) const
inlinenoexcept

This function returns the number of generators given to this. Note that there may be duplicate generators, and so this may have more generators than unique generators.

Returns
A value of type size_t.
Exceptions
This function is noexcept and is guaranteed never to throw.
See also
add_generator and add_generators

◆ number_of_H_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_H_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_idempotents()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_idempotents ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_L_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_L_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_R_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_R_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_regular_D_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_regular_D_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_regular_elements()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_regular_elements ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_regular_L_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_regular_L_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ number_of_regular_R_classes()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t number_of_regular_R_classes ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.

◆ size()

template<typename Element, typename Traits = KoniecznyTraits<Element>>
size_t size ( )
inline
Returns
A value of type size_t.
Exceptions
This function guarantees not to throw a LibsemigroupsException.
Note
This function triggers a full enumeration of the frames of every \(\mathscr{D}\)-class.
See also
current_size

The documentation for this class was generated from the following file: