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_