![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
Functions | |
template<typename Element> | |
void | add_generators (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Add collection of generators from initializer list. | |
template<typename Container> | |
void | add_generators (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Add collection of generators from container. | |
template<typename Element> | |
void | add_generators_no_checks (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Add collection of generators from initializer list. | |
template<typename Container> | |
void | add_generators_no_checks (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Add collection of generators from container. | |
template<typename Element> | |
void | closure (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Add non-redundant generators from a std::initializer_list. | |
template<typename Container> | |
void | closure (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Add non-redundant generators from a container. | |
template<typename Element> | |
void | closure_no_checks (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Add non-redundant generators from a std::initializer_list. | |
template<typename Container> | |
void | closure_no_checks (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Add non-redundant generators from a container. | |
template<typename Element> | |
FroidurePin< Element > | copy_add_generators (FroidurePin< Element > const &fp, std::initializer_list< Element > coll) |
Copy a FroidurePin instance and add a collection of generators from std::initializer_list. | |
template<typename Container> | |
FroidurePin< typename Container::value_type > | copy_add_generators (FroidurePin< typename Container::value_type > const &fp, Container const &coll) |
Copy a FroidurePin instance and add a collection of generators from a container. | |
template<typename Element> | |
FroidurePin< Element > | copy_add_generators_no_checks (FroidurePin< Element > const &fp, std::initializer_list< Element > coll) |
Copy a FroidurePin instance and add a collection of generators from std::initializer_list. | |
template<typename Container> | |
FroidurePin< typename Container::value_type > | copy_add_generators_no_checks (FroidurePin< typename Container::value_type > const &fp, Container const &coll) |
Copy a FroidurePin instance and add a collection of generators from a container. | |
template<typename Element> | |
FroidurePin< Element > | copy_closure (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Copy and add non-redundant generators from a std::initializer_list. | |
template<typename Container> | |
FroidurePin< typename Container::value_type > | copy_closure (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Copy and add non-redundant generators from a container. | |
template<typename Element> | |
FroidurePin< Element > | copy_closure_no_checks (FroidurePin< Element > &fp, std::initializer_list< Element > coll) |
Copy and add non-redundant generators from a std::initializer_list. | |
template<typename Container> | |
FroidurePin< typename Container::value_type > | copy_closure_no_checks (FroidurePin< typename Container::value_type > &fp, Container const &coll) |
Copy and add non-redundant generators from a container. | |
template<typename Element, typename Traits> | |
auto | current_elements (FroidurePin< Element, Traits > const &fp) |
Returns a range object containing the so-far enumerated elements. | |
template<typename Word> | |
void | current_factorisation_no_checks (FroidurePinBase const &fpb, Word &word, FroidurePinBase::element_index_type pos) |
Modify a word to contain a word representing an element given by index. | |
template<typename Word = word_type> | |
Word | current_minimal_factorisation (FroidurePinBase const &fpb, FroidurePinBase::element_index_type pos) |
Returns the short-lex least word representing an element given by index. | |
template<typename Word> | |
void | current_minimal_factorisation (FroidurePinBase const &fpb, Word &word, FroidurePinBase::element_index_type pos) |
Modify a word to contain the short-lex least word representing an element given by index. | |
template<typename Word = word_type> | |
Word | current_minimal_factorisation_no_checks (FroidurePinBase const &fpb, FroidurePinBase::element_index_type pos) |
Returns the short-lex least word representing an element given by index. | |
template<typename Word> | |
void | current_minimal_factorisation_no_checks (FroidurePinBase const &fpb, Word &word, FroidurePinBase::element_index_type pos) |
Modify a word to contain the short-lex least word representing an element given by index. | |
rx::iterator_range< FroidurePinBase::const_normal_form_iterator > | current_normal_forms (FroidurePinBase const &fpb) |
Returns a range object containing normal forms for the so-far enumerated elements. | |
static FroidurePinBase::element_index_type | current_position (FroidurePinBase const &fpb, std::initializer_list< int > const &w) |
Returns the position corresponding to a word. | |
template<typename Word> | |
FroidurePinBase::element_index_type | current_position (FroidurePinBase const &fpb, Word const &w) |
Returns the position corresponding to a word. | |
static FroidurePinBase::element_index_type | current_position_no_checks (FroidurePinBase const &fpb, std::initializer_list< int > const &w) |
Returns the position corresponding to a word. | |
template<typename Word> | |
FroidurePinBase::element_index_type | current_position_no_checks (FroidurePinBase const &fpb, Word const &w) |
Returns the position corresponding to a word. | |
rx::iterator_range< FroidurePinBase::const_rule_iterator > | current_rules (FroidurePinBase const &fpb) |
Returns a range object containing the so-far enumerated rules. | |
template<typename Element, typename Traits> | |
auto | elements (FroidurePin< Element, Traits > &fp) |
Returns a range object containing all of the elements. | |
template<typename Element, typename Traits, typename Word> | |
bool | equal_to (FroidurePin< Element, Traits > const &fp, Word const &x, Word const &y) |
Check equality of words in the generators. | |
template<typename Element, typename Traits, typename Word> | |
bool | equal_to_no_checks (FroidurePin< Element, Traits > const &fp, Word const &x, Word const &y) |
Check equality of words in the generators. | |
template<typename Element, typename Traits, typename Word = word_type> | |
Word | factorisation (FroidurePin< Element, Traits > &fp, typename FroidurePin< Element, Traits >::const_reference x) |
Returns a word containing a factorisation (in the generators) of an element. | |
template<typename Element, typename Traits, typename Word> | |
void | factorisation (FroidurePin< Element, Traits > &fp, Word &w, typename FroidurePin< Element, Traits >::const_reference x) |
Modify a word in-place to contain a minimal factorisation (in the generators) of an element. | |
template<typename Word = word_type> | |
Word | factorisation (FroidurePinBase &fpb, FroidurePinBase::element_index_type pos) |
Returns a word representing an element given by index. | |
template<typename Word> | |
void | factorisation (FroidurePinBase &fpb, Word &word, FroidurePinBase::element_index_type pos) |
Modify a word to contain a word representing an element given by index. | |
template<typename Element, typename Traits> | |
auto | idempotents (FroidurePin< Element, Traits > &fp) |
Returns a range object containing all of the idempotents. | |
template<typename Element> | |
FroidurePin< Element > | init (FroidurePin< Element > &fp, std::initializer_list< Element > gens) |
Re-initialize a FroidurePin object from a container of generators. | |
template<typename Container> | |
FroidurePin< typename Container::value_type > & | init (FroidurePin< typename Container::value_type > &fp, Container const &gens) |
Re-initialize a FroidurePin object from a container of generators. | |
template<typename Element, typename Traits, typename Word = word_type> | |
Word | minimal_factorisation (FroidurePin< Element, Traits > &fp, typename FroidurePin< Element, Traits >::const_reference x) |
Returns a word containing a minimal factorisation (in the generators) of an element. | |
template<typename Element, typename Traits, typename Word> | |
void | minimal_factorisation (FroidurePin< Element, Traits > &fp, Word &w, typename FroidurePin< Element, Traits >::const_reference x) |
Modify a word in-place to contain a minimal factorisation (in the generators) of an element. | |
template<typename Word = word_type> | |
Word | minimal_factorisation (FroidurePinBase &fpb, FroidurePinBase::element_index_type pos) |
Returns the short-lex least word representing an element given by index. | |
template<typename Word> | |
void | minimal_factorisation (FroidurePinBase &fpb, Word &word, FroidurePinBase::element_index_type pos) |
Modify a word to contain the short-lex least word representing an element given by index. | |
rx::iterator_range< FroidurePinBase::const_normal_form_iterator > | normal_forms (FroidurePinBase &fpb) |
Returns a range object containing normal forms for all the elements. | |
static FroidurePinBase::element_index_type | position (FroidurePinBase &fpb, std::initializer_list< int > const &w) |
Returns the position corresponding to a word. | |
template<typename Word> | |
FroidurePinBase::element_index_type | position (FroidurePinBase &fpb, Word const &w) |
Returns the position corresponding to a word. | |
static FroidurePinBase::element_index_type | position_no_checks (FroidurePinBase &fpb, std::initializer_list< int > const &w) |
Returns the position corresponding to a word. | |
template<typename Word> | |
FroidurePinBase::element_index_type | position_no_checks (FroidurePinBase &fpb, Word const &w) |
Returns the position corresponding to a word. | |
FroidurePinBase::element_index_type | product_by_reduction (FroidurePinBase const &fpb, typename FroidurePinBase::element_index_type i, typename FroidurePinBase::element_index_type j) |
Compute a product using the Cayley graph. | |
FroidurePinBase::element_index_type | product_by_reduction_no_checks (FroidurePinBase const &fpb, typename FroidurePinBase::element_index_type i, typename FroidurePinBase::element_index_type j) |
Compute a product using the Cayley graph. | |
rx::iterator_range< FroidurePinBase::const_rule_iterator > | rules (FroidurePinBase &fpb) |
Returns a range object containing all of the rules. | |
template<typename Element, typename Traits> | |
auto | sorted_elements (FroidurePin< Element, Traits > &fp) |
Returns a range object containing all of the elements. | |
template<typename Element, typename Traits, typename T = size_t> | |
FroidurePin< Element, Traits >::const_reference | to_element (FroidurePin< Element, Traits > const &fp, std::initializer_list< T > const &w) |
Convert a word in the generators to an element. | |
template<typename Element, typename Traits, typename Word> | |
FroidurePin< Element, Traits >::const_reference | to_element (FroidurePin< Element, Traits > const &fp, Word const &w) |
Convert a word in the generators to an element. | |
template<typename Element, typename Traits, typename T = size_t> | |
FroidurePin< Element, Traits >::const_reference | to_element_no_checks (FroidurePin< Element, Traits > const &fp, std::initializer_list< T > const &w) |
Convert a word in the generators to an element. | |
template<typename Element, typename Traits, typename Word> | |
FroidurePin< Element, Traits >::const_reference | to_element_no_checks (FroidurePin< Element, Traits > const &fp, Word const &w) |
Convert a word in the generators to an element. | |
void add_generators | ( | FroidurePin< Element > & | fp, |
std::initializer_list< Element > | coll ) |
See add_generator for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
LibsemigroupsException | if the degree of x is incompatible with the existing degree of fp (if any). |
void add_generators | ( | FroidurePin< typename Container::value_type > & | fp, |
Container const & | coll ) |
See add_generators for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
LibsemigroupsException | if the degree of x is incompatible with the existing degree of fp (if any). |
void add_generators_no_checks | ( | FroidurePin< Element > & | fp, |
std::initializer_list< Element > | coll ) |
See add_generator_no_checks for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
coll
all have the same degree. void add_generators_no_checks | ( | FroidurePin< typename Container::value_type > & | fp, |
Container const & | coll ) |
See add_generator_no_checks for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
gens
all have the same degree. void closure | ( | FroidurePin< Element > & | fp, |
std::initializer_list< Element > | coll ) |
See closure for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generator to add. |
LibsemigroupsException | if the degree of x is incompatible with the existing degree of fp (if any). |
void closure | ( | FroidurePin< typename Container::value_type > & | fp, |
Container const & | coll ) |
See closure for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generator to add. |
LibsemigroupsException | if the degree of x is incompatible with the existing degree of fp (if any). |
void closure_no_checks | ( | FroidurePin< Element > & | fp, |
std::initializer_list< Element > | coll ) |
See closure for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generator to add. |
coll
all have the same degree. void closure_no_checks | ( | FroidurePin< typename Container::value_type > & | fp, |
Container const & | coll ) |
See closure_no_checks for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generator to add. |
coll
all have the same degree.
|
nodiscard |
See copy_add_generators for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
fp
and coll
.LibsemigroupsException | if the degree of any element in coll is incompatible with the existing degree of fp (if any). |
|
nodiscard |
See copy_add_generators for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
fp
and coll
.LibsemigroupsException | if the degree of any element in coll is incompatible with the existing degree of fp (if any). |
|
nodiscard |
See copy_add_generators for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
fp
and coll
.gens
all have the same degree.
|
nodiscard |
See copy_add_generators_no_checks for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
fp
and coll
.coll
all have the same degree.
|
nodiscard |
See copy_closure for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
this
and the non-redundant generators from coll
.LibsemigroupsException | if the degree of any element in coll is incompatible with the existing degree of fp (if any). |
|
nodiscard |
See copy_closure for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
this
and the non-redundant generators from coll
.LibsemigroupsException | if the degree of any element in coll is incompatible with the existing degree of fp (if any). |
|
nodiscard |
See copy_closure_no_checks for a detailed description.
Element | the type of the elements in the FroidurePin instance. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
this
and the non-redundant generators from coll
.coll
all have the same degree.
|
nodiscard |
See copy_closure_no_checks for a detailed description.
Container | the type of the container for generators to add. |
fp | the FroidurePin instance. |
coll | the collection of generators to add. |
this
and the non-redundant generators from coll
.coll
all have the same degree.
|
nodiscard |
This function returns a range object wrapping FroidurePin::cbegin and FroidurePin::cend, i.e. containing the so-far enumerated elements.
See Ranges for more details about range objects.
Element | the type of the elements in the represented semigroup. |
Traits | a traits class holding various adapters used by the implementation (defaults to FroidurePinTraits). |
fp | the FroidurePin instance. |
void current_factorisation_no_checks | ( | FroidurePinBase const & | fpb, |
Word & | word, | ||
FroidurePinBase::element_index_type | pos ) |
This function changes word
in-place to contain a (maybe not minimal) word (in the generators) equal to the element in position pos
.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
word | the word to clear and change in-place. |
pos | the index of the element whose factorisation is sought. |
pos
is valid. In particular, it is assumed that pos
is strictly less than current_size.
|
nodiscard |
This function is similar to the 3-argument version current_minimal_factorisation, but it returns a Word
by value instead of modifying its argument in-place.
Word | the type of the returned word (defaults to word_type). |
fpb | the FroidurePinBase instance. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to current_size. |
pos
and \(n\) is the return value of FroidurePin::number_of_generators.void current_minimal_factorisation | ( | FroidurePinBase const & | fpb, |
Word & | word, | ||
FroidurePinBase::element_index_type | pos ) |
This function changes word
in-place to contain the short-lex minimal word (in the generators) equal to the element in position pos
.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
word | the word to clear and change in-place. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to current_size. |
|
nodiscard |
This function is similar to the 3-argument version current_minimal_factorisation_no_checks, but it returns a Word
by value instead of modifying its argument in-place.
Word | the type of the returned word (defaults to word_type). |
fpb | the FroidurePinBase instance. |
pos | the index of the element whose factorisation is sought. |
pos
and \(n\) is the return value of FroidurePin::number_of_generators.pos
is valid. In particular, it is assumed that pos
is strictly less than current_size. void current_minimal_factorisation_no_checks | ( | FroidurePinBase const & | fpb, |
Word & | word, | ||
FroidurePinBase::element_index_type | pos ) |
This function changes word
in-place to contain the short-lex minimal word (in the generators) equal to the element in position pos
.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
word | the word to clear and change in-place. |
pos | the index of the element whose factorisation is sought. |
pos
is valid. In particular, it is assumed that pos
is strictly less than current_size.
|
nodiscard |
This function returns a range object containing normal forms for the elements of fpb
that have been enumerated so far.
fpb | the FroidurePinBase object. |
|
inlinestaticnodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.LibsemigroupsException | if w does not consist of values strictly less than FroidurePin::number_of_generators. |
w
.
|
nodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.LibsemigroupsException | if w does not consist of values strictly less than FroidurePin::number_of_generators. |
w
.
|
inlinestaticnodiscard |
This function returns the position of the element corresponding to the word w
; UNDEFINED is returned if the position of the element corresponding to w
cannot be determined.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
, or UNDEFINED if there is no such element.w
.w
is strictly less than current_size.
|
nodiscard |
This function returns the position of the element corresponding to the word w
; UNDEFINED is returned if the position of the element corresponding to w
cannot be determined.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
, or UNDEFINED if there is no such element.w
.w
is strictly less than current_size.
|
nodiscard |
This function returns a range object containing the rules of the semigroup that have been enumerated so far. Calling this function does not trigger any enumeration.
fpb | the FroidurePinBase object. |
|
nodiscard |
This function returns a range object wrapping FroidurePin::cbegin and FroidurePin::cend, after fully enumerating fp
.
See Ranges for more details about range objects.
Element | the type of the elements in the represented semigroup. |
Traits | a traits class holding various adapters used by the implementation (defaults to FroidurePinTraits). |
fp | the FroidurePin instance. |
|
nodiscard |
This function returns true
if the parameters represent the same element and false
otherwise.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
x | the first word. |
y | the second word. |
bool
.LibsemigroupsException | if x or y contains a value greater than or equal to FroidurePin::number_of_generators. |
|
nodiscard |
This function returns true
if the parameters represent the same element and false
otherwise.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
x | the first word. |
y | the second word. |
bool
.x
and y
is strictly less than FroidurePin::number_of_generators.
|
nodiscard |
This function returns a word in the generators that equals the given element x
. The key difference between this function and froidure_pin::minimal_factorisation, is that the resulting factorisation may not be minimal.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
x | a const reference to a possible element to factorise. |
x
.LibsemigroupsException | if x does not belong to the FroidurePin instance. |
x
is found. void factorisation | ( | FroidurePin< Element, Traits > & | fp, |
Word & | w, | ||
typename FroidurePin< Element, Traits >::const_reference | x ) |
This function returns the short-lex minimum word (if any) in the generators that evaluates to x
. The key difference between this function and froidure_pin::minimal_factorisation(word_type&, const_reference), is that the resulting factorisation may not be minimal.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
w | the Word to contain the factorisation. |
x | a const reference to a possible element to factorise. |
LibsemigroupsException | if x does not belong to the FroidurePin instance. |
x
is found.
|
nodiscard |
This is similar to the three-argument version for minimal_factorisation, but it returns a Word
by value instead of modifying an argument in-place.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
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. void factorisation | ( | FroidurePinBase & | fpb, |
Word & | word, | ||
FroidurePinBase::element_index_type | pos ) |
This function changes word
in-place to contain a word (in the generators) equal to the element in position pos
.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
word | the word to clear and change in-place. |
pos | the index of the element whose factorisation is sought. |
pos
elements are found.pos
is valid. In particular, it is assumed that pos
is strictly less than current_size.
|
nodiscard |
This function returns a range object wrapping FroidurePin::cbegin_idempotents and FroidurePin::cend_idempotents, after fully enumerating fp
.
See Ranges for more details about range objects.
Element | the type of the elements in the represented semigroup. |
Traits | a traits class holding various adapters used by the implementation (defaults to FroidurePinTraits). |
fp | the FroidurePin instance. |
|
nodiscard |
This function re-initializes a FroidurePin object from the container of generators gens
.
Container | the type of the container. |
fp | the FroidurePin instance. |
gens | the generators. |
gens
all have the same degree. FroidurePin< typename Container::value_type > & init | ( | FroidurePin< typename Container::value_type > & | fp, |
Container const & | gens ) |
This function re-initializes a FroidurePin object from the container of generators gens
.
Container | the type of the container. |
fp | the FroidurePin instance. |
gens | the generators. |
gens
all have the same degree.
|
nodiscard |
This function returns the short-lex minimum word (if any) in the generators that evaluates to x
.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
x | a const reference to a possible element to factorise. |
x
.LibsemigroupsException | if x does not belong to this . |
pos
elements are found.void minimal_factorisation | ( | FroidurePin< Element, Traits > & | fp, |
Word & | w, | ||
typename FroidurePin< Element, Traits >::const_reference | x ) |
This function returns the short-lex minimum word (if any) in the generators that evaluates to x
.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
Word | the type of the second and third arguments. |
fp | the FroidurePin instance. |
w | the Word to contain the factorisation. |
x | a const reference to a possible element to factorise. |
LibsemigroupsException | if x does not belong to the FroidurePin instance. |
pos
elements are found.
|
nodiscard |
This is similar to the three-argument version for minimal_factorisation, but it returns a Word
by value instead of modifying an argument in-place.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
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. void minimal_factorisation | ( | FroidurePinBase & | fpb, |
Word & | word, | ||
FroidurePinBase::element_index_type | pos ) |
This function changes word
in-place to contain the short-lex minimal word (in the generators) equal to the element in position pos
.
Word | the type of the second argument. |
fpb | the FroidurePinBase instance. |
word | the word to clear and change in-place. |
pos | the index of the element whose factorisation is sought. |
LibsemigroupsException | if pos is greater than or equal to current_size. |
pos
elements are found.
|
nodiscard |
This function returns a range object containing normal forms for all of the elements of the semigroup. Calling this function triggers a full enumeration.
fpb | the FroidurePinBase object. |
|
inlinestaticnodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.LibsemigroupsException | if w does not consist of values strictly less than FroidurePin::number_of_generators. |
w
.
|
nodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.LibsemigroupsException | if w does not consist of values strictly less than FroidurePin::number_of_generators. |
w
.
|
inlinestaticnodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.w
.w
is strictly less than current_size.
|
nodiscard |
This function returns the position of the element corresponding to the word w
.
Word | the type of the argument. |
fpb | the FroidurePinBase instance. |
w | a word in the generators. |
w
.w
.w
is strictly less than current_size.
|
nodiscard |
This function finds the product of fpb.at(i)
and fpb.at(j)
by following the path in the right Cayley graph from i
labelled by the word fpb.minimal_factorisation(j)
or, if fpb.minimal_factorisation(i)
is shorter, by following the path in the left Cayley graph from j
labelled by fpb.minimal_factorisation(i)
.
fpb | the FroidurePinBase object. |
i | the index of an element. |
j | another index of an element. |
LibsemigroupsException | if i or j is greater than or equal to FroidurePinBase::current_size. |
minimal_factorisation(i)
and minimal_factorisation(j)
.
|
nodiscard |
This function finds the product of fpb.at(i)
and fpb.at(j)
by following the path in the right Cayley graph from i
labelled by the word fpb.minimal_factorisation(j)
or, if fpb.minimal_factorisation(i)
is shorter, by following the path in the left Cayley graph from j
labelled by fpb.minimal_factorisation(i)
.
fpb | the FroidurePinBase object. |
i | the index of an element. |
j | another index of an element. |
minimal_factorisation(i)
and minimal_factorisation(j)
.i
or j
is greater than or equal to FroidurePinBase::current_size, then bad things will happen.
|
nodiscard |
This function returns a range object containing all of the rules of the semigroup that have been enumerated so far. Calling this function triggers a full enumeration.
fpb | the FroidurePinBase object. |
|
nodiscard |
This function returns a range object wrapping FroidurePin::cbegin_sorted and FroidurePin::cend_sorted, after fully enumerating fp
.
See Ranges for more details about range objects.
Element | the type of the elements in the represented semigroup. |
Traits | a traits class holding various adapters used by the implementation (defaults to FroidurePinTraits). |
fp | the FroidurePin instance. |
|
nodiscard |
This function returns a reference to the element obtained by evaluating w
. The returned reference may only be valid until the next function that triggers an enumeration is called, or another call to this function is made.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
fp | the FroidurePin instance. |
w | the word in the generators to evaluate. |
w
.LibsemigroupsException | if w is not a valid word in the generators, i.e. if it contains a value greater than or equal to the number of generators. |
LibsemigroupsException | if w is empty and FroidurePin::currently_contains_one returns true . |
|
nodiscard |
This function returns a reference to the element obtained by evaluating w
. The returned reference may only be valid until the next function that triggers an enumeration is called, or another call to this function is made.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
fp | the FroidurePin instance. |
w | the word in the generators to evaluate. |
w
.LibsemigroupsException | if w is not a valid word in the generators, i.e. if it contains a value greater than or equal to the number of generators. |
LibsemigroupsException | if w is empty and FroidurePin::currently_contains_one returns true . |
|
nodiscard |
This function returns a reference to the element obtained by evaluating w
. The returned reference may only be valid until the next function that triggers an enumeration is called, or another call to this function is made.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
fp | the FroidurePin instance. |
w | the word in the generators to evaluate. |
w
.w
are less than FroidurePin::number_of_generators; and if w
is empty it is assumed that FroidurePin::currently_contains_one returns true
(although nothing bad will happen if this doesn't hold, except that this function will return the identity element even though it might not be an element of the semigroup).
|
nodiscard |
This function returns a reference to the element obtained by evaluating w
. The returned reference may only be valid until the next function that triggers an enumeration is called, or another call to this function is made.
Element | the type of the elements in the FroidurePin instance. |
Traits | the traits class for the FroidurePin instance. |
fp | the FroidurePin instance. |
w | the word in the generators to evaluate. |
w
.w
are less than FroidurePin::number_of_generators; and if w
is empty it is assumed that FroidurePin::currently_contains_one returns true
(although nothing bad will happen if this doesn't hold, except that this function will return the identity element even though it might not be an element of the semigroup).