33 #ifndef GROUPINTERSECTIONPREDICATE_H_ 34 #define GROUPINTERSECTIONPREDICATE_H_ 36 #include <permlib/bsgs.h> 37 #include <permlib/predicate/subgroup_predicate.h> 39 #include <boost/foreach.hpp> 44 template <
class PERM,
class TRANS>
55 virtual bool childRestriction(
const PERM &h,
unsigned int i,
unsigned long beta_i)
const;
56 virtual unsigned int limit()
const;
66 template <
class PERM,
class TRANS>
70 BOOST_ASSERT(m_G.n == m_H.n);
71 BOOST_ASSERT(m_G.order() <= m_H.order());
74 template <
class PERM,
class TRANS>
76 return m_G.sifts(p) && m_H.sifts(p);
79 template <
class PERM,
class TRANS>
84 const unsigned int m = m_H.sift(h, siftee, 0, i+1);
88 template <
class PERM,
class TRANS>
95 #endif // -- GROUPINTERSECTIONPREDICATE_H_ predicate for the subgroup that arises as the intersection of two given groups
Definition: group_intersection_predicate.h:45
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: group_intersection_predicate.h:80
virtual bool operator()(const PERM &p) const
true iff group element fulfills predicate
Definition: group_intersection_predicate.h:75
abstract base class for subgroup (and coset) predicates
Definition: subgroup_predicate.h:45
Represents a base and strong generating set (BSGS)
Definition: bsgs.h:58
virtual unsigned int limit() const
limit of recursion depth in backtrack search
Definition: group_intersection_predicate.h:89
GroupIntersectionPredicate(const BSGS< PERM, TRANS > &g, const BSGS< PERM, TRANS > &h)
constructor
Definition: group_intersection_predicate.h:67
Definition: abstract_bsgs.h:49