![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
Defined in froidure-pin-base.hpp
.
FroidurePinBase is an abstract base class for the class template FroidurePin.
FroidurePinBase allows a polymorphic interface to instances of FroidurePin and its member functions reflect those member functions of FroidurePin that do not depend on the template parameter Element
(the type of the elements of the semigroup represented).
Classes | |
class | const_normal_form_iterator |
Return type of cbegin_normal_forms and cend_normal_forms. More... | |
class | const_rule_iterator |
Return type of cbegin_rules and cend_rules. More... | |
Public Types | |
using | cayley_graph_type = WordGraph<element_index_type> |
Alias for the types of the left and right Cayley graphs. | |
using | element_index_type = size_type |
Alias for the index of an element. | |
using | generator_index_type = size_type |
Alias for the index of a generator. | |
using | size_type = uint32_t |
Alias for the type of the size of the enumerated semigroup. | |
![]() | |
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... | |
![]() | |
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 | |
FroidurePinBase () | |
Default constructor. | |
FroidurePinBase (FroidurePinBase &&other)=default | |
Default move constructor. | |
FroidurePinBase (FroidurePinBase const &S) | |
Copy constructor. | |
size_t | batch_size () const noexcept |
Returns the current value of the batch size. | |
FroidurePinBase & | batch_size (size_t batch_size) noexcept |
Set a new value for the batch size. | |
const_normal_form_iterator | cbegin_current_normal_forms () const |
Returns an iterator pointing at the first normal form (if any). | |
const_rule_iterator | cbegin_current_rules () const |
Returns a forward iterator pointing to the first rule (if any). | |
const_normal_form_iterator | cbegin_normal_forms () |
Returns an iterator pointing at the first normal form (if any). | |
const_rule_iterator | cbegin_rules () |
Returns a forward iterator pointing to the first rule (if any). | |
const_normal_form_iterator | cend_current_normal_forms () const |
Returns an iterator pointing one beyond the last normal form (if any). | |
const_rule_iterator | cend_current_rules () const |
Returns a forward iterator pointing one past the last rule (if any). | |
const_normal_form_iterator | cend_normal_forms () |
Returns an iterator pointing one beyond the last normal form (if any). | |
const_rule_iterator | cend_rules () |
Returns a forward iterator pointing one past the last rule (if any). | |
bool | contains_one () |
Check if the categorical multiplicative identity is an element. | |
template<typename Iterator> | |
void | current_factorisation_no_checks (Iterator d_first, element_index_type pos) const |
Output to an iterator a word representing an element given by index. | |
cayley_graph_type const & | current_left_cayley_graph () const noexcept |
Returns a const reference to the left Cayley graph. | |
size_t | current_length (element_index_type pos) const |
Returns the length of the short-lex least word equal to the element with given index. | |
size_t | current_length_no_checks (element_index_type pos) const |
Returns the length of the short-lex least word equal to the element with given index. | |
size_t | current_max_word_length () const noexcept |
Returns the maximum length of a word in the generators so far computed. | |
template<typename Iterator> | |
void | current_minimal_factorisation (Iterator d_first, element_index_type pos) const |
Output to an iterator the short-lex least word representing an element given by index. | |
template<typename Iterator> | |
void | current_minimal_factorisation_no_checks (Iterator d_first, element_index_type pos) const |
Output to an iterator the short-lex least word representing an element given by index. | |
size_t | current_number_of_rules () const noexcept |
Returns the number of rules that have been found so far. | |
template<typename Iterator1, typename Iterator2> | |
element_index_type | current_position (Iterator1 first, Iterator2 last) const |
Returns the position corresponding to a word. | |
template<typename Iterator1, typename Iterator2> | |
element_index_type | current_position_no_checks (Iterator1 first, Iterator2 last) const |
Returns the position corresponding to a word. | |
cayley_graph_type const & | current_right_cayley_graph () const noexcept |
Returns a const reference to the right Cayley graph. | |
size_t | current_size () const noexcept |
Returns the number of elements so far enumerated. | |
bool | currently_contains_one () const noexcept |
Check if the categorical multiplicative identity is known to be an element. | |
size_t | degree () const noexcept |
Returns the degree of any and all elements. | |
void | enumerate (size_t limit) |
Enumerate until at least a specified number of elements are found. | |
template<typename Iterator> | |
void | factorisation (Iterator d_first, element_index_type pos) |
Output to an iterator a word representing an element given by index. | |
generator_index_type | final_letter (element_index_type pos) const |
Returns the last letter of the element with specified index. | |
generator_index_type | final_letter_no_checks (element_index_type pos) const |
Returns the first letter of the element with specified index. | |
generator_index_type | first_letter (element_index_type pos) const |
Returns the first letter of the element with specified index. | |
generator_index_type | first_letter_no_checks (element_index_type pos) const |
Returns the first letter of the element with specified index. | |
FroidurePinBase & | init () |
Reinitialize a FroidurePinBase object. | |
cayley_graph_type const & | left_cayley_graph () |
Returns a const reference to the left Cayley graph. | |
size_t | length (element_index_type pos) |
Returns the length of the short-lex least word equal to the element with given index. | |
size_t | length_no_checks (element_index_type pos) |
Returns the length of the short-lex least word equal to the element with given index. | |
template<typename Iterator> | |
void | minimal_factorisation (Iterator d_first, element_index_type pos) |
Output to an iterator the short-lex least word representing an element given by index. | |
size_t | number_of_elements_of_length (size_t len) const |
Returns the number of elements so far enumerated with given length. | |
size_t | number_of_elements_of_length (size_t min, size_t max) const |
Returns the number of elements so far enumerated with length in a given range. | |
size_t | number_of_rules () |
Returns the total number of relations in the presentation. | |
FroidurePinBase & | operator= (FroidurePinBase &&)=default |
Move assignment operator. | |
FroidurePinBase & | operator= (FroidurePinBase const &) |
Copy assignment operator. | |
template<typename Iterator1, typename Iterator2> | |
element_index_type | position (Iterator1 first, Iterator2 last) |
Returns the position corresponding to a word. | |
template<typename Iterator1, typename Iterator2> | |
element_index_type | position_no_checks (Iterator1 first, Iterator2 last) |
Returns the position corresponding to a word. | |
element_index_type | position_of_generator (generator_index_type i) const |
Returns the position of the generator with specified index. | |
element_index_type | position_of_generator_no_checks (generator_index_type i) const |
Returns the position of the generator with specified index. | |
element_index_type | prefix (element_index_type pos) const |
Returns the position of the longest proper prefix. | |
element_index_type | prefix_no_checks (element_index_type pos) const |
Returns the position of the longest proper prefix. | |
cayley_graph_type const & | right_cayley_graph () |
Returns a const reference to the right Cayley graph. | |
size_t | size () |
Returns the size of a FroidurePin instance. | |
element_index_type | suffix (element_index_type pos) const |
Returns the position of the longest proper suffix. | |
element_index_type | suffix_no_checks (element_index_type pos) const |
Returns the position of the longest proper suffix. | |
template<typename Iterator1, typename Iterator2> | |
void | throw_if_any_generator_index_out_of_range (Iterator1 first, Iterator2 last) const |
Throw an exception if any generator index is out of range. | |
void | throw_if_element_index_out_of_range (element_index_type i) const |
Throw an exception if an index is out of range. | |
void | throw_if_generator_index_out_of_range (generator_index_type i) const |
Throw an exception if a generator index is out of range. | |
![]() | |
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. | |
Runner & | init () |
Initialize an existing Runner object. | |
void | kill () noexcept |
Stop run from running (thread-safe). | |
Runner & | operator= (Runner &&other) |
Move assignment operator. | |
Runner & | operator= (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. | |
![]() | |
Reporter () | |
Default constructor. | |
Reporter (Reporter &&that) | |
Default move constructor. | |
Reporter (Reporter const &that) | |
Default copy constructor. | |
void | emit_divider () |
Reporter & | init () |
Initialize an existing Reporter object. | |
time_point | last_report () const noexcept |
Get the time point of the last report. | |
Reporter & | operator= (Reporter &&that) |
Default move assignment operator. | |
Reporter & | operator= (Reporter const &that) |
Default copy assignment operator. | |
bool | report () const |
Check if it is time to report. | |
std::string const & | report_divider () const noexcept |
Reporter & | report_divider (std::string const &val) |
nanoseconds | report_every () const noexcept |
Get the minimum elapsed time between reports. | |
Reporter & | report_every (nanoseconds val) noexcept |
Set the minimum elapsed time between reports in nanoseconds. | |
template<typename Time> | |
Reporter & | report_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. | |
Reporter & | report_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 | |
![]() | |
static std::chrono::nanoseconds | delta (std::chrono::high_resolution_clock::time_point const &t) |
The time between a given point and now. | |
using element_index_type = size_type |
The size of the semigroup being enumerated must be at most std::numeric_limits<element_index_type>::max()
.
using generator_index_type = size_type |
Alias for size_type used to indicate that a value should be the index of a generator.
FroidurePinBase | ( | ) |
Default constructor.
FroidurePinBase | ( | FroidurePinBase const & | S | ) |
Copy constructor.
|
default |
Default move constructor.
|
inlinenodiscardnoexcept |
This function returns the minimum number of elements enumerated in any call to run.
noexcept
and is guaranteed never to throw.
|
inlinenoexcept |
The batch size is the number of new elements to be found by any call to run. This is used by, for example, FroidurePin::position so that it is possible to find the position of an element after only partially enumerating the elements of a FrodiurePin instance.
The default value of the batch size is 8192
.
batch_size | the new value for the batch size. |
*this
.noexcept
and is guaranteed never to throw.
|
inlinenodiscard |
This function returns an iterator pointing at the normal form of the first element of the semigroup represented by a FroidurePinBase instance (if any).
This function does not perform any enumeration of the FroidurePin. If you want to obtain the complete set of rules, then use cbegin_normal_forms instead.
|
inlinenodiscard |
Returns a forward iterator pointing to the first rule in a confluent terminating rewriting system defining a semigroup isomorphic to the one defined by this
.
This function does not perform any enumeration of the FroidurePin object. If you want to obtain the complete set of rules, then use cbegin_rules instead.
|
inlinenodiscard |
This function returns an iterator pointing at the normal form of the first element of the semigroup represented by a FroidurePinBase instance (if any).
This function performs a full enumeration of the FroidurePin. If you want to obtain the current set of normal forms without triggering an enumeration, then use cbegin_current_normal_forms instead.
|
inlinenodiscard |
Returns a forward iterator pointing to the first rule in a confluent terminating rewriting system defining a semigroup isomorphic to the one defined by a FroidurePinBase instance.
This function fully enumerate the FroidurePinBase object. If you want to obtain a (possibly incomplete) set of rules without triggering a full enumeration, then use cbegin_current_rules instead.
|
inlinenodiscard |
This function returns an iterator pointing one beyond the normal form of the last element of the semigroup represented by a FroidurePinBase instance (if any).
This function does not perform any enumeration of the FroidurePin. If you want to obtain the complete set of rules, then use cend_normal_forms instead.
|
inlinenodiscard |
Returns a forward iterator pointing one-past-the-last rule (currently known) in a confluent terminating rewriting system defining a semigroup isomorphic to the one defined by this
.
This function does not perform any enumeration of the FroidurePin. If you want to obtain the complete set of rules, then use cend_rules instead.
|
inlinenodiscard |
This function returns an iterator pointing one beyond the normal form of the last element of the semigroup represented by a FroidurePinBase instance (if any).
This function performs a full enumeration of the FroidurePin. If you want to obtain the current set of rules without triggering an enumeration, then use cend_current_normal_forms instead.
|
inlinenodiscard |
Returns a forward iterator pointing one-past-the-last rule in a confluent terminating rewriting system defining a semigroup isomorphic to the one defined by this
.
This function fully enumerate the FroidurePin object. If you want to obtain a (possibly incomplete) set of rules without triggering a full enumeration, then use cend_rules instead.
|
nodiscard |
This function returns true
if the return value of FroidurePin::One() is an element of the FroidurePin instance.
|
inline |
This function computes a (not necessarily minimal) word (in the generators) equal to the element in position pos
and stores the result in the output range starting from d_first
.
Iterator | the type of the first argument (an output iterator). |
d_first | output iterator for the result. |
pos | the index of the element whose factorisation is sought. |
pos
elements are found.pos
is less than current_size.
|
inlinenodiscardnoexcept |
This function returns a const reference to the left Cayley graph.
|
inlinenodiscard |
This function returns the length of the short-lex least word (in the generators) equal to the element with index pos
.
pos | the position. |
pos
.LibsemigroupsException | if pos is greater than or equal to current_size. |
|
inlinenodiscard |
This function returns the length of the short-lex least word (in the generators) equal to the element with index pos
. No enumeration is triggered by calls to this function.
pos | the position. |
pos
.pos
is valid. In particular, if pos > current_size()
, then bad things will happen.
|
inlinenodiscardnoexcept |
Every element can be expressed as the short-lex least product of the generators that equals that element. This function returns the length of the longest short-lex least word in the generators that has so far been enumerated.
size_t
.noexcept
and is guaranteed never to throw.
|
inline |
This function computes a minimal word with respect to the short-lex ordering (of the generators) equal to the element in position pos
and stores the result in the output range starting from d_first
.
Iterator | the type of the first argument (an output iterator). |
d_first | output iterator for the result. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to current_size. |
|
inline |
This function computes a minimal word with respect to the short-lex ordering (of the generators) equal to the element in position pos
and stores the result in the output range starting from d_first
.
Iterator | the type of the first argument (an output iterator). |
d_first | output iterator for the result. |
pos | the index of the element whose factorisation is sought. |
pos
is valid. In particular, if pos > current_size()
, then bad things will happen.
|
inlinenodiscardnoexcept |
This is only guaranteed to be the actual number of rules in a presentation defining the FroidurePinBase object if it is fully enumerated.
noexcept
and is guaranteed never to throw.
|
inlinenodiscard |
This function returns the position in a FroidurePin instance corresponding to the word in the generators given by first
and last
. No enumeration is performed, and UNDEFINED is returned if the word does not currently correspond to an element.
Iterator1 | type of the first argument. |
Iterator2 | type of the second argument. |
first | iterator pointing at the first letter in the word. |
last | iterator pointing one beyond the last letter in the word. |
first
and last
, or UNDEFINED if there is no such element.LibsemigroupsException | if any of the letters (pointed at by iterators in the range from first to last ) is out of range (exceeds FroidurePin::number_of_generators). |
first
to last
.
|
nodiscard |
This function returns the position in a FroidurePin instance corresponding to the word in the generators given by the iterators first
and last
. No enumeration is performed, and UNDEFINED is returned if the word does not currently correspond to an element.
Iterator1 | type of the first argument. |
Iterator2 | type of the second argument. |
first | iterator pointing at the first letter in the word. |
last | iterator pointing one beyond the last letter in the word. |
first
and last
, or UNDEFINED if there is no such element.first
to last
.first
to last
) is out of range, then bad things will happen.
|
inlinenodiscardnoexcept |
This function triggers a full enumeration, and then returns the right Cayley graph of the semigroup represented by a FroidurePin instance.
|
inlinenodiscardnoexcept |
This is only the actual size if the FroidurePinBase object is fully enumerated.
size_t
.noexcept
and is guaranteed never to throw.
|
inlinenodiscardnoexcept |
This function returns true
if the return value of FroidurePin::One()() is already known to be an element of the FroidurePin instance.
|
inlinenodiscardnoexcept |
This function returns the degree of any and all elements.
size_t
.noexcept
and is guaranteed never to throw.void enumerate | ( | size_t | limit | ) |
If an FroidurePinBase instance is already fully enumerated, or the number of elements previously enumerated exceeds limit
, then calling this function does nothing. Otherwise, run attempts to find at least the maximum of limit
and batch_size additional elements of the semigroup.
limit | the approximate limit for current_size. |
limit
and \(n\) is FroidurePin::number_of_generators.
|
inline |
This function computes a (not necessarily minimal) word (in the generators) equal to the element in position pos
and stores the result in the output range starting from d_first
.
Iterator | the type of the first argument (an output iterator). |
d_first | output iterator for the result. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to size. |
pos
and \(n\) is the return value of FroidurePin::number_of_generators.pos
elements are found.
|
inlinenodiscard |
This function returns the final letter of the element in position pos
, which is the index of the generator corresponding to the final letter of the element.
pos | the position. |
generator_index_type
.LibsemigroupsException | if pos is greater than or equal to current_size. |
FroidurePin::generator(first_letter(pos))
is only equal to FroidurePin::at(first_letter(pos))
if there are no duplicate generators.
|
inlinenodiscard |
This function returns the first letter of the element in position pos
, which is the index of the generator corresponding to the first letter of the element.
This function does not trigger an enumeration.
pos | the position. |
generator_index_type
.FroidurePin::generator(first_letter(pos))
is only equal to FroidurePin::at(first_letter(pos))
if there are no duplicate generators.pos
is valid. In particular, if pos
is greater than or equal to current_size, then bad things will happen.
|
inlinenodiscard |
This function returns the first letter of the element in position pos
, which is the index of the generator corresponding to the first letter of the element.
pos | the position. |
generator_index_type
.LibsemigroupsException | if pos is greater than or equal to current_size. |
FroidurePin::generator(first_letter(pos))
is only equal to FroidurePin::at(first_letter(pos))
if there are no duplicate generators.
|
inlinenodiscard |
This function returns the first letter of the element in position pos
, which is the index of the generator corresponding to the first letter of the element.
This function does not trigger an enumeration.
pos | the position. |
generator_index_type
.FroidurePin::generator(first_letter(pos))
is only equal to FroidurePin::at(first_letter(pos))
if there are no duplicate generators.pos
is valid. In particular, if pos
is greater than or equal to current_size, then bad things will happen. FroidurePinBase & init | ( | ) |
This function re-initializes a FroidurePinBase object so that it is in the same state as if it had just been default constructed.
*this
.
|
inlinenodiscard |
This function triggers a full enumeration, and then returns the left Cayley graph of the semigroup represented by a FroidurePin instance.
|
nodiscard |
This function returns the length of the short-lex least word equal to the element with given index.
pos | the position. |
pos
.LibsemigroupsException | if pos is greater than or equal to size. |
|
nodiscard |
This function returns the length of the short-lex least word equal to the element with given index.
pos | the position. |
pos
.pos
is valid. In particular, if pos
is greater than or equal to size, then bad things will happen.
|
inline |
This function computes a minimal word with respect to the short-lex ordering (of the generators) equal to the element in position pos
and stores the result in the output range starting from d_first
.
Iterator | the type of the first argument (an output iterator). |
d_first | output iterator for the result. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to size(). |
pos
and \(n\) is the return value of FroidurePin::number_of_generators.pos
elements are found.
|
nodiscard |
This function returns the number of elements that have been enumerated so far with length len
. This function does not trigger any enumeration.
len | the length. |
len
.
|
nodiscard |
This function returns the number of elements that have been enumerated so far with length in the range \([min, max)\). This function does not trigger any enumeration.
min | the minimum length. |
max | the maximum length plus one. |
|
inlinenodiscard |
This function returns the total number of relations in the presentation.
size_t
.this
, and \(n\) is the return value of FroidurePin::number_of_generators.
|
default |
Move assignment operator.
FroidurePinBase & operator= | ( | FroidurePinBase const & | ) |
Copy assignment operator.
|
inlinenodiscard |
This function returns the position in a FroidurePin instance corresponding to the word in the generators given by first
and last
. This function triggers a full enumeration.
Iterator1 | type of the first argument. |
Iterator2 | type of the second argument. |
first | iterator pointing at the first letter in the word. |
last | iterator pointing one beyond the last letter in the word. |
first
and last
, or UNDEFINED if there is no such element.LibsemigroupsException | if any of the letters (pointed at by iterators in the range from first to last ) is out of range (exceeds FroidurePin::number_of_generators). |
first
to last
.
|
inlinenodiscard |
This function returns the position in a FroidurePin instance corresponding to the word in the generators given by the iterators first
and last
. This function triggers a full enumeration.
Iterator1 | type of the first argument. |
Iterator2 | type of the second argument. |
first | iterator pointing at the first letter in the word. |
last | iterator pointing one beyond the last letter in the word. |
first
and last
.first
to last
.first
to last
) is out of range, then bad things will happen.
|
inlinenodiscard |
In many cases position_of_generator(i)
will equal i
, examples of when this will not be the case are:
i | the index of the generator. |
i-th
generator.LibsemigroupsException | if i is greater than or equal to FroidurePin::number_of_generators. |
|
inlinenodiscard |
In many cases position_of_generator(i)
will equal i
, examples of when this will not be the case are:
i | the index of the generator. |
i-th
generator.i
, then bad things will happen.
|
inline |
Returns the position of the prefix of the element x
in position pos
of length one less than the length of x
.
pos | the position. |
element_index_type
.LibsemigroupsException | if pos is greater than or equal to current_size. |
|
inline |
Returns the position of the prefix of the element x
in position pos
(of the semigroup) of length one less than the length of x
.
pos | the position. |
element_index_type
.pos
is valid. In particular, if pos
is greater than or equal to current_size, then bad things will happen.
|
inlinenodiscard |
This function returns a const reference to the right Cayley graph.
this
, and \(n\) is the return value of FroidurePin::number_of_generators.
|
inlinenodiscard |
This function fully enumerates the FroidurePin instance and then returns the number of elements.
|
inlinenodiscard |
Returns the position of the suffix of the element x
in position pos
of length one less than the length of x
.
pos | the position. |
element_index_type
.LibsemigroupsException | if pos is greater than or equal to current_size. |
|
inlinenodiscard |
Returns the position of the suffix of the element x
in position pos
of length one less than the length of x
.
pos | the position. |
element_index_type
.pos
is valid. In particular, if pos
is greater than or equal to current_size, then bad things will happen.
|
inline |
This function throws an exception if any index pointed at by an iterator in the range between first
and last
is greater than FroidurePin::number_of_generators.
Iterator1 | the type of the first argument. |
Iterator2 | the type of the second argument. |
first | iterator pointing at the first index. |
last | iterating pointing one beyond the last index. |
LibsemigroupsException | if any index pointed at by an iterator in the range from first to last exceeds FroidurePin::number_of_generators. |
void throw_if_element_index_out_of_range | ( | element_index_type | i | ) | const |
This function throws an exception if the argument i
exceeds current_size.
i | the index to check. |
LibsemigroupsException | if i exceeds current_size. |
void throw_if_generator_index_out_of_range | ( | generator_index_type | i | ) | const |
This function throws an exception if the argument i
exceeds FroidurePin::number_of_generators.
i | the index to check. |
LibsemigroupsException | if i exceeds FroidurePin::number_of_generators. |