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>();
virtual AbstractGroupType type() const =0
implementation type of this abstract class
virtual ~AbstractPermutationGroup()
destructor
Definition: abstract_permutation_group.h:57
virtual bool isLexMinSet(const std::vector< dom_int > &setIndices, const std::vector< dom_int > &rankIndices) const =0
checks whether a set is lexicographically minimal with respect to a given ordering of indices ...
std::list< std::set< dom_int > > OrbitList
typedef for a list of orbits, each of which is a set
Definition: abstract_permutation_group.h:74
Integer order() const
order of the group
Definition: abstract_permutation_group.h:101
virtual void transversalSizes(std::vector< unsigned long > &sizes) const =0
fills a list with sizes of transversals along a stabilizer chain
virtual AbstractPermutationGroup * setStabilizer(const std::vector< dom_int > &s) const =0
computes the stabilizer of a set
virtual OrbitList * orbits() const =0
computes all orbits
A high level interface for a permutation group.
Definition: abstract_permutation_group.h:54
Definition: abstract_bsgs.h:49