libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
libsemigroups::sims Namespace Reference

This namespace contains many helper functions for the classes Sims1 and Sims2, and related.

Classes

class  const_cgp_iterator
 For iterating over the two-sided congruence generating pairs. More...
 
class  const_rcgp_iterator
 For iterating over the right congruence generating pairs. More...
 

Functions

template<typename Subclass>
Subclass & add_excluded_pair (SimsSettings< Subclass > &sims, char const *u, char const *v)
 Helper for adding a excluded pair of words (string literals).
 
template<typename Subclass, typename Int>
Subclass & add_excluded_pair (SimsSettings< Subclass > &sims, std::initializer_list< Int > const &u, std::initializer_list< Int > const &v)
 Helper for adding a excluded pair of words (std::initializer_list).
 
template<typename Subclass>
Subclass & add_excluded_pair (SimsSettings< Subclass > &sims, std::string_view u, std::string_view v)
 Helper for adding a excluded pair of words (std::string_view).
 
template<typename Subclass, typename Word>
Subclass & add_excluded_pair (SimsSettings< Subclass > &sims, Word const &u, Word const &v)
 Helper for adding an excluded pair of words.
 
template<typename Subclass>
Subclass & add_excluded_pair_no_checks (SimsSettings< Subclass > &sims, char const *u, char const *v)
 Helper for adding a excluded pair of words (string literals).
 
template<typename Subclass, typename Int>
Subclass & add_excluded_pair_no_checks (SimsSettings< Subclass > &sims, std::initializer_list< Int > const &u, std::initializer_list< Int > const &v)
 Helper for adding a excluded pair of words (std::initializer_list).
 
template<typename Subclass>
Subclass & add_excluded_pair_no_checks (SimsSettings< Subclass > &sims, std::string_view u, std::string_view v)
 Helper for adding a excluded pair of words (std::string_view).
 
template<typename Subclass, typename Word>
Subclass & add_excluded_pair_no_checks (SimsSettings< Subclass > &sims, Word const &u, Word const &v)
 Helper for adding an excluded pair of words.
 
template<typename Subclass>
Subclass & add_included_pair (SimsSettings< Subclass > &sims, char const *u, char const *v)
 Helper for adding a included pair of words (string literals).
 
template<typename Subclass, typename Int>
Subclass & add_included_pair (SimsSettings< Subclass > &sims, std::initializer_list< Int > const &u, std::initializer_list< Int > const &v)
 Helper for adding a included pair of words (std::initializer_list).
 
template<typename Subclass>
Subclass & add_included_pair (SimsSettings< Subclass > &sims, std::string_view u, std::string_view v)
 Helper for adding a included pair of words (std::string_view).
 
template<typename Subclass, typename Word>
Subclass & add_included_pair (SimsSettings< Subclass > &sims, Word const &u, Word const &v)
 Helper for adding an included pair of words.
 
template<typename Subclass>
Subclass & add_included_pair_no_checks (SimsSettings< Subclass > &sims, char const *u, char const *v)
 Helper for adding a generating pair of words (string literals).
 
template<typename Subclass, typename Int>
Subclass & add_included_pair_no_checks (SimsSettings< Subclass > &sims, std::initializer_list< Int > const &u, std::initializer_list< Int > const &v)
 Helper for adding a generating pair of words (std::initializer_list).
 
template<typename Subclass>
Subclass & add_included_pair_no_checks (SimsSettings< Subclass > &sims, std::string_view u, std::string_view v)
 Helper for adding a generating pair of words (std::string_view).
 
template<typename Subclass, typename Word>
Subclass & add_included_pair_no_checks (SimsSettings< Subclass > &sims, Word const &u, Word const &v)
 Helper for adding an included pair of words.
 
template<typename Node>
const_rcgp_iterator cbegin_right_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to the first right congruence generating pair.
 
template<typename Node>
const_rcgp_iterator cbegin_right_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to the first right congruence generating pair (no checks).
 
template<typename Node>
const_cgp_iterator cbegin_two_sided_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to the first two-sided congruence generating pair.
 
template<typename Node>
const_cgp_iterator cbegin_two_sided_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to the first two-sided congruence generating pair (no checks).
 
template<typename Node>
const_rcgp_iterator cend_right_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to one after the last right congruence generating pair.
 
template<typename Node>
const_rcgp_iterator cend_right_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to one after the last right congruence generating pair (no checks).
 
template<typename Node>
const_cgp_iterator cend_two_sided_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to one after the last two-sided congruence generating pair.
 
template<typename Node>
const_cgp_iterator cend_two_sided_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Get an iterator pointing to one after the last two-sided congruence generating pair (no checks).
 
template<typename Iterator>
Dot dot_poset (Iterator first, Iterator last)
 Construct a Dot object representing the inclusion poset of a collection of word graphs.
 
template<typename Node>
bool is_maximal_right_congruence (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Check if a word graph defines a maximal right congruence on an f.p. semigroup or monoid.
 
template<typename Node>
bool is_right_congruence (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Check if a word graph defines a right congruence on an f.p. semigroup or monoid.
 
template<typename Node>
bool is_right_congruence_of_dual (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Check if a word graph defines a right congruence on the dual of an f.p. semigroup or monoid.
 
template<typename Node>
bool is_two_sided_congruence (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Check if a word graph defines a two sided congruence on an f.p. semigroup or monoid.
 
template<typename Node>
bool is_two_sided_congruence_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Check if a word graph defines a two-sided congruence on an f.p. semigroup or monoid (no checks).
 
template<typename Iterator>
BMat poset (Iterator first, Iterator last)
 Compute the inclusion poset of a collection of congruences defined by word graphs.
 
template<typename Node>
rx::iterator_range< const_rcgp_iteratorright_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Compute the right congruence generating pairs of a word graph on an f.p. semigroup or monoid.
 
template<typename Node>
rx::iterator_range< const_rcgp_iteratorright_generating_pairs (WordGraph< Node > const &wg)
 Compute the right congruence generating pairs of a word graph on the free monoid.
 
template<typename Node>
rx::iterator_range< const_rcgp_iteratorright_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Compute the right congruence generating pairs of a word graph on an f.p. semigroup or monoid (no checks).
 
template<typename Node>
rx::iterator_range< const_rcgp_iteratorright_generating_pairs_no_checks (WordGraph< Node > const &wg)
 Compute the right congruence generating pairs of a word graph on the free monoid (no checks).
 
template<typename Node>
void throw_if_not_right_congruence (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Throw if a word graph does not define a right congruence on a f.p. semigroup or monoid.
 
template<typename Node>
void throw_if_not_two_sided_congruence (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Throw if a word graph does not define a two sided congruence on a f.p. semigroup or monoid.
 
template<typename Node>
rx::iterator_range< const_cgp_iteratortwo_sided_generating_pairs (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Range object containing the two-sided congruence generating pairs of a word graph on an f.p. semigroup or monoid.
 
template<typename Node>
rx::iterator_range< const_cgp_iteratortwo_sided_generating_pairs (WordGraph< Node > const &wg)
 Compute the two-sided congruence generating pairs of a word graph on the free monoid.
 
template<typename Node>
rx::iterator_range< const_cgp_iteratortwo_sided_generating_pairs_no_checks (Presentation< word_type > const &p, WordGraph< Node > const &wg)
 Compute the two-sided congruence generating pairs of a word graph on an f.p. semigroup or monoid (no checks).
 
template<typename Node>
rx::iterator_range< const_cgp_iteratortwo_sided_generating_pairs_no_checks (WordGraph< Node > const &wg)
 Compute the two-sided congruence generating pairs of a word graph on the free monoid (no checks).
 

Function Documentation

◆ add_excluded_pair() [1/4]

template<typename Subclass>
Subclass & add_excluded_pair ( SimsSettings< Subclass > & sims,
char const * u,
char const * v )

◆ add_excluded_pair() [2/4]

template<typename Subclass, typename Int>
Subclass & add_excluded_pair ( SimsSettings< Subclass > & sims,
std::initializer_list< Int > const & u,
std::initializer_list< Int > const & v )

◆ add_excluded_pair() [3/4]

template<typename Subclass>
Subclass & add_excluded_pair ( SimsSettings< Subclass > & sims,
std::string_view u,
std::string_view v )

◆ add_excluded_pair() [4/4]

template<typename Subclass, typename Word>
Subclass & add_excluded_pair ( SimsSettings< Subclass > & sims,
Word const & u,
Word const & v )

This function can be used to add an excluded pair to sims using the objects themselves rather than using iterators.

Template Parameters
Subclassthe type of the first parameter.
Wordthe type of the second and third parameters.
Parameters
simsa Sims1 or Sims2 object.
uthe left hand side of the pair to add.
vthe right hand side of the pair to add.
Returns
A reference to sims.
Exceptions
LibsemigroupsExceptionif 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.
See also
excluded_pairs

◆ add_excluded_pair_no_checks() [1/4]

template<typename Subclass>
Subclass & add_excluded_pair_no_checks ( SimsSettings< Subclass > & sims,
char const * u,
char const * v )

See add_excluded_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_excluded_pair_no_checks() [2/4]

template<typename Subclass, typename Int>
Subclass & add_excluded_pair_no_checks ( SimsSettings< Subclass > & sims,
std::initializer_list< Int > const & u,
std::initializer_list< Int > const & v )

See add_excluded_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_excluded_pair_no_checks() [3/4]

template<typename Subclass>
Subclass & add_excluded_pair_no_checks ( SimsSettings< Subclass > & sims,
std::string_view u,
std::string_view v )

See add_excluded_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_excluded_pair_no_checks() [4/4]

template<typename Subclass, typename Word>
Subclass & add_excluded_pair_no_checks ( SimsSettings< Subclass > & sims,
Word const & u,
Word const & v )

This function can be used to add an excluded pair to sims using the objects themselves rather than using iterators.

Template Parameters
Subclassthe type of the first parameter.
Wordthe type of the second and third parameters.
Parameters
simsa Sims1 or Sims2 object.
uthe left hand side of the pair to add.
vthe right hand side of the pair to add.
Returns
A reference to sims.
Warning
This function does not check that the arguments are valid. In particular, it is assumed that every value pointed at by the iterators belongs to presentation().alphabet().
See also
excluded_pairs

◆ add_included_pair() [1/4]

template<typename Subclass>
Subclass & add_included_pair ( SimsSettings< Subclass > & sims,
char const * u,
char const * v )

◆ add_included_pair() [2/4]

template<typename Subclass, typename Int>
Subclass & add_included_pair ( SimsSettings< Subclass > & sims,
std::initializer_list< Int > const & u,
std::initializer_list< Int > const & v )

◆ add_included_pair() [3/4]

template<typename Subclass>
Subclass & add_included_pair ( SimsSettings< Subclass > & sims,
std::string_view u,
std::string_view v )

◆ add_included_pair() [4/4]

template<typename Subclass, typename Word>
Subclass & add_included_pair ( SimsSettings< Subclass > & sims,
Word const & u,
Word const & v )

This function can be used to add an included pair to sims using the objects themselves rather than using iterators.

Template Parameters
Subclassthe type of the first parameter.
Wordthe type of the second and third parameters.
Parameters
simsa Sims1 or Sims2 object.
uthe left hand side of the pair to add.
vthe right hand side of the pair to add.
Returns
A reference to sims.
Exceptions
LibsemigroupsExceptionif 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.
See also
included_pairs

◆ add_included_pair_no_checks() [1/4]

template<typename Subclass>
Subclass & add_included_pair_no_checks ( SimsSettings< Subclass > & sims,
char const * u,
char const * v )

See add_included_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_included_pair_no_checks() [2/4]

template<typename Subclass, typename Int>
Subclass & add_included_pair_no_checks ( SimsSettings< Subclass > & sims,
std::initializer_list< Int > const & u,
std::initializer_list< Int > const & v )

See add_included_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_included_pair_no_checks() [3/4]

template<typename Subclass>
Subclass & add_included_pair_no_checks ( SimsSettings< Subclass > & sims,
std::string_view u,
std::string_view v )

See add_included_pair_no_checks<Subclass, Word>(SimsSettings<Subclass>&, Word const&, Word const&) for details.

◆ add_included_pair_no_checks() [4/4]

template<typename Subclass, typename Word>
Subclass & add_included_pair_no_checks ( SimsSettings< Subclass > & sims,
Word const & u,
Word const & v )

This function can be used to add an included pair to sims using the objects themselves rather than using iterators.

Template Parameters
Subclassthe type of the first parameter.
Wordthe type of the second and third parameters.
Parameters
simsa Sims1 or Sims2 object.
uthe left hand side of the pair to add.
vthe right hand side of the pair to add.
Returns
A reference to sims.
Warning
This function does not check that the arguments are valid. In particular, it is assumed that every value pointed at by the iterators belongs to presentation().alphabet().
See also
included_pairs

◆ cbegin_right_generating_pairs()

template<typename Node>
const_rcgp_iterator cbegin_right_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to the first generating pair of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a right congruence on the monoid presented by p.

◆ cbegin_right_generating_pairs_no_checks()

template<typename Node>
const_rcgp_iterator cbegin_right_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to the first generating pair of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a right congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ cbegin_two_sided_generating_pairs()

template<typename Node>
const_cgp_iterator cbegin_two_sided_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to the first generating pair of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a two-sided congruence on the semigroup or monoid defined by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.

◆ cbegin_two_sided_generating_pairs_no_checks()

template<typename Node>
const_cgp_iterator cbegin_two_sided_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to the first generating pair of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a two-sided congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ cend_right_generating_pairs()

template<typename Node>
const_rcgp_iterator cend_right_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to one after the last generating pair of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a right congruence on the semigroup or monoid defined by p.

◆ cend_right_generating_pairs_no_checks()

template<typename Node>
const_rcgp_iterator cend_right_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to one after the last generating pair of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a right congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ cend_two_sided_generating_pairs()

template<typename Node>
const_cgp_iterator cend_two_sided_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to one after the last generating pair of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a two-sided congruence on the semigroup or monoid defined by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.

◆ cend_two_sided_generating_pairs_no_checks()

template<typename Node>
const_cgp_iterator cend_two_sided_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
an iterator pointing to one after the last generating pair of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a two-sided congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ dot_poset()

template<typename Iterator>
Dot dot_poset ( Iterator first,
Iterator last )
Returns
a Dot object.

◆ is_maximal_right_congruence()

template<typename Node>
bool is_maximal_right_congruence ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
true if the word graph wg defines a maximal right congruence on the semigroup or monoid defined by p and false otherwise.

◆ is_right_congruence()

template<typename Node>
bool is_right_congruence ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
true if the word graph wg defines a right congruence on the semigroup or monoid defined by p and false otherwise.

◆ is_right_congruence_of_dual()

template<typename Node>
bool is_right_congruence_of_dual ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )

This function checks if wg defines a right congruence over the dual of p. This is equivalent to checking if the word graph defines a left congruence in the semigroup or monoid defined by p.

Returns
true if the word graph wg defines a right congruence on the dual of the semigroup or monoid defined by p and false otherwise.

◆ is_two_sided_congruence()

template<typename Node>
bool is_two_sided_congruence ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
true if the word graph wg defines a two-sided congruence on the semigroup or monoid defined by p and false otherwise.

◆ is_two_sided_congruence_no_checks()

template<typename Node>
bool is_two_sided_congruence_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
true if the word graph wg defines a two-sided congruence on the semigroup or monoid defined by p and false otherwise.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a two-sided congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ poset()

template<typename Iterator>
BMat poset ( Iterator first,
Iterator last )

This function computes a boolean matrix whose (i, j)-th entry is 1 if and only if the congruence defined by the i-th word graph in [first, last) is a subrelation of the congruence defined by the j-th word graph in [first, last). If [first, last) is the collection of all congruences of a given semigroup or monoid, then this is equivalent to computing the congruence lattice of the semigroup or monoid.

Returns
a BMat object.
Warning
This function does no checks on its arguments whatsoever and assumes that every element in the range [first, last) is a complete word graph. If this is not the case, then bad things may happen.

◆ right_generating_pairs() [1/2]

template<typename Node>
rx::iterator_range< const_rcgp_iterator > right_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
the right congruence generating pairs of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a right congruence on the semigroup or monoid defined by p.

◆ right_generating_pairs() [2/2]

template<typename Node>
rx::iterator_range< const_rcgp_iterator > right_generating_pairs ( WordGraph< Node > const & wg)
Returns
the right congruence generating pairs of the right congruence defined by the word graph wg on the free monoid.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a right congruence on the free monoid.

◆ right_generating_pairs_no_checks() [1/2]

template<typename Node>
rx::iterator_range< const_rcgp_iterator > right_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
the right congruence generating pairs of the right congruence defined by the word graph wg on the semigroup or monoid defined by p.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a right congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ right_generating_pairs_no_checks() [2/2]

template<typename Node>
rx::iterator_range< const_rcgp_iterator > right_generating_pairs_no_checks ( WordGraph< Node > const & wg)
Returns
the right congruence generating pairs of the right congruence defined by the word graph wg on the free monoid.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a right congruence on the free monoid. If this is not the case, then bad things may happen.

◆ two_sided_generating_pairs() [1/2]

template<typename Node>
rx::iterator_range< const_cgp_iterator > two_sided_generating_pairs ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
the two-sided congruence generating pairs of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a two-sided congruence on the semigroup or monoid presented by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.

◆ two_sided_generating_pairs() [2/2]

template<typename Node>
rx::iterator_range< const_cgp_iterator > two_sided_generating_pairs ( WordGraph< Node > const & wg)
Returns
the two-sided congruence generating pairs of the two-sided congruence defined by the word graph wg on the free monoid.
Exceptions
LibsemigroupsExceptionif the argument wg does not define a two-sided congruence on the free monoid.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.

◆ two_sided_generating_pairs_no_checks() [1/2]

template<typename Node>
rx::iterator_range< const_cgp_iterator > two_sided_generating_pairs_no_checks ( Presentation< word_type > const & p,
WordGraph< Node > const & wg )
Returns
the two-sided congruence generating pairs of the two-sided congruence defined by the word graph wg on the semigroup or monoid defined by p.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a two-sided congruence on the semigroup or monoid defined by p. If this is not the case, then bad things may happen.

◆ two_sided_generating_pairs_no_checks() [2/2]

template<typename Node>
rx::iterator_range< const_cgp_iterator > two_sided_generating_pairs_no_checks ( WordGraph< Node > const & wg)
Returns
the two-sided congruence generating pairs of the two-sided congruence defined by the word graph wg on the free monoid.
Note
The generating pairs of a two-sided congruence \(\rho\) as a two-sided congruence differ from the generating pairs of \(\rho\) as a right congruence. This function returns the two-sided congruence generating pairs, not the right congruence generating pairs of a two-sided congruence.
Warning
This function does no checks on its arguments whatsoever and assumes that wg already defines a two-sided congruence on the free monoid. If this is not the case, then bad things may happen.