36#include <permlib/transversal/orbit.h>
41template<
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);
70template <
class PERM,
class PDOMAIN>
72 typename std::list<PDOMAIN>::iterator it = std::lower_bound(
m_orbitList.begin(),
m_orbitList.end(), alpha_p);
80template <
class PERM,
class PDOMAIN>
85template <
class PERM,
class PDOMAIN>
89 std::list<PDOMAIN> orbitList;
93template <
class PERM,
class PDOMAIN>
stores an orbit in a sorted list
Definition orbit_list.h:42
virtual bool contains(const PDOMAIN &val) const
true iff there exists a transversal element mapping to val
Definition orbit_list.h:81
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
bool empty() const
true iff orbit is empty (i.e. contains no element at all)
Definition orbit_list.h:47
virtual const PDOMAIN & element() const
returns one element of the orbit
Definition orbit_list.h:94
size_t size() const
number of orbit elements
Definition orbit_list.h:60
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
abstract base class for orbit computation
Definition orbit.h:44
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