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

This page contains documentation related to converting libsemigroups objects into ToddCoxeter instances.

See also
The `to` function for an overview of possible conversions between libsemigroups types.

Functions

template<template< typename... > typename Thing, typename Word, typename Rewriter, typename ReductionOrder>
auto to (congruence_kind knd, KnuthBendix< Word, Rewriter, ReductionOrder > &kb) -> std::enable_if_t< std::is_same_v< ToddCoxeter< Word >, Thing< Word > >, ToddCoxeter< Word > >
 Convert a KnuthBendix object to a ToddCoxeter object.
 
template<typename Result, typename Node>
auto to (congruence_knd knd, FroidurePinBase &fpb, WordGraph< Node > const &wg) -> std::enable_if_t< std::is_same_v< ToddCoxeter< typename Result::native_word_type >, Result >, Result >
 Convert a FroidurePin object to a ToddCoxeter object.
 

Function Documentation

◆ to() [1/2]

template<template< typename... > typename Thing, typename Word, typename Rewriter, typename ReductionOrder>
auto to ( congruence_kind knd,
KnuthBendix< Word, Rewriter, ReductionOrder > & kb ) -> std::enable_if_t< std::is_same_v< ToddCoxeter< Word >, Thing< Word > >, ToddCoxeter< Word > >

Defined in to-todd-coxeter.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.

This function converts the KnuthBendix object kb into a ToddCoxeter object using the right Cayley graph of the semigroup represented by kb.

Template Parameters
Thingused for SFINAE, must be ToddCoxeter.
Wordthe type of the words used in relations in kb.
Rewriterthe type of rewriter used by kb.
ReductionOrderthe type of reduction ordering used by kb.
Parameters
kndthe kind of the congruence being constructed.
kbthe KnuthBendix object being converted.
Returns
A ToddCoxeter object representing the trivial congruence over the semigroup defined by kb.
Exceptions
LibsemigroupsExceptionif kb.kind() is not twosided.
LibsemigroupsExceptionif kb.number_of_classes() is not finite. Use ToddCoxeter(knd, kb.presentation()) in this case.

◆ to() [2/2]

template<typename Result, typename Node>
auto to ( congruence_knd knd,
FroidurePinBase & fpb,
WordGraph< Node > const & wg ) -> std::enable_if_t< std::is_same_v< ToddCoxeter< typename Result::native_word_type >, Result >, Result >

Defined in to-todd-coxeter.hpp

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

to<ToddCoxeter<Word>>(knd, fpb, wg);

This function converts the FroidurePin object fpb into a ToddCoxeter object using the WordGraph wg (which should be either the left_cayley_graph or the right_cayley_graph of fpb).

Template Parameters
Resultused for SFINAE, the return type of this function, must be ToddCoxeter<Word> for some type Word.
Nodethe type of the nodes in the WordGraph wg.
Parameters
kndthe kind of the congruence being constructed.
fpbthe FroidurePin instance to be converted.
wgthe left or right Cayley graph of fpb.
Returns
A ToddCoxeter object representing the trivial congruence over the semigroup defined by fpb.
Exceptions
LibsemigroupsExceptionif wg is not the left_cayley_graph or the right_cayley_graph of fpb.