36 #include <permlib/transversal/orbit.h> 41 template<
class PERM,
class PDOMAIN>
44 virtual bool contains(
const PDOMAIN& val)
const;
56 template<
class Action>
57 void orbit(
const PDOMAIN& beta,
const std::list<typename PERM::ptr> &generators, Action a);
62 virtual const PDOMAIN&
element()
const;
67 virtual bool foundOrbitElement(
const PDOMAIN& alpha,
const PDOMAIN& alpha_p,
const typename PERM::ptr& p);
70 template <
class PERM,
class PDOMAIN>
72 typename std::list<PDOMAIN>::iterator it = std::lower_bound(m_orbitList.begin(), m_orbitList.end(), alpha_p);
74 m_orbitList.insert(it, alpha_p);
80 template <
class PERM,
class PDOMAIN>
82 return std::binary_search(m_orbitList.begin(), m_orbitList.end(), val);
85 template <
class PERM,
class PDOMAIN>
86 template<
class Action>
89 std::list<PDOMAIN> orbitList;
93 template <
class PERM,
class PDOMAIN>
95 return *(m_orbitList.begin());
100 #endif // -- ORBIT_LIST_H_ std::list< PDOMAIN > m_orbitList
orbit elements as set
Definition: orbit_list.h:65
void orbit(const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, Action a)
computes orbit of beta under generators
Definition: orbit_list.h:87
void orbit(const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, Action a, std::list< PDOMAIN > &orbitList)
computes orbit of beta under generators
Definition: orbit.h:89
virtual bool contains(const PDOMAIN &val) const
true iff there exists a transversal element mapping to val
Definition: orbit_list.h:81
abstract base class for orbit computation
Definition: orbit.h:44
size_t size() const
number of orbit elements
Definition: orbit_list.h:60
bool empty() const
true iff orbit is empty (i.e. contains no element at all)
Definition: orbit_list.h:47
stores an orbit in a sorted list
Definition: orbit_list.h:42
virtual const PDOMAIN & element() const
returns one element of the orbit
Definition: orbit_list.h:94
Definition: abstract_bsgs.h:49
virtual bool foundOrbitElement(const PDOMAIN &alpha, const PDOMAIN &alpha_p, const typename PERM::ptr &p)
callback when the orbit algorithm constructs an element alpha_p from alpha and p
Definition: orbit_list.h:71