| Element | the type of the elements. |
Public Types | |
| using | const_element_type |
| The type of const elements of a Konieczny instance. | |
| using | Degree = ::libsemigroups::Degree<element_type> |
| Adapter for the degree of an element. | |
| using | element_type = typename detail::BruidhinnTraits<Element>::value_type |
| The type of the elements of a Konieczny instance with const removed. | |
| using | ElementHash = ::libsemigroups::Hash<element_type> |
| Adapter for hashing. | |
| using | EqualTo = ::libsemigroups::EqualTo<element_type> |
| Adapter for testing equality. | |
| using | Lambda = ::libsemigroups::Lambda<element_type, lambda_value_type> |
| Adapter for the action on LambdaValue's. | |
| using | lambda_orb_type |
| using | lambda_value_type |
| using | Less = ::libsemigroups::Less<element_type> |
| Adapter for comparisons. | |
| using | One = ::libsemigroups::One<element_type> |
| Adapter for the identity element of the given type. | |
| using | Product = ::libsemigroups::Product<element_type> |
| Adapter for the product of two elements. | |
| using | Rank = ::libsemigroups::Rank<element_type, rank_state_type> |
| Adapter for calculating ranks. | |
| using | rank_state_type = typename ::libsemigroups::RankState<element_type> |
| Alias for RhoValue with template parameter element_type. | |
| using | Rho = ::libsemigroups::Rho<element_type, rho_value_type> |
| Adapter for the action on RhoValue's. | |
| using | rho_orb_type |
| using | rho_value_type |
| Alias for RhoValue with template parameter element_type. | |
| using | Swap = ::libsemigroups::Swap<element_type> |
| Adapter for swapping. | |
| using const_element_type |
| using Degree = ::libsemigroups::Degree<element_type> |
Defined in adapters.hpp.
Specialisations of this struct should be stateless trivially default constructible with a call operator of signature size_t operator()(Element const& x) const (possibly noexcept, inline and/or constexpr also).
The return value of the call operator ought to indicate the degree of a Element instance which may or may not depend on the parameter x. The degree of a permutation, for instance, would be the the number of points it acts on, the degree of a matrix is its dimension, and so on. This is used, for example, by SchreierSimsTraits in some member functions to determine whether it is known a priori that a permutation does not belong to the object, because it acts on too many points.
| Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
| using ElementHash = ::libsemigroups::Hash<element_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with a call operator of signature size_t operator()(Value const&) for use with, for example, std::unordered_map.
| Value | the type of objects to compare. |
The second template parameter exists for SFINAE.
| using EqualTo = ::libsemigroups::EqualTo<element_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with a call operator of signature bool operator()(Value const&, Value const&) (possibly noexcept, inline and/or constexpr also) for use with, for example, std::unordered_map.
| Value | the type of objects to compare. |
The second template parameter exists for SFINAE.
| using Lambda = ::libsemigroups::Lambda<element_type, lambda_value_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with an operator of signature void operator()(Point&, Element const&), which should modify the first argument in-place to contain the lambda value of the second argument. The kernel of the lambda function should be Green's \(\mathscr{L}\)-relation on the semigroup in question.
| Element | the type of elements. |
| Point | the type of the lambda points. |
The third template parameter exists for SFINAE.
| using lambda_orb_type |
The type of the orbit of the lambda values under ImageRightAction.
| using lambda_value_type |
Alias for LambdaValue with template parameter element_type.
| using Less = ::libsemigroups::Less<element_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with a call operator of signature bool operator()(Value const&, Value const&) (possibly noexcept, inline and/or constexpr also) which defines a linear order on the objects of type Value.
| Value | the type of objects to compare. |
The second template parameter exists for SFINAE.
| using One = ::libsemigroups::One<element_type> |
Specialisations of this struct should be stateless trivially default constructible with two call operator of signatures:
Element operator()(size_t n) const (possibly noexcept, inline and/or constexpr also) returning a multiplicative identity element for the category Element and with Degree<Element>()(x) equal to the parameter n. For example, if Element is a type of n x n matrices, then this should return the n x n identity matrix.Element operator()(T const&) const (possibly noexcept, inline and/or constexpr also). This could be implemented as: | Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
| using Product = ::libsemigroups::Product<element_type> |
Defined in adapters.hpp.
Specialisations of this struct should be stateless trivially default constructible with a call operator of signature void operator()(Element&, Element const&, Element const&, size_t = 0) (possibly noexcept, inline and/or constexpr also).
The call operator should change xy in-place to be the product of x and y. The 4th parameter is optional and it can be used as an index for static thread local storage, that might be required for forming the product of x and y. The purpose of the 1st parameter is to avoid repeated allocations of memory to hold temporary products that are discarded soon after they are created.
| Element | the type of the elements of a semigroup. |
The second template parameter exists for SFINAE.
| using Rank = ::libsemigroups::Rank<element_type, rank_state_type> |
Defined in adapters.hpp.
This type should be default constructible and a call operator of signature size_t operator()(Element const&) if no additional data is required to compute the rank, or a call operator of signature size_t operator()(State<Element> const&, Element const&) if additional data is required.
The call operator should return the rank of the element given as argument. This must satisfy the following properties:
| Element | the type of elements. |
| State | the type of the data required to compute ranks of Elements; defaults to RankState<Element>. |
The third template parameter exists for SFINAE.
| using Rho = ::libsemigroups::Rho<element_type, rho_value_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with an operator of signature void operator()(Point&, Element const&), which should modify the first argument in-place to contain the rho value of the second argument. The kernel of the rho function should be Green's \(\mathscr{R}\)-relation on the semigroup in question.
| Element | the type of elements. |
| Point | the type of the rho points. |
The third template parameter exists for SFINAE.
| using rho_orb_type |
The type of the orbit of the rho values under ImageLeftAction
| using rho_value_type |
| using Swap = ::libsemigroups::Swap<element_type> |
Defined in adapters.hpp.
This type should be a stateless trivially default constructible with a call operator of signature void operator()(Value&, Value&) (possibly noexcept, inline and/or constexpr also) which swaps its arguments.
| Value | the type of objects to swap. |
The second template parameter exists for SFINAE.