FroidurePin(std::vector<element_type> const *)

explicit libsemigroups::FroidurePin::FroidurePin(std::vector<element_type> const *gens)

Construct from generators.

This is the default constructor for a semigroup generated by a vector of generators. There can be duplicate generators and although they do not count as distinct elements, they do count as distinct generators. In other words, the generators of the semigroup are precisely (a copy of) gens in the same order they occur in gens.

The generators gens are copied by the constructor, and so it is the responsibility of the caller to delete gens.

Complexity

Constant.

Parameters

gens – the generators of the semigroup represented by this.

Throws

LibsemigroupsException – if gens is empty, or FroidurePin::Degree()(x) != FroidurePin::Degree()(y) for x, y in gens.