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"
98 template <
typename Result>
100 std::is_same_v<Presentation<typename Result::word_type>, Result>,
146 template <
typename Result,
149 typename ReductionOrder>
150 auto to(KnuthBendix<WordIn, Rewriter, ReductionOrder>& kb)
152 std::is_same_v<Presentation<typename Result::word_type>, Result>,
189#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
193 template <
template <
typename...>
typename Thing,
195 typename Rewriter
typename ReductionOrder>
196 auto to(KnutBendix<Word, Rewriter, ReductionOrder>& kb)
200 template <
template <
typename...>
typename Thing,
203 typename ReductionOrder>
204 auto to(KnuthBendix<Word, Rewriter, ReductionOrder>& kb)
246#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
250 template <
typename Result,
typename Word>
251 auto to(Kambtes<Word>& k) -> std::enable_if_t<
252 std::is_same_v<Presentation<typename Result::word_type>, Result>
253 && !std::is_same_v<typename Result::word_type, Word>,
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 v4::to<Result>(k.presentation());
266 template <
typename Result,
typename Word>
267 auto to(Kambites<Word>& k) -> std::enable_if_t<
268 std::is_same_v<Presentation<typename Result::word_type>, Result>
269 && std::is_same_v<typename Result::word_type, Word>,
271 return k.presentation();
310#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
314 template <
typename Result,
typename Word>
315 auto to(ToddCoxter<Word>& tc) -> std::enable_if_t<
316 std::is_same_v<Presentation<typename Result::word_type>, Result>
317 && !std::is_same_v<typename Result::word_type, Word>,
320 template <
typename Result,
typename Word>
321 auto to(ToddCoxeter<Word>& tc) -> std::enable_if_t<
322 std::is_same_v<Presentation<typename Result::word_type>, Result>
323 && !std::is_same_v<typename Result::word_type, Word>,
325 return v4::to<Result>(tc.presentation());
330 template <
typename Result,
typename Word>
332 std::is_same_v<Presentation<typename Result::word_type>, Result>
333 && std::is_same_v<typename Result::word_type, Word>,
335 return tc.presentation();
374#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
378 template <
typename Result,
typename Word>
379 auto to(Congrence<Word>& c) -> std::enable_if_t<
380 std::is_same_v<Presentation<typename Result::word_type>, Result>
381 && !std::is_same_v<typename Result::word_type, Word>,
384 template <
typename Result,
typename Word>
385 auto to(Congruence<Word>& c) -> std::enable_if_t<
386 std::is_same_v<Presentation<typename Result::word_type>, Result>
387 && !std::is_same_v<typename Result::word_type, Word>,
389 return v4::to<Result>(c.presentation());
394 template <
typename Result,
typename Word>
396 std::is_same_v<Presentation<typename Result::word_type>, Result>
397 && std::is_same_v<typename Result::word_type, Word>,
399 return c.presentation();
431 template <
typename Result,
typename PresentationType>
433 std::is_same_v<Presentation<typename Result::word_type>, Result>,
435 return v4::to<Result>(s.presentation());
480 template <
typename Result,
typename Word,
typename Func>
483 std::is_same_v<Presentation<typename Result::word_type>, Result>,
485 return v4::to<Result>(p, f);
533 template <
typename Result,
typename Word,
typename Func>
536 std::is_same_v<InversePresentation<typename Result::word_type>, Result>,
538 return v4::to<Result>(ip, f);
590 template <
typename Result,
typename Word>
592 std::is_same_v<Presentation<typename Result::word_type>, Result>
593 && !std::is_same_v<typename Result::word_type, Word>,
595 return v4::to<Result>(p);
600 template <
typename Result,
typename Word>
602 -> std::enable_if_t<std::is_same_v<Presentation<Word>, Result>,
604 return v4::to<Result>(p);
658 template <
typename Result,
typename Word>
661 std::is_same_v<InversePresentation<typename Result::word_type>, Result>
662 && !std::is_same_v<Word, typename Result::word_type>,
664 return v4::to<Result>(ip);
669 template <
typename Result,
typename Word>
670 [[deprecated]]
auto to(InversePresentation<Word>
const& ip)
noexcept
671 -> std::enable_if_t<std::is_same_v<InversePresentation<Word>, Result>,
673 return v4::to<Result>(ip);
714#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
717 template <
template <
typename...>
typename Thing,
typename Word>
719 std::is_same_v<InversePresentation<Word>, Thing<Word>>,
722 template <
template <
typename...>
typename Thing,
typename Word>
724 std::is_same_v<InversePresentation<Word>, Thing<Word>>,
726 return v4::to<InversePresentation>(p);
731#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:2735
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
Congruence(congruence_kind, Presentation< Word > const &) -> Congruence< Word >
Deduction guide.
Presentation(Presentation< Word > const &) -> Presentation< Word >
Deduction guide.
ToddCoxeter(congruence_kind, Presentation< Word > const &) -> ToddCoxeter< Word >
Deduction guide.
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.