33 #ifndef EXPLICITTRANSVERSAL_H_ 34 #define EXPLICITTRANSVERSAL_H_ 36 #include <permlib/transversal/transversal.h> 47 virtual PERM*
at(
unsigned long val)
const;
50 virtual void permute(
const PERM& g,
const PERM& gInv);
61 virtual void registerMove(
unsigned long from,
unsigned long to,
const typename PERM::ptr &p);
95 if (!transversal[from])
96 transversal[to] = boost::shared_ptr<PERM>(
new PERM(*p));
98 transversal[to] = boost::shared_ptr<PERM>(
new PERM(*transversal[from]));
99 (*transversal[to]) *= *p;
103 template <
class PERM>
114 template <
class PERM>
120 p = boost::shared_ptr<PERM>(
new PERM(*p));
127 #endif // -- EXPLICITTRANSVERSAL_H_ Transversal base class corresponding to a base element .
Definition: transversal.h:49
ExplicitTransversal< PERM > clone(const std::map< PERM *, typename PERM::ptr > &generatorChange) const
returns a clone of this transversal
Definition: explicit_transversal.h:115
Transversal class that stores all transversal elements explicitly.
Definition: explicit_transversal.h:42
virtual void permute(const PERM &g, const PERM &gInv)
updates transversal after group generators have been conjugated by g
Definition: explicit_transversal.h:104
ExplicitTransversal(unsigned int n)
constructor
Definition: explicit_transversal.h:72
virtual void registerMove(unsigned long from, unsigned long to, const typename PERM::ptr &p)
stores that 'p' maps 'from' onto 'to'
Definition: explicit_transversal.h:90
virtual PERM * at(unsigned long val) const
returns a transversal element such that equals val
Definition: explicit_transversal.h:83
unsigned int n() const
size of the set the group is working on
Definition: transversal.h:98
virtual bool trivialByDefinition(const PERM &x, unsigned long to) const
true if Schreier generator constructed from x and the transversal element related to "to" is trivial ...
Definition: explicit_transversal.h:77
virtual void permute(const PERM &g, const PERM &gInv)
updates transversal after group generators have been conjugated by g
Definition: transversal.h:221
static const unsigned int m_statMaxDepth
maximal depth of "tree" structure representing the transversal; identical to 1 for explicit transvers...
Definition: explicit_transversal.h:59
std::vector< boost::shared_ptr< PERM > > m_transversal
transversal elements
Definition: transversal.h:154
Definition: abstract_bsgs.h:49
virtual void registerMove(unsigned long from, unsigned long to, const typename PERM::ptr &p)
stores that 'p' maps 'from' onto 'to'
Definition: transversal.h:208