![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
This page contains documentation of the member functions of ToddCoxeter that are implemented in all of the classes Congruence, Kambites, KnuthBendix, and ToddCoxeter.
Functions | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
ToddCoxeter & | add_generating_pair (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) |
Add generating pair via iterators. | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
ToddCoxeter & | add_generating_pair_no_checks (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) |
Add generating pair via iterators. | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
bool | contains (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) |
Check containment of a pair of words via iterators. | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
bool | contains_no_checks (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) |
Check containment of a pair of words via iterators. | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
tril | currently_contains (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) const |
Check containment of a pair of words via iterators. | |
template<typename Iterator1, typename Iterator2, typename Iterator3, typename Iterator4> | |
tril | currently_contains_no_checks (Iterator1 first1, Iterator2 last1, Iterator3 first2, Iterator4 last2) const |
Check containment of a pair of words via iterators. | |
std::vector< Word > const & | generating_pairs () const noexcept |
Get the generating pairs of the congruence. | |
congruence_kind | kind () const noexcept |
The kind of the congruence (1- or 2-sided). | |
uint64_t | number_of_classes () |
Compute the number of classes in the congruence. | |
size_t | number_of_generating_pairs () const noexcept |
Returns the number of generating pairs. | |
Presentation< Word > const & | presentation () const noexcept |
Get the presentation used to define a ToddCoxeter instance (if any). | |
template<typename OutputIterator, typename InputIterator1, typename InputIterator2> | |
OutputIterator | reduce (OutputIterator d_first, InputIterator1 first, InputIterator2 last) |
Reduce a word. | |
template<typename OutputIterator, typename InputIterator1, typename InputIterator2> | |
OutputIterator | reduce_no_checks (OutputIterator d_first, InputIterator1 first, InputIterator2 last) |
Reduce a word with no checks. | |
template<typename OutputIterator, typename InputIterator1, typename InputIterator2> | |
OutputIterator | reduce_no_run (OutputIterator d_first, InputIterator1 first, InputIterator2 last) const |
Reduce a word with no enumeration. | |
template<typename OutputIterator, typename InputIterator1, typename InputIterator2> | |
OutputIterator | reduce_no_run_no_checks (OutputIterator d_first, InputIterator1 first, InputIterator2 last) const |
Reduce a word with no enumeration or checks. | |
|
inline |
This function adds a generating pair to the congruence represented by a ToddCoxeter instance.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
*this
.LibsemigroupsException | if any of the values pointed at by the iterators is out of range, i.e. they do not belong to presentation().alphabet() and Presentation::validate_word throws. |
LibsemigroupsException | if started returns true . |
ToddCoxeter & add_generating_pair_no_checks | ( | Iterator1 | first1, |
Iterator2 | last1, | ||
Iterator3 | first2, | ||
Iterator4 | last2 ) |
This function adds a generating pair to the congruence represented by a ToddCoxeter instance.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
*this
.presentation().alphabet()
.false
. Adding generating pairs after started is not permitted (but also not checked by this function). bool contains | ( | Iterator1 | first1, |
Iterator2 | last1, | ||
Iterator3 | first2, | ||
Iterator4 | last2 ) |
This function checks whether or not the words represented by the ranges first1
to last1
and first2
to last2
are contained in the congruence represented by a ToddCoxeter instance. This function triggers a full enumeration, which may never terminate.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
LibsemigroupsException | if any of the values pointed at by the iterators is out of range, i.e. they do not belong to presentation().alphabet() and Presentation::validate_word throws. |
|
inline |
This function checks whether or not the words represented by the ranges first1
to last1
and first2
to last2
are contained in the congruence represented by a ToddCoxeter instance. This function triggers a full enumeration, which may never terminate.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
presentation().alphabet()
.
|
inline |
This function checks whether or not the words represented by the ranges first1
to last1
and first2
to last2
are already known to be contained in the congruence represented by a ToddCoxeter. This function performs no enumeration, so it is possible for the words to be contained in the congruence, but that this is not currently known.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
LibsemigroupsException | if any of the values pointed at by the iterators is out of range, i.e. they do not belong to presentation().alphabet() and Presentation::validate_word throws. |
|
inline |
This function checks whether or not the words represented by the ranges first1
to last1
and first2
to last2
are already known to be contained in the congruence represented by a ToddCoxeter instance. This function performs no enumeration, so it is possible for the words to be contained in the congruence, but that this is not currently known.
Iterator1 | the type of the argument first1 . |
Iterator2 | the type of the argument last1 . |
Iterator3 | the type of the argument first2 . |
Iterator4 | the type of the argument last2 . |
first1 | iterator pointing at the first letter of the first word. |
last1 | iterator pointing one beyond the last letter in the first word. |
first2 | iterator pointing at the first letter of the second word. |
last2 | iterator pointing one beyond the last letter in the second word. |
presentation().alphabet()
.
|
inlinenodiscardnoexcept |
This function returns the generating pairs of the congruence. The words comprising the generating pairs are converted to native_word_type as they are added via add_generating_pair. This function returns the std::vector of these native_word_type.
noexcept
and is guaranteed never to throw.
|
nodiscardnoexcept |
This function returns the kind of the congruence represented by a ToddCoxeter instance; see congruence_kind for details.
noexcept
and is guaranteed never to throw.
|
nodiscard |
This function computes the number of classes in the congruence represented by a ToddCoxeter instance by running the congruence enumeration until it terminates.
|
nodiscardnoexcept |
This function returns the number of generating pairs, which is the size of generating_pairs divided by \(2\).
noexcept
and is guaranteed never to throw.
|
inlinenodiscardnoexcept |
If a ToddCoxeter instance is constructed or initialised using a presentation, then a const reference to this presentation is returned by this function.
If the ToddCoxeter instance was constructed or initialised from a WordGraph, then this presentation will be empty.
noexcept
and is guaranteed never to throw.
|
inline |
This function triggers a full enumeration and then writes a reduced word equivalent to the input word described by the iterator first
and last
to the output iterator d_first
. The word output by this function is equivalent to the input word in the congruence defined by a ToddCoxeter instance. In other words, the output word is a normal form for the input word or equivalently a canconical representative of its congruence class.
OutputIterator | the type of the argument d_first . |
InputIterator1 | the type of the argument first . |
InputIterator2 | the type of the argument last . |
d_first | output iterator. |
first | iterator pointing at the first letter of the input word. |
last | iterator pointing one beyond the last letter in the input word. |
OutputIterator
pointing one beyond the last letter inserted into d_first
.LibsemigroupsException | if any of the values pointed at by the iterators is out of range, i.e. they do not belong to presentation().alphabet() and Presentation::validate_word throws. |
|
inline |
This function triggers a full enumeration and then writes a reduced word equivalent to the input word described by the iterator first
and last
to the output iterator d_first
. The word output by this function is equivalent to the input word in the congruence defined by a ToddCoxeter instance. In other words, the output word is a normal form for the input word or equivalently a canconical representative of its congruence class.
OutputIterator | the type of the argument d_first . |
InputIterator1 | the type of the argument first . |
InputIterator2 | the type of the argument last . |
d_first | output iterator. |
first | iterator pointing at the first letter of the input word. |
last | iterator pointing one beyond the last letter in the input word. |
OutputIterator
pointing one beyond the last letter inserted into d_first
.presentation().alphabet()
.
|
inline |
This function writes a reduced word equivalent to the input word described by the iterator first
and last
to the output iterator d_first
. This function triggers no enumeration. The word output by this function is equivalent to the input word in the congruence defined by a ToddCoxeter instance. If the ToddCoxeter instance is finished, then the output word is a normal form for the input word. If the ToddCoxeter instance is not finished, then it might be that equivalent input words produce different output words.
OutputIterator | the type of the argument d_first . |
InputIterator1 | the type of the argument first . |
InputIterator2 | the type of the argument last . |
d_first | output iterator. |
first | iterator pointing at the first letter of the input word. |
last | iterator pointing one beyond the last letter in the input word. |
OutputIterator
pointing one beyond the last letter inserted into d_first
.LibsemigroupsException | if any of the values pointed at by the iterators is out of range, i.e. they do not belong to presentation().alphabet() and Presentation::validate_word throws. |
|
inline |
This function writes a reduced word equivalent to the input word described by the iterator first
and last
to the output iterator d_first
. This function triggers no enumeration. The word output by this function is equivalent to the input word in the congruence defined by a ToddCoxeter instance. If the ToddCoxeter instance is finished, then the output word is a normal form for the input word. If the ToddCoxeter instance is not finished, then it might be that equivalent input words produce different output words.
OutputIterator | the type of the argument d_first . |
InputIterator1 | the type of the argument first . |
InputIterator2 | the type of the argument last . |
d_first | output iterator. |
first | iterator pointing at the first letter of the input word. |
last | iterator pointing one beyond the last letter in the input word. |
OutputIterator
pointing one beyond the last letter inserted into d_first
.presentation().alphabet()
.