19#ifndef LIBSEMIGROUPS_TO_PRESENTATION_HPP_
20#define LIBSEMIGROUPS_TO_PRESENTATION_HPP_
28#include "froidure-pin-base.hpp"
29#include "knuth-bendix-class.hpp"
30#include "presentation.hpp"
31#include "word-range.hpp"
96 template <
typename Result>
98 std::is_same_v<Presentation<typename Result::word_type>, Result>,
144 template <
typename Result,
147 typename ReductionOrder>
148 auto to(KnuthBendix<WordIn, Rewriter, ReductionOrder>& kb)
150 std::is_same_v<Presentation<typename Result::word_type>, Result>,
187 template <
template <
typename...>
typename Thing,
190 typename ReductionOrder>
191 auto to(KnuthBendix<Word, Rewriter, ReductionOrder>& kb)
226 template <
typename Result,
typename Word>
227 auto to(Kambites<Word>& k) -> std::enable_if_t<
228 std::is_same_v<Presentation<typename Result::word_type>, Result>
229 && !std::is_same_v<typename Result::word_type, Word>,
231 return v4::to<Result>(k.presentation());
256 template <
typename Result,
typename Word>
257 auto to(Kambites<Word>& k) -> std::enable_if_t<
258 std::is_same_v<Presentation<typename Result::word_type>, Result>
259 && std::is_same_v<typename Result::word_type, Word>,
261 return k.presentation();
293 template <
typename Result,
typename Word>
294 auto to(ToddCoxeter<Word>& tc) -> std::enable_if_t<
295 std::is_same_v<Presentation<typename Result::word_type>, Result>
296 && !std::is_same_v<typename Result::word_type, Word>,
298 return v4::to<Result>(tc.presentation());
323 template <
typename Result,
typename Word>
324 auto to(ToddCoxeter<Word>& tc) -> std::enable_if_t<
325 std::is_same_v<Presentation<typename Result::word_type>, Result>
326 && std::is_same_v<typename Result::word_type, Word>,
328 return tc.presentation();
360 template <
typename Result,
typename Word>
361 auto to(Congruence<Word>& c) -> std::enable_if_t<
362 std::is_same_v<Presentation<typename Result::word_type>, Result>
363 && !std::is_same_v<typename Result::word_type, Word>,
365 return v4::to<Result>(c.presentation());
390 template <
typename Result,
typename Word>
391 auto to(Congruence<Word>& c) -> std::enable_if_t<
392 std::is_same_v<Presentation<typename Result::word_type>, Result>
393 && std::is_same_v<typename Result::word_type, Word>,
395 return c.presentation();
426 template <
typename Result,
typename PresentationType>
428 std::is_same_v<Presentation<typename Result::word_type>, Result>,
430 return v4::to<Result>(s.presentation());
475 template <
typename Result,
typename Word,
typename Func>
478 std::is_same_v<Presentation<typename Result::word_type>, Result>,
480 return v4::to<Result>(p, f);
528 template <
typename Result,
typename Word,
typename Func>
531 std::is_same_v<InversePresentation<typename Result::word_type>, Result>,
533 return v4::to<Result>(ip, f);
575 template <
typename Result,
typename Word>
577 std::is_same_v<Presentation<typename Result::word_type>, Result>
578 && !std::is_same_v<typename Result::word_type, Word>,
580 return v4::to<Result>(p);
613 template <
typename Result,
typename Word>
615 -> std::enable_if_t<std::is_same_v<Presentation<Word>, Result>,
617 return v4::to<Result>(p);
661 template <
typename Result,
typename Word>
664 std::is_same_v<InversePresentation<typename Result::word_type>, Result>
665 && !std::is_same_v<Word, typename Result::word_type>,
667 return v4::to<Result>(ip);
701 template <
typename Result,
typename Word>
703 -> std::enable_if_t<std::is_same_v<InversePresentation<Word>, Result>,
705 return v4::to<Result>(ip);
746 template <
template <
typename...>
typename Thing,
typename Word>
748 std::is_same_v<InversePresentation<Word>, Thing<Word>>,
750 return v4::to<InversePresentation>(p);
754#include "to-presentation.tpp"
Base class for FroidurePin containing non-element specific data and member functions.
Definition froidure-pin-base.hpp:67
For an implementation of inverse presentations for semigroups or monoids.
Definition presentation.hpp:3220
For an implementation of presentations for semigroups or monoids.
Definition presentation.hpp:103
For constructing the word graph of left factors of a word in an f.p. semigroup.
Definition stephen.hpp:91
Namespace for everything in the libsemigroups library.
Definition action.hpp:44
auto to(detail::KnuthBendixImpl< Rewriter, ReductionOrder > &kb) -> std::enable_if_t< std::is_same_v< Presentation< typename Result::word_type >, Result >, Result >
No doc.