FroidurePin¶
-
template<typename
TElementType
, typenameTTraits
= FroidurePinTraits<TElementType>>
classFroidurePin
: private libsemigroups::detail::BruidhinnTraits<TElementType>, public libsemigroups::FroidurePinBase¶ Defined in
froidure-pin.hpp
.The class template FroidurePin implements the Froidure-Pin algorithm as described in the article “Algorithms for computing finite semigroups” by Veronique Froidure and Jean-Eric Pin; see this for more details.
A FroidurePin instance is defined by a generating set, and the main member function is FroidurePin::run, which implements the Froidure-Pin Algorithm. If FroidurePin::run is invoked and FroidurePin::finished returns
true
, then the size, the left and right Cayley graphs are determined, and a confluent terminating presentation for the semigroup is known.- See
- Example
template <> struct Complexity<int> { constexpr size_t operator()(int) const noexcept { return 0; } }; template <> struct Degree<int> { constexpr size_t operator()(int) const noexcept { return 0; } }; template <> struct IncreaseDegree<int> { int operator()(int x) const noexcept { return x; } }; template <> struct One<int> { constexpr int operator()(int) const noexcept { return 1; } }; template <> struct Product<int> { void operator()(int& xy, int x, int y, size_t = 0) const noexcept { xy = x * y; } }; FroidurePin<int> S({2}); S.size(); // 32 S.nr_idempotents() // 1 *S.cbegin(); // 2 FroidurePin<uint8_t> T({2, 3}); T.size() // 130 T.nr_idempotents() // 2 *T.cbegin_idempotents(); // 0 *T.cbegin_idempotents() + 1; // 1
Public types¶
Stateless public types¶
Constructors¶
Settings¶
Reporting¶
Initialisation¶
Enumerating¶
Cayley graphs¶
Factorisation and relations¶
- current_max_word_length
- current_nr_rules
- equal_to
- factorisation(element_index_type)
- factorisation(word_type&, element_index_type)
- length_const
- length_non_const
- letter_to_pos
- minimal_factorisation(element_index_type)
- minimal_factorisation(word_type&, element_index_type)
- next_relation
- nr_rules
- reset_next_relation
- word_to_element
- word_to_pos