SchreierSims

template<size_t N, typename TPointType = typename SmallestInteger<N>::type, typename TElementType = typename NewPermHelper<N>::type, typename TTraits = SchreierSimsTraits<N, TPointType, TElementType>>
class SchreierSims : private libsemigroups::detail::BruidhinnTraits<typename NewPermHelper<N>::type>

Defined in schreier-sims.hpp.

This class implements a deterministic version of the Schreier-Sims algorithm acting on a relatively small number of points (< 1000).

See

SchreierSimsTraits.

Example

SchreierSims<5> S;
using Perm = decltype(S)::element_type;
S.add_generator(Perm({1, 0, 2, 3, 4}));
S.add_generator(Perm({1, 2, 3, 4, 0}));
S.size(); // 120

tparam N

the largest point not fixed by the permutations in the permutation group to be represented by this.

tparam TPointType

the type of the points acted on (default: SmallestInteger<N>::type).

tparam TElementType

the type of the group elements acting on TPointType (default: NewPermHelper<N>::type)

tparam TTraits

the type of traits object (default: SchreierSimsTraits<N, TPointType, TElementType>)

Stateless type aliases