33 #ifndef SETIMAGEPREDICATE_H_ 34 #define SETIMAGEPREDICATE_H_ 36 #include <permlib/predicate/subgroup_predicate.h> 38 #include <boost/foreach.hpp> 56 template<
class InputIterator>
57 SetImagePredicate(InputIterator deltaBegin, InputIterator deltaEnd, InputIterator gammaBegin, InputIterator gammaEnd);
60 virtual bool childRestriction(
const PERM &h,
unsigned int i,
unsigned long beta_i)
const;
61 virtual unsigned int limit()
const;
64 std::vector<unsigned long> m_delta;
65 std::vector<unsigned long> m_gamma;
73 template<
class InputIterator>
75 : m_delta(deltaBegin, deltaEnd), m_gamma(gammaBegin, gammaEnd)
77 BOOST_ASSERT(m_delta.size() == m_gamma.size());
83 BOOST_FOREACH(
unsigned long delta_i, m_delta) {
84 if (std::find(m_gamma.begin(), m_gamma.end(), p / delta_i) == m_gamma.end())
92 if (std::find(m_gamma.begin(), m_gamma.end(), h / beta_i) == m_gamma.end())
99 return m_delta.size();
104 #endif // -- SETIMAGEPREDICATE_H_ virtual bool operator()(const PERM &p) const
true iff group element fulfills predicate
Definition: set_image_predicate.h:82
SetImagePredicate(InputIterator deltaBegin, InputIterator deltaEnd, InputIterator gammaBegin, InputIterator gammaEnd)
constructor
Definition: set_image_predicate.h:74
coset-type predicate for group elements that map one set of points onto another given set of points ...
Definition: set_image_predicate.h:47
virtual unsigned int limit() const
limit of recursion depth in backtrack search
Definition: set_image_predicate.h:98
virtual bool childRestriction(const PERM &h, unsigned int i, unsigned long beta_i) const
checks if a given group element should not be followed in backtrack search
Definition: set_image_predicate.h:91
abstract base class for subgroup (and coset) predicates
Definition: subgroup_predicate.h:45
Definition: abstract_bsgs.h:49