33#ifndef SYMMETRICGROUP_H_
34#define SYMMETRICGROUP_H_
36#include <permlib/bsgs_core.h>
37#include <permlib/transversal/symmetric_group_transversal.h>
39#include <boost/shared_ptr.hpp>
52struct SymmetricGroup :
public BSGSCore<PERM, SymmetricGroupTransversal<PERM> > {
72 BOOST_ASSERT(this->
n > 0);
74 for (
unsigned int i = 0; i < this->
n; ++i) {
77 if (i <
static_cast<unsigned int>(this->n-1)) {
78 boost::shared_ptr<PERM> gen(
new PERM(this->n));
79 gen->setTransposition(i, i+1);
88 const unsigned long& n2 = symGroup.n;
90 for (
unsigned int i = 0; i < n2; ++i) {
94 boost::shared_ptr<PERM> gen(
new PERM(n2));
95 gen->setTransposition(i, i+1);
111 BOOST_ASSERT(symGroup.n == this->n);
transversal of a symmetric group
Definition symmetric_group_transversal.h:45
core data of a base and strong generating set (BSGS)
Definition bsgs_core.h:42
dom_int n
Definition bsgs_core.h:61
representation of a symmetric group
Definition symmetric_group_transversal.h:41
virtual bool isSymmetricGroup() const
true if this structure represents a symmetric group
Definition symmetric_group.h:63
SymmetricGroup(unsigned int n)
constructs a symmetric group of degree n
Definition symmetric_group.h:69
SymmetricGroup & operator=(const SymmetricGroup< PERM > &symGroup)
assignment operator
Definition symmetric_group.h:109
SymmetricGroupTransversal< PERM > TRANS
transversal type used for the BSGS representation
Definition symmetric_group.h:61