Rank

using libsemigroups::KoniecznyTraits::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()(TElementType const&) if no additional data is required to compute the rank, or a call operator of signature `size_t operator()(TStateType<TElementType> const&, TElementType const&) if additional data is required.

The call operator should return the rank of the semigroup element given as argument. This must satisfy the following properties:

  • \(\operatorname{rank}\) should agree with the \(D\)-order on the semigroup; that is, if \(D_x \leq D_y\), then \(\operatorname{rank}(x) \leq \operatorname{rank}(y)\),

  • if \(D_x \leq D_y\) and \(\operatorname{rank}(x) = \operatorname{rank}(y)\), then \(D_x = D_y\).

Used by KoniecznyTraits.

Template Parameters
  • TElementType – the type of the semigroup elements.

  • TStateType – the type of the data required to compute ranks of TElementTypes; defaults to RankState<TElementType>.