![]() |
libsemigroups
v3.0.0
C++ library for semigroups and monoids
|
This page contains documentation related to converting a libsemigroups
object into a FroidurePin instance.
libsemigroups
types. Functions | |
template<template< typename... > typename Thing, typename Word> | |
auto | to (Congruence< Word > &cong) -> std::enable_if_t< std::is_same_v< Thing< int >, FroidurePin< int > >, std::unique_ptr< FroidurePinBase > > |
Convert a Congruence object to a FroidurePin object. | |
template<typename Result, typename Rewriter, typename ReductionOrder> | |
auto | to (detail::KnuthBendixImpl< Rewriter, ReductionOrder > &kb) -> std::enable_if_t< std::is_same_v< Presentation< typename Result::word_type >, Result >, Result > |
No doc. | |
template<template< typename... > typename Thing> | |
auto | to (detail::ToddCoxeterImpl &tc) -> std::enable_if_t< std::is_same_v< Thing< detail::TCE >, FroidurePin< detail::TCE > >, FroidurePin< detail::TCE > > |
Convert a ToddCoxeter object to a FroidurePin object. | |
template<template< typename... > typename Thing, typename Word> | |
auto | to (Kambites< Word > &k) -> std::enable_if_t< std::is_same_v< Thing< detail::KE< Word > >, FroidurePin< detail::KE< Word > > >, FroidurePin< detail::KE< Word > > > |
Convert a Kambites object to a FroidurePin object. | |
template<template< typename... > typename Thing, typename Element, typename Traits> | |
auto | to (Konieczny< Element, Traits > const &k) -> std::enable_if_t< std::is_same_v< Thing< int >, FroidurePin< int > >, FroidurePin< Element > > |
Convert a Konieczny object to a FroidurePin object. | |
template<typename Result, typename Node> | |
auto | to (WordGraph< Node > const &wg) -> std::enable_if_t< std::is_same_v< FroidurePin< typename Result::element_type >, Result >, Result > |
Convert a WordGraph object to a FroidurePin object. | |
template<typename Result, typename Node> | |
auto | to (WordGraph< Node > const &wg, size_t first, size_t last) -> std::enable_if_t< std::is_same_v< FroidurePin< typename Result::element_type >, Result >, Result > |
Convert a WordGraph object to a FroidurePin object. | |
auto to | ( | Congruence< Word > & | cong | ) | -> std::enable_if_t< std::is_same_v< Thing< int >, FroidurePin< int > >, std::unique_ptr< FroidurePinBase > > |
Defined in to-froidure-pin.hpp
Despite the hideous signature, this function should be invoked as follows:
where cong
is a Congruence object. The returned FroidurePin object is isomorphic to the quotient of the underlying semigroup or monoid of cong
by the congruence represented by cong
.
Thing | used for SFINAE should be FroidurePin. |
Word | the type of the words in relations in cong . |
cong | the Congruence instance to convert. |
LibsemigroupsException | if cong.kind() is not twosided. |
auto to | ( | detail::KnuthBendixImpl< Rewriter, ReductionOrder > & | kb | ) | -> std::enable_if_t< std::is_same_v< Thing< int >, FroidurePin< int > >, FroidurePin< detail::KBE< detail::KnuthBendixImpl< Rewriter, ReductionOrder > > > > |
Convert a KnuthBendix object to a FroidurePin object.
Defined in to-froidure-pin.hpp
Despite the hideous signature, this function should be invoked as follows:
where kb
is a KnuthBendix instance. The returned FroidurePin object is isomorphic to the quotient semigroup or monoid represented by kb
.
Thing | used for SFINAE should be FroidurePin. |
Rewriter | the second template parameter for KnuthBendix. |
ReductionOrder | the third template parameter for KnuthBendix. |
kb | the KnuthBendix instance to convert. |
LibsemigroupsException | if kb.kind() is not twosided. |
auto to | ( | detail::ToddCoxeterImpl & | tc | ) | -> std::enable_if_t< std::is_same_v< Thing< detail::TCE >, FroidurePin< detail::TCE > >, FroidurePin< detail::TCE > > |
Defined in to-froidure-pin.hpp
Despite the hideous signature, this function should be invoked as follows:
where kb
is a ToddCoxeter instance. The returned FroidurePin object is isomorphic to the quotient semigroup or monoid represented by kb
.
Thing | used for SFINAE should be FroidurePin. |
tc | the ToddCoxeter instance to convert. |
LibsemigroupsException | if kb.kind() is not twosided. |
auto to | ( | Kambites< Word > & | k | ) | -> std::enable_if_t< std::is_same_v< Thing< detail::KE< Word > >, FroidurePin< detail::KE< Word > > >, FroidurePin< detail::KE< Word > > > |
Defined in to-froidure-pin.hpp
Despite the hideous signature, this function should be invoked as follows:
where k
is a Kambites instance. The returned FroidurePin object is isomorphic to the quotient semigroup or monoid represented by k
.
Thing | used for SFINAE should be FroidurePin. |
Word | the type of the words in relations in k . |
k | the Kambites instance to convert. |
LibsemigroupsException | if the Kambites::small_overlap_class is not at least \(4\). |
auto to | ( | Konieczny< Element, Traits > const & | k | ) | -> std::enable_if_t< std::is_same_v< Thing< int >, FroidurePin< int > >, FroidurePin< Element > > |
Defined in to-froidure-pin.hpp
Despite the hideous signature, this function should be invoked as follows:
where k
is a Konieczny instance. The returned FroidurePin object is isomorphic to the semigroup or monoid represented by k
.
Thing | used for SFINAE should be FroidurePin. |
Element | the element type of the Konieczny object. |
Traits | the traits type of the Konieczny object. |
k | the Konieczny instance to convert. |
auto to | ( | WordGraph< Node > const & | wg | ) | -> std::enable_if_t< std::is_same_v<FroidurePin<typename Result::element_type>, Result>, Result> |
Defined in to-froidure-pin.hpp
Calls to<FroidurePin>(wg, 0, wg.number_of_nodes())
.
See to_froidure_pin.
auto to | ( | WordGraph< Node > const & | wg, |
size_t | first, | ||
size_t | last ) -> std::enable_if_t< std::is_same_v< FroidurePin< typename Result::element_type >, Result >, Result > |
Defined in to-froidure-pin.hpp
This function converts a WordGraph object to a FroidurePin object. Unlike the other functions on this page, this function should be invoked as follows (for example):
In other words, the type of the elements of the FroidurePin object should be explicitly specified. This type must implement operator[]
and each label n
in the WordGraph will correspond to a generator f
in the output FroidurePin such that f[s] = t
whenever there is an edge from s
to t
in wg
labelled n
.
More precisely, if \(a\) and \(b\) are the parameters first
and last
, respectively, \(m\) is the number of nodes in the WordGraph wg
, \(0 \leq a, b< m\), and \(n\) is an edge label, then we define \(f: \{a, \ldots, b - 1\} \to \{0, \ldots, m - 1\}\) so that \((x)f\) equals the target of the edge starting at node \(x\) with label \(n\). In this way, every edge label in a WordGraph corresponds to a transformation of the nodes of the digraph. If \(\{a, \ldots, b - 1\}f \subseteq \{a, \ldots, b - 1\}\), then \(f\) is a transformation in the sense of Transf. Assuming that for every edge label of the WordGraph the corresponding \(f\) satisfies \(\{a, \ldots, b - 1\}f \subseteq \{a, \ldots, b - 1\}\), then this function returns the FroidurePin object corresponding to the semigroup or monoid generated by the set of all such transformations.
Result | the return type of the function. |
Node | the type of the nodes of the word graph wg . |
wg | the WordGraph being used to construct the FroidurePin object. |
first | the value of \(a\) in the preceding discussion. |
last | the value of \(b\) in the preceding discussion. |
Result
.LibsemigroupsException | if first > last . |
LibsemigroupsException | if first or last exceeds number_of_nodes. |
LibsemigroupsException | if throw_if_image_value_out_of_range(Transf<N, Scalar> const&) throws for any of the constructed generators. This can happen if, for example, the WordGraph is not complete (i.e. there exists an edge label and node for which there is no edge with the given label and given source) or if there is an edge label such that \(\{a, \ldots, b - 1\}f \not\subseteq \{a, \ldots, b - 1\}\) for the corresponding \(f\). |