#include "blocks.h"
#include <cassert>
#include <memory>
#include <set>
#include "basic_io.h"
#include "bruhat.h"
#include "complexredgp.h"
#include "cartanset.h"
#include "descents.h"
#include "kgb.h"
#include "realredgp.h"
#include "tags.h"
#include "weyl.h"
#include "hashtable.h"
Include dependency graph for blocks.cpp:

Go to the source code of this file.
Namespaces | |
| namespace | atlas |
| namespace | atlas::blocks |
Functions | |
| weyl::WeylInterface | correlation (const weyl::WeylGroup &W, const weyl::WeylGroup &dW) |
| descents::DescentStatus | descents (kgb::KGBElt x, kgb::KGBElt y, const kgb::KGB &kgb, const kgb::KGB &dual_kgb) |
| void | insertAscents (std::set< BlockElt > &, const set::SetEltList &, size_t, const Block &) |
| void | makeHasse (std::vector< set::SetEltList > &, const Block &) |
| weyl::WeylInterface | correlation (const weyl::WeylGroup &W, const weyl::WeylGroup &dW) |
| Returns mapping of internal numberings from |W| to |dW|. | |
| descents::DescentStatus | descents (kgb::KGBElt x, kgb::KGBElt y, const kgb::KGB &kgb, const kgb::KGB &dual_kgb) |
| void | insertAscents (std::set< BlockElt > &hs, const set::SetEltList &hr, size_t s, const Block &block) |
| Inserts into hs the ascents from hr through s. | |
| void | makeHasse (std::vector< set::SetEltList > &Hasse, const Block &block) |
| Puts into |Hasse| the hasse diagram data for the Bruhat ordering on |block|. | |
| std::vector< BlockElt > | dual_map (const Block &b, const Block &dual_b) |
| bitmap::BitMap | common_Cartans (realredgp::RealReductiveGroup &GR, realredgp::RealReductiveGroup &dGR) |
This module aims to construct the fundamental combinatorial structure underlying K-L computations: a block of representations, together with cross-actions, Cayley transforms, length function, and descent sets.
Basically, a block should be constructed from a pair of gradings: one for the fundamental torus of G, and one for the fundamental torus of G^vee. This suffices to determine the cocycles that allow us to describe cosets for the corresponding Tits groups, and therefore the one-sided parameter sets for which we then only have to take the restricted product. Of course in practice one should be careful to first determine the support of the block in the set of root datum involutions, and do the construction only for that part, if possible.
Definition in file blocks.cpp.
|
||||||||||||
|
Find Cartans classes of |G| whose dual involution occurs for |dG| Definition at line 762 of file blocks.cpp. References atlas::realredgp::RealReductiveGroup::cartanSet(), atlas::realredgp::RealReductiveGroup::complexGroup(), atlas::complexredgp::ComplexReductiveGroup::dualCartanSet(), and atlas::realredgp::RealReductiveGroup::realForm(). Referenced by atlas::blockstabilizer_f(), atlas::blocks::Block::generate(), atlas::small_dual_kgb_f(), and atlas::small_kgb_f(). |
|
||||||||||||
|
Returns mapping of internal numberings from |W| to |dW|. Explanation: this is a fairly annoying twist. Because of the normalizations that we do for Weyl groups based on the Cartan matrix rather than the Coxeter matrix, the dual Weyl group may uses a different internal numbering than the Weyl group in the (irreducible) cases $B_2$, $G_2$ ad $F_4$. This means we cannot reinterpret |WeylElt| values for $W$ as values for $dW$ without a conversion. The conversion will be performed by |WeylGroup::translate| based on the value computed here, which is a mapping of external numberings, to be applied by |W| on an element just before reinterpreting it in the |dW|. We should have for each |s|, in terms of the internal translation arrays: | dW.d_out[W.d_in[d_toDualWeyl[s]]] = s | or equivalently | d_toDualWeyl[s] = W.d_out[dW.d_in[s]] | so that the reinterpretation will preserve the outer representation. We do not having direct access to those arrays, but we can pass into internal representation and back out for another group without acessing them explicitly. Note this could not possibly be made to work (in all cases) if |WeylGroup::translate| were to use internal numbering, as it originally did. Definition at line 607 of file blocks.cpp. References atlas::weyl::WeylGroup::generator(), atlas::weyl::WeylGroup::rank(), atlas::lietype::rank(), and atlas::weyl::WeylGroup::word(). |
|
||||||||||||
|
Referenced by atlas::blocks::Block::generate(). |
|
||||||||||||||||||||
|
Definition at line 625 of file blocks.cpp. References atlas::kgb::KGB::cross(), atlas::kgb::KGB::isDescent(), atlas::kgb::KGB::rank(), atlas::descents::DescentStatus::set(), and atlas::kgb::KGB::status(). Referenced by atlas::klsupport::KLSupport::fillDownsets(). |
|
||||||||||||||||||||
|
Referenced by atlas::blocks::Block::generate(), and atlas::blocks::Block::isStrictAscent(). |
|
||||||||||||
|
Definition at line 749 of file blocks.cpp. References atlas::blocks::BlockElt, atlas::blocks::Block::element(), atlas::blocks::Block::size(), atlas::blocks::Block::x(), and atlas::blocks::Block::y(). Referenced by atlas::dual_map_f(), and atlas::kltest::dualityVerify(). |
|
||||||||||||||||||||
|
Inserts into hs the ascents from hr through s. Explanation: technical function for the Hasse construction, that makes the part of the coatom list for a given element arising from a given descent. Definition at line 665 of file blocks.cpp. References atlas::blocks::BlockElt, atlas::blocks::Block::cayley(), atlas::blocks::Block::cross(), and atlas::blocks::Block::descentValue(). |
|
||||||||||||||||||||
|
Referenced by atlas::blocks::makeHasse(). |
|
||||||||||||
|
Puts into |Hasse| the hasse diagram data for the Bruhat ordering on |block|. Explanation: we used the algorithm from Vogan's 1982 Park City notes... which contains a bad definition. Now modified to work like kgb makeHasse: seek an ascent s that is complex or type I real. If it exists, use it as in kgb. If it doesn't then we're essentially at a split principal series. The immediate predecessors of z are just the inverse Cayley transforms. Definition at line 702 of file blocks.cpp. References atlas::blocks::BlockElt, atlas::blocks::BlockEltPair, atlas::bits::copy(), atlas::blocks::Block::cross(), atlas::blocks::Block::descentValue(), atlas::blocks::Block::firstStrictGoodDescent(), atlas::blocks::insertAscents(), atlas::blocks::Block::inverseCayley(), atlas::blocks::Block::rank(), and atlas::blocks::Block::size(). |
|
||||||||||||
|
Referenced by atlas::blocks::Block::fillBruhat(). |
1.3.9.1