57 size_t rank()
const {
return d_block.rank(); }
58 size_t size()
const {
return d_block.size(); }
62 {
return d_lengthLess[l]; }
66 {
return d_block.cayley(s,z); }
69 {
return d_block.descentValue(s,z); }
71 {
return d_block.descent(y); }
74 {
return d_descent[z]; }
76 {
return d_goodAscent[z]; }
93 {
return d_prim_index[descent_set.to_ulong()][x]; }
97 {
return d_prim_index[
descentSet(y).to_ulong()][y]; }
Definition: klsupport.h:31
std::pair< BlockElt, BlockElt > BlockEltPair
Definition: Atlas.h:369
size_t length(BlockElt z) const
Definition: klsupport.h:60
BitSet< constants::RANK_MAX > RankFlags
Definition: Atlas.h:60
const RankFlags & descentSet(BlockElt z) const
Definition: klsupport.h:73
Definition: klsupport.h:33
const Block_base & d_block
Definition: klsupport.h:38
Definition: klsupport.h:33
void filter_primitive(BitMap &, const RankFlags &) const
Definition: klsupport.cpp:108
Definition: klsupport.h:34
unsigned int prim_index(BlockElt x, const RankFlags &descent_set) const
Definition: klsupport.h:92
std::vector< BitMap > d_primset
Definition: klsupport.h:43
BlockElt lengthLess(size_t l) const
Definition: klsupport.h:61
BitSet< NumStates > d_state
Definition: klsupport.h:36
const DescentStatus & descent(BlockElt y) const
Definition: klsupport.h:70
std::vector< BitMap > d_downset
Definition: klsupport.h:42
unsigned int ascent_descent(BlockElt x, BlockElt y) const
Definition: klsupport.h:79
DescentStatus::Value descentValue(size_t s, BlockElt z) const
Definition: klsupport.h:68
std::vector< RankFlags > d_descent
Definition: klsupport.h:40
void fillDownsets()
Fills in the |downset|, |primset|, |descents| and |goodAscent| bitmap/set vectors. Here |downset| and |primset| are vectors indexed by a simple reflection |s|, and giving a bitmap over all block elements, while |descents| and |goodAscent| are vectors indexed by a block element |z| and giving a bitset over all simple reflections. This difference is motivated by their use: |downset| and |primset| are used to filter bitmaps over the entire block according to some set of simple generators, which is easier if the data is grouped by generator. In fact the data computed is stored twice: one always has |downset[s].isMember(z) == descents[z].test(s)| and |primset[s].isMember(z) != good_ascent[z].test(s)|.
Definition: klsupport.cpp:199
KLSupport(const Block_base &)
Definition: klsupport.cpp:45
std::vector< std::vector< unsigned int > > d_prim_index
Definition: klsupport.h:45
unsigned int self_index(BlockElt y) const
Definition: klsupport.h:96
size_t size() const
Definition: klsupport.h:58
std::vector< BlockElt > d_lengthLess
Definition: klsupport.h:44
void filter_extremal(BitMap &, const RankFlags &) const
: Flags in b those block elements which are extremal w.r.t. the simple reflections in d...
Definition: klsupport.cpp:87
void fillPrimitivize()
Definition: klsupport.cpp:255
void swap(KLSupport &)
Definition: klsupport.cpp:58
unsigned int good_ascent_descent(BlockElt x, BlockElt y) const
Definition: klsupport.h:83
Definition: klsupport.h:33
const Block_base & block() const
Definition: klsupport.h:56
Class definitions and function declarations for the BitSet class.
Definition: klsupport.h:33
unsigned int BlockElt
Definition: Atlas.h:367
State
Definition: klsupport.h:33
std::vector< RankFlags > d_goodAscent
Definition: klsupport.h:41
const RankFlags & goodAscentSet(BlockElt z) const
Definition: klsupport.h:75
void fill()
Definition: klsupport.cpp:155
BlockElt cross(size_t s, BlockElt z) const
Definition: klsupport.h:64
size_t rank() const
Definition: klsupport.h:57
BlockEltPair cayley(size_t s, BlockElt z) const
Definition: klsupport.h:65