36 #include <boost/cstdint.hpp>
37 #include <boost/foreach.hpp>
38 #include <boost/dynamic_bitset.hpp>
40 #include <permlib/common.h>
42 #ifndef ABSTRACT_PERMUTATION_GROUP_H_
43 #define ABSTRACT_PERMUTATION_GROUP_H_
48 enum AbstractGroupType {
50 AGT_SymmetricProduct = 2
60 template<
typename Integer>
61 Integer
order()
const;
64 boost::uint64_t
order()
const;
90 virtual bool isLexMinSet(
const std::vector<dom_int>& setIndices,
const std::vector<dom_int>& rankIndices)
const = 0;
93 virtual AbstractGroupType
type()
const = 0;
100 template <
typename Integer>
102 Integer orderValue(1);
103 std::vector<unsigned long> sizes;
105 BOOST_FOREACH(
const unsigned long &s, sizes) {
112 return order<boost::uint64_t>();