39 namespace involutions {
59 const TwistedWeylGroup& W,
66 void cross_act(
const Permutation& r_perm);
72 {
return d_rootInvolution[alpha]; }
80 {
return d_simpleImaginary[i]; }
81 size_t real_rank()
const {
return d_simpleReal.size(); }
94 const TwistedWeylGroup&
tW;
98 HashTable<weyl::TI_Entry, InvolutionNbr>
hash;
119 : id(inv_d), theta(inv)
120 , projector(proj), M_real(Mre), diagonal(d), lift_mat(lm)
121 , length(l), W_length(Wl), mod_space(ms) {}
132 size_t size()
const {
return pool.size(); }
141 { assert(n<
size());
return pool[
n]; }
143 const WeightInvolution&
matrix(InvolutionNbr
n)
const 144 { assert(n<
size());
return data[
n].theta; }
146 {
return matrix(nr(tw)); }
149 { assert(n<
size());
return data[
n].length; }
151 { assert(n<
size());
return data[
n].W_length; }
154 {
return length(nr(tw)); }
156 {
return Weyl_length(nr(tw)); }
159 { assert(n<
size());
return data[
n].id.root_involution(); }
161 { assert(n<
size());
return data[
n].id.root_involution(alpha); }
163 { assert(n<
size());
return data[
n].id.imaginary_roots(); }
165 { assert(n<
size());
return data[
n].id.real_roots(); }
167 { assert(n<
size());
return data[
n].id.complex_roots(); }
169 { assert(n<
size());
return data[
n].id.imaginary_rank(); }
171 { assert(n<
size());
return data[
n].id.imaginary_basis(); }
173 { assert(n<
size());
return data[
n].id.imaginary_basis(i); }
175 { assert(n<
size());
return data[
n].id.real_rank(); }
177 { assert(n<
size());
return data[
n].id.real_basis(); }
179 { assert(n<
size());
return data[
n].id.real_basis(i); }
185 bool is_complex_descent(InvolutionNbr n,
RootNbr alpha)
const;
187 void reduce(TitsElt& a)
const;
190 { assert(n<
size());
return data[
n].mod_space; }
192 bool equivalent(
const TorusElement& t1,
const TorusElement& t2,
193 InvolutionNbr i)
const;
194 RatWeight fingerprint(
const TorusElement& t, InvolutionNbr i)
const;
195 y_entry pack(
const TorusElement& t, InvolutionNbr i)
const;
196 KGB_elt_entry x_pack(
const GlobalTitsElement& x)
const;
197 bool x_equiv(
const GlobalTitsElement& x0,
const GlobalTitsElement& x1)
const;
200 void real_unique(InvolutionNbr i,
RatWeight& y)
const;
234 InvolutionNbr
end()
const {
return start+
size; }
246 unsigned int locate(InvolutionNbr i)
const;
249 const TwistedWeylGroup& tW)
261 { assert(Cartan_index[cn]!=
CartanNbr(~0u));
return orbit[Cartan_index[cn]]; }
264 {
return orbit[locate(i)].Cartan_class_nbr; }
266 {
return Cartan_class(nr(tw)); }
268 size_t total_size(
const BitMap& Cartan_classes)
const;
277 bool operator() (InvolutionNbr i, InvolutionNbr j)
const;
unsigned int length(const TwistedInvolution &tw) const
Definition: involutions.h:153
size_t size() const
Definition: involutions.h:132
InvolutionData(const RootDatum &rd, const WeightInvolution &theta)
Definition: involutions.cpp:31
WeylElt TwistedInvolution
Definition: Atlas.h:231
const TwistedWeylGroup & tW
Definition: involutions.h:94
InvolutionNbr start
Definition: involutions.h:229
const Permutation & root_involution(InvolutionNbr n) const
Definition: involutions.h:158
InvolutionNbr nr(const TwistedInvolution &tw) const
Definition: involutions.h:135
void swap(InvolutionData &)
Definition: involutions.cpp:109
unsigned long size
Definition: testprint.cpp:46
unsigned int semisimple_rank() const
Definition: involutions.h:138
const WeightInvolution & delta
Definition: involutions.h:93
Permutation d_rootInvolution
Definition: involutions.h:46
int_Matrix M_real
Definition: involutions.h:105
void cross_act(const Permutation &r_perm)
Definition: involutions.cpp:120
const SmallSubspace & mod_space(InvolutionNbr n) const
Definition: involutions.h:189
Cartan_orbits(const RootDatum &rd, const WeightInvolution &theta, const TwistedWeylGroup &tW)
Definition: involutions.h:248
RootNbr imaginary_basis(InvolutionNbr n, weyl::Generator i) const
Definition: involutions.h:172
void reduce(reduction *rule)
Definition: cweave.c:2261
const InvolutionTable & t
Definition: involutions.h:210
int_Matrix projector
Definition: involutions.h:104
Definition: involutions.h:44
std::vector< unsigned int > Cartan_index
Definition: involutions.h:244
size_t imaginary_rank(InvolutionNbr n) const
Definition: involutions.h:168
RootNbr real_basis(InvolutionNbr n, weyl::Generator i) const
Definition: involutions.h:178
Definition: involutions.h:100
const WeightInvolution & matrix(const TwistedInvolution &tw) const
Definition: involutions.h:145
CartanNbr Cartan_class(InvolutionNbr i) const
Definition: involutions.h:263
WeightInvolution theta
Definition: involutions.h:103
Definition: involutions.h:89
int length
Definition: common.c:103
size_t real_rank() const
Definition: involutions.h:81
const Permutation & root_involution() const
Definition: involutions.h:69
int_Vector diagonal
Definition: involutions.h:106
RootNbrSet d_real
Definition: involutions.h:47
RootNbr root_involution(InvolutionNbr n, RootNbr alpha) const
Definition: involutions.h:160
std::vector< Cartan_orbit > orbit
Definition: involutions.h:243
HashTable< weyl::TI_Entry, InvolutionNbr > hash
Definition: involutions.h:98
const RootNbrSet & complex_roots() const
Definition: involutions.h:75
const RootNbrList & imaginary_basis() const
Definition: involutions.h:77
RootNbrSet d_imaginary
Definition: involutions.h:47
size_t real_rank(InvolutionNbr n) const
Definition: involutions.h:174
RootNbr real_basis(size_t i) const
Definition: involutions.h:83
unsigned int length
Definition: involutions.h:108
comparer(const Cartan_orbits *o)
Definition: involutions.h:275
RootNbrSet d_complex
Definition: involutions.h:47
const RootNbrSet & imaginary_roots(InvolutionNbr n) const
Definition: involutions.h:162
void reserve(size_t s)
Definition: involutions.h:222
InvolutionNbr end() const
Definition: involutions.h:234
Class definitions and function declarations for WeylGroup.
unsigned int length(InvolutionNbr n) const
Definition: involutions.h:148
comparer less() const
Definition: involutions.h:279
unsigned int InvolutionNbr
Definition: involutions.h:87
record(const WeightInvolution &inv, const InvolutionData &inv_d, const int_Matrix &proj, const int_Matrix &Mre, const std::vector< int > &d, const int_Matrix &lm, unsigned int l, unsigned int Wl, const SmallSubspace &ms)
Definition: involutions.h:112
std::vector< record > data
Definition: involutions.h:124
const WeightInvolution & matrix(InvolutionNbr n) const
Definition: involutions.h:143
mapper as_map() const
Definition: involutions.h:216
const weyl::TI_Entry & involution(InvolutionNbr n) const
Definition: involutions.h:140
const RootNbrList & imaginary_basis(InvolutionNbr n) const
Definition: involutions.h:170
void classify_roots(const RootSystem &rs)
Definition: involutions.cpp:41
size_t imaginary_rank() const
Definition: involutions.h:76
RootNbr imaginary_basis(size_t i) const
Definition: involutions.h:79
const RootNbrList & real_basis() const
Definition: involutions.h:82
const Cartan_orbits & t
Definition: involutions.h:273
std::vector< BinaryMap > torus_simple_reflection
Definition: involutions.h:125
int_Matrix lift_mat
Definition: involutions.h:107
const RootNbrSet & complex_roots(InvolutionNbr n) const
Definition: involutions.h:166
unsigned int W_length
Definition: involutions.h:109
const RootNbrSet & real_roots(InvolutionNbr n) const
Definition: involutions.h:164
unsigned short CartanNbr
Definition: Atlas.h:301
Definitions and declarations for the BitMap class.
const RootNbrList & real_basis(InvolutionNbr n) const
Definition: involutions.h:176
SmallSubspace mod_space
Definition: involutions.h:110
RootNbr root_involution(RootNbr alpha) const
Definition: involutions.h:71
static InvolutionData build(const RootSystem &rs, const TwistedWeylGroup &W, const TwistedInvolution &tw)
Definition: involutions.cpp:104
unsigned long n
Definition: axis.cpp:77
const RootNbrSet & imaginary_roots() const
Definition: involutions.h:73
unsigned int Cartan_class_nbr
Definition: involutions.h:228
Definition: involutions.h:271
CartanNbr Cartan_class(const TwistedInvolution &tw) const
Definition: involutions.h:265
Definition: involutions.h:226
const RootNbrSet & real_roots() const
Definition: involutions.h:74
Container of a large (more than twice the machine word size) set of bits.
Definition: bitmap.h:52
RootNbrList d_simpleReal
Definition: involutions.h:49
unsigned short RootNbr
Definition: Atlas.h:216
SmallBitVector TorusPart
Definition: Atlas.h:256
bool unseen(const TwistedInvolution &tw) const
Definition: involutions.h:133
Definition: involutions.h:207
unsigned char Generator
Definition: Atlas.h:226
const RootDatum & rd
Definition: involutions.h:92
unsigned int Weyl_length(const TwistedInvolution &tw) const
Definition: involutions.h:155
const Cartan_orbit & operator[](CartanNbr cn) const
Definition: involutions.h:260
RootNbrList d_simpleImaginary
Definition: involutions.h:48
std::vector< RootNbr > RootNbrList
Definition: Atlas.h:217
InvolutionData id
Definition: involutions.h:102
std::vector< TI_Entry > Pooltype
Definition: weyl.h:787
mapper(const InvolutionTable *tab)
Definition: involutions.h:212
Definition: involutions.h:241
weyl::TI_Entry::Pooltype pool
Definition: involutions.h:97
bool contains(InvolutionNbr i) const
Definition: involutions.h:233
unsigned int Weyl_length(InvolutionNbr n) const
Definition: involutions.h:150