libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
to<FroidurePin>

This page contains documentation related to converting a libsemigroups object into a FroidurePin instance.

See also
The `to` function for an overview of possible conversions between 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.
 

Function Documentation

◆ to() [1/7]

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 > >

Defined in to-froidure-pin.hpp

Despite the hideous signature, this function should be invoked as follows:

auto to(detail::KnuthBendixImpl< Rewriter, ReductionOrder > &kb) -> std::enable_if_t< std::is_same_v< Presentation< typename Result::word_type >, Result >, Result >
No doc.

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.

Template Parameters
Thingused for SFINAE should be FroidurePin.
Wordthe type of the words in relations in cong.
Parameters
congthe Congruence instance to convert.
Returns
A FroidurePin instance.
Exceptions
LibsemigroupsExceptionif cong.kind() is not twosided.

◆ to() [2/7]

template<typename Result, typename Rewriter, typename ReductionOrder>
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.

Template Parameters
Thingused for SFINAE should be FroidurePin.
Rewriterthe second template parameter for KnuthBendix.
ReductionOrderthe third template parameter for KnuthBendix.
Parameters
kbthe KnuthBendix instance to convert.
Returns
A FroidurePin instance.
Exceptions
LibsemigroupsExceptionif kb.kind() is not twosided.

◆ to() [3/7]

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 > >

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.

Template Parameters
Thingused for SFINAE should be FroidurePin.
Parameters
tcthe ToddCoxeter instance to convert.
Returns
A FroidurePin instance.
Exceptions
LibsemigroupsExceptionif kb.kind() is not twosided.
Warning
The returned FroidurePin instance is always infinite, and so any calls to any member functions that that trigger a full enumeration will never terminate (or they will when your computer kills the process because it has run out of memory).

◆ to() [4/7]

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 > > >

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.

Template Parameters
Thingused for SFINAE should be FroidurePin.
Wordthe type of the words in relations in k.
Parameters
kthe Kambites instance to convert.
Returns
A FroidurePin instance.
Exceptions
LibsemigroupsExceptionif the Kambites::small_overlap_class is not at least \(4\).
Warning
The returned FroidurePin instance is always infinite, and so any calls to any member functions that that trigger a full enumeration will never terminate (or they will when your computer kills the process because it has run out of memory).

◆ to() [5/7]

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 > >

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.

Template Parameters
Thingused for SFINAE should be FroidurePin.
Elementthe element type of the Konieczny object.
Traitsthe traits type of the Konieczny object.
Parameters
kthe Konieczny instance to convert.
Returns
A FroidurePin instance.

◆ to() [6/7]

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>

Defined in to-froidure-pin.hpp

Calls to<FroidurePin>(wg, 0, wg.number_of_nodes()).

See to_froidure_pin.

◆ to() [7/7]

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 >

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.

Template Parameters
Resultthe return type of the function.
Nodethe type of the nodes of the word graph wg.
Parameters
wgthe WordGraph being used to construct the FroidurePin object.
firstthe value of \(a\) in the preceding discussion.
lastthe value of \(b\) in the preceding discussion.
Returns
The constructed FroidurePin object, a value of type Result.
Exceptions
LibsemigroupsExceptionif first > last.
LibsemigroupsExceptionif first or last exceeds number_of_nodes.
LibsemigroupsExceptionif 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\).