36 const TwistedWeylGroup& W,
37 const TwistedWeylGroup& dual_W);
40 std::vector<BlockElt>
dual_map(
const Block_base& b,
const Block_base& dual_b);
42 BitMap
common_Cartans(RealReductiveGroup& GR, RealReductiveGroup& dGR);
46 (
const DynkinDiagram& diag,
const std::vector<ext_gen>&
orbits);
58 : type(
one), s0(s), s1(~0), w_tau() { w_tau.push_back(s); }
60 : type(commute ?
two :
three), s0(s), s1(t)
61 { w_tau.push_back(s); w_tau.push_back(t);
62 if (not commute) w_tau.push_back(s);
65 int length()
const {
return type+1; }
79 : x(xx),y(yy),descent(dd),length(ll), dual(UndefBlock) {}
81 : x(xx),y(yy),descent(),length(ll), dual(UndefBlock) {}
85 size_t hashCode(
size_t modulus)
const {
return (13*x+21*y)&(modulus-1); }
87 {
return x!=o.
x or y!=o.
y; }
97 : cross_image(UndefBlock), Cayley_image(UndefBlock,UndefBlock) {}
101 std::vector<std::vector<block_fields> >
data;
116 Block_base(
const KGB& kgb,
const KGB& dual_kgb);
130 size_t rank()
const {
return data.size(); }
132 size_t size()
const {
return info.size(); }
134 virtual KGBElt xsize()
const = 0;
135 virtual KGBElt ysize()
const = 0;
137 const DynkinDiagram&
Dynkin()
const {
return dd; }
149 BlockElt length_first(
size_t l)
const;
152 { assert(z<
size()); assert(s<rank());
return data[s][z].cross_image; }
155 { assert(z<
size()); assert(s<rank());
156 if (not isWeakDescent(s,z))
157 return data[s][z].Cayley_image;
162 { assert(z<
size()); assert(s<rank());
163 if (isWeakDescent(s,z))
164 return data[s][z].Cayley_image;
169 { assert(z<
size());
return info[z].descent; }
171 { assert(z<
size()); assert(s<rank());
return descent(z)[s]; }
174 {
return DescentStatus::isDescent(descentValue(s,z)); }
190 std::ostream& print_to
191 (std::ostream& strm,
bool as_invol_expr)
const;
194 virtual std::ostream&
print 195 (std::ostream& strm,
BlockElt z,
bool as_invol_expr)
const =0;
200 { fill_klc(last_y,verbose);
return *klc_ptr; }
205 KGBElt renumber_x(
const std::vector<KGBElt>& new_x);
206 void compute_first_zs();
238 const TwistedWeylGroup&
tW;
255 Block(
const KGB& kgb,
const KGB& dual_kgb);
263 (RealReductiveGroup& G_R, RealReductiveGroup& dG_R);
276 const WeylGroup&
weylGroup()
const {
return tW.weylGroup(); }
282 { assert(z<
size());
return d_Cartan[z]; }
293 { assert(z<
size());
return d_involution[z]; }
299 return d_involutionSupport[z];
302 virtual std::ostream&
print 303 (std::ostream& strm,
BlockElt z,
bool as_invol_expr)
const;
308 void compute_supports();
318 const Rep_context&
rc;
329 param_block(
const Rep_context& rc,
unsigned int rank);
332 void compute_duals(
const InnerClass& G,
const SubSystem& rs);
336 const InnerClass& innerClass()
const;
337 const InvolutionTable& involution_table()
const;
338 RealReductiveGroup& realGroup()
const;
342 const TorusElement&
y_rep(
KGBElt y)
const {
return y_pool[y].repr(); }
383 virtual std::ostream&
print 384 (std::ostream& strm,
BlockElt z,
bool as_invol_expr)
const;
404 const TorusElement&
y()
const {
return yy; }
426 nblock_help(RealReductiveGroup& GR,
const SubSystem& subsys);
429 void cross_act_parent_word(
const WeylWord& ww,
nblock_elt& z)
const;
StandardRepr * sr
Definition: reprmode.cpp:82
ext_gen(weyl::Generator s)
Definition: blocks.h:57
enum atlas::blocks::ext_gen::@12 type
unsigned int InvolutionNbr
Definition: Atlas.h:281
KGBElt x
Definition: blocks.h:74
WeylElt TwistedInvolution
Definition: Atlas.h:231
BlockEltPair cayley(weyl::Generator s, BlockElt z) const
Definition: blocks.h:154
const TwistedWeylGroup & tW
Definition: blocks.h:238
size_t size() const
Definition: blocks.h:132
RankFlags singular
Definition: blocks.h:321
~Block()
Definition: blocks.h:265
const WeylGroup & weylGroup() const
Definition: blocks.h:276
Class definitions and function declarations for DynkinDiagram.
std::vector< TorusElement > half_alpha
Definition: blocks.h:418
unsigned long size
Definition: testprint.cpp:46
std::vector< EltInfo > info
Definition: blocks.h:100
kl::KLContext & klc(BlockElt last_y, bool verbose)
Definition: blocks.h:199
bool operator!=(const type_expr &x, const type_expr &y)
Definition: axis-types.h:374
KGBElt x(BlockElt z) const
Definition: blocks.h:141
const Rep_context & rc
Definition: blocks.h:318
std::pair< BlockElt, BlockElt > BlockEltPair
Definition: Atlas.h:369
std::vector< std::vector< block_fields > > data
Definition: blocks.h:101
y_part_hash y_hash
Definition: blocks.h:327
Partition orbits(const F &, unsigned long, unsigned long)
BlockElt dual
Definition: blocks.h:77
DynkinDiagram folded(const DynkinDiagram &diag, const std::vector< ext_gen > &orbit)
Definition: blocks.cpp:1744
size_t Cartan_class(BlockElt z) const
Definition: blocks.h:281
bool isWeakDescent(weyl::Generator s, BlockElt z) const
Definition: blocks.h:173
BlockElt cross(weyl::Generator s, BlockElt z) const
Definition: blocks.h:151
BitSet< constants::RANK_MAX > RankFlags
Definition: Atlas.h:60
virtual KGBElt xsize() const
Definition: blocks.h:352
std::vector< ext_gen > orbits
Definition: blocks.h:102
DescentStatus descent
Definition: blocks.h:75
EltInfo(KGBElt xx, KGBElt yy, unsigned short ll)
Definition: blocks.h:80
virtual KGBElt xsize() const
Definition: blocks.h:278
BlockElt Hermitian_dual(BlockElt z) const
Definition: blocks.h:181
virtual const TwistedInvolution & involution(BlockElt z) const
Returns the twisted involution corresponding to z.
Definition: blocks.h:292
BlockEltPair inverseCayley(weyl::Generator s, BlockElt z) const
Definition: blocks.h:161
std::vector< KGBElt > x_of
Definition: blocks.h:324
HashTable< block_elt_entry, BlockElt > block_hash
Definition: blocks.h:360
weyl::Generator s0
Definition: blocks.h:54
BruhatOrder * d_bruhat
Definition: blocks.h:110
TwistedInvolutionList d_involution
Definition: blocks.h:245
const TwistedWeylGroup & twistedWeylGroup() const
Definition: blocks.h:275
KGBElt y
Definition: blocks.h:74
ext_gen(bool commute, weyl::Generator s, weyl::Generator t)
Definition: blocks.h:59
KGBElt parent_x(BlockElt z) const
Definition: blocks.h:341
KGBElt x() const
Definition: blocks.h:403
const InvolutionTable & i_tab
Definition: blocks.h:414
HashTable< y_entry, KGBElt > y_part_hash
Definition: blocks.h:312
BlockEltPair Cayley_image
Definition: blocks.h:95
bool verbose
Definition: KLread.cpp:136
kl::KLContext * klc_ptr
Definition: blocks.h:111
std::vector< EltInfo > Pooltype
Definition: blocks.h:84
TorusElement yy
Definition: blocks.h:399
std::vector< BlockElt > dual_map(const Block_base &b, const Block_base &dual_b)
Definition: blocks.cpp:1731
size_t max_Cartan() const
Definition: blocks.h:284
TwistedInvolution dual_involution(const TwistedInvolution &w, const TwistedWeylGroup &tW, const TwistedWeylGroup &dual_tW)
Returns the twisted involution dual to |w|.
Definition: blocks.cpp:1719
size_t hashCode(size_t modulus) const
Definition: blocks.h:85
const RootDatum & rd
Definition: blocks.h:412
weyl::Generator s1
Definition: blocks.h:54
ext_gen orbit(weyl::Generator s) const
Definition: blocks.h:138
RankFlags singular_simple_roots()
Definition: blocks.h:347
block_fields()
Definition: blocks.h:96
const SubSystem & sub
Definition: blocks.h:413
std::vector< TorusPart > dual_m_alpha
Definition: blocks.h:417
BlockElt cross_image
Definition: blocks.h:94
const DescentStatus & descent(BlockElt z) const
Definition: blocks.h:168
WeightInvolution involution(const Layout &lo)
Definition: lietype.cpp:463
const std::vector< ext_gen > & fold_orbits() const
Definition: blocks.h:139
virtual KGBElt ysize() const
Definition: blocks.h:353
unsigned int KGBElt
Definition: Atlas.h:339
y_entry::Pooltype y_pool
Definition: blocks.h:326
DynkinDiagram dd
Definition: blocks.h:108
std::vector< KGBElt > kgb_nr_of
Definition: blocks.h:323
std::vector< RankFlags > d_involutionSupport
Flags the generators occurring in reduced expression for |d_involution|.
Definition: blocks.h:250
const KGB & kgb
Definition: blocks.h:411
Block_base::EltInfo block_elt_entry
Definition: blocks.h:359
virtual KGBElt ysize() const
Definition: blocks.h:279
unsigned short RealFormNbr
Definition: Atlas.h:302
std::vector< TwistedInvolution > TwistedInvolutionList
Definition: Atlas.h:235
size_t length(BlockElt z) const
Definition: blocks.h:147
int length() const
Definition: blocks.h:65
Represents a block of representations of an inner form of G.
Definition: blocks.h:236
struct lambda_node * lambda
Definition: parse_types.h:94
KGBElt y(BlockElt z) const
Definition: blocks.h:142
const DynkinDiagram & Dynkin() const
Definition: blocks.h:137
std::vector< BlockElt > d_first_z_of_x
Definition: blocks.h:106
void print(char *s,...)
Definition: common.c:861
EltInfo(KGBElt xx, KGBElt yy, DescentStatus dd, unsigned short ll)
Definition: blocks.h:78
unsigned short length
Definition: blocks.h:76
Class definition for the class DescentStatus.
WeylWord w_tau
Definition: blocks.h:55
block_hash z_hash
Definition: blocks.h:368
KGBElt xx
Definition: blocks.h:398
size_t rank() const
Definition: blocks.h:130
const TorusElement & y() const
Definition: blocks.h:404
BruhatOrder & bruhatOrder()
Definition: blocks.h:198
size_t xrange
Definition: blocks.h:240
unsigned char Generator
Definition: Atlas.h:226
unsigned int BlockElt
Definition: Atlas.h:367
size_t yrange
Definition: blocks.h:241
DescentStatus::Value descentValue(weyl::Generator s, BlockElt z) const
Definition: blocks.h:170
std::vector< BlockElt > BlockEltList
Definition: Atlas.h:368
BitMap common_Cartans(RealReductiveGroup &GR, RealReductiveGroup &dGR)
Definition: blocks.cpp:1774
size_t folded_rank() const
Definition: blocks.h:131
nblock_elt(KGBElt x, const TorusElement &t)
Definition: blocks.h:401
const TorusElement & y_rep(KGBElt y) const
Definition: blocks.h:342
RatWeight infin_char
Definition: blocks.h:320
std::vector< size_t > d_Cartan
Definition: blocks.h:244
const RatWeight & gamma() const
Definition: blocks.h:340
const RankFlags & involutionSupport(BlockElt z) const
the simple roots occurring in reduced expression |involution(z)|
Definition: blocks.h:296