CongruenceByPairsHelper(congruence_type, T const&)

template<typename T>
inline libsemigroups::CongruenceByPairsHelper::CongruenceByPairsHelper(congruence_type type, T const &S)

Construct a CongruenceByPairsHelper over the FroidurePin instance fp representing a left/right/2-sided congruence according to type.

Complexity

Constant.

Warning

The parameter T& S is copied, this might be expensive, use a std::shared_ptr to avoid the copy!

Template Parameters

T – a class derived from FroidurePinBase. It is required that T::element_type is the same as CongruenceByPairsHelper::element_type (which is the same as the template parameter element_type).

Parameters
  • type – whether the congruence is left, right, or 2-sided

  • S – a reference to the semigroup over which the congruence is defined.

Throws

LibsemigroupsException – if type and the template parameter T are incompatible. Currently, this is when type is not congruence_type::right and T::element_type is TCE.