Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

/home/r0/dav/atlas.dir/atlas3/sources/gkmod/blocks.cpp File Reference

Implementation of the class Block. More...

#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:

Include dependency graph

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< BlockEltdual_map (const Block &b, const Block &dual_b)
bitmap::BitMap common_Cartans (realredgp::RealReductiveGroup &GR, realredgp::RealReductiveGroup &dGR)


Detailed Description

Implementation of the class Block.

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.


Function Documentation

bitmap::BitMap atlas::blocks::common_Cartans realredgp::RealReductiveGroup &  GR,
realredgp::RealReductiveGroup &  dGR
 

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().

weyl::WeylInterface correlation const weyl::WeylGroup &  W,
const weyl::WeylGroup &  dW
[static]
 

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().

weyl::WeylInterface correlation const weyl::WeylGroup &  W,
const weyl::WeylGroup &  dW
[static]
 

Referenced by atlas::blocks::Block::generate().

descents::DescentStatus descents kgb::KGBElt  x,
kgb::KGBElt  y,
const kgb::KGB &  kgb,
const kgb::KGB &  dual_kgb
[static]
 

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().

descents::DescentStatus descents kgb::KGBElt  x,
kgb::KGBElt  y,
const kgb::KGB &  kgb,
const kgb::KGB &  dual_kgb
[static]
 

Referenced by atlas::blocks::Block::generate(), and atlas::blocks::Block::isStrictAscent().

std::vector< BlockElt > atlas::blocks::dual_map const Block &  b,
const Block &  dual_b
 

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().

void insertAscents std::set< BlockElt > &  hs,
const set::SetEltList hr,
size_t  s,
const Block &  block
[static]
 

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().

void insertAscents std::set< BlockElt > &  ,
const set::SetEltList ,
size_t  ,
const Block & 
[static]
 

Referenced by atlas::blocks::makeHasse().

void makeHasse std::vector< set::SetEltList > &  Hasse,
const Block &  block
[static]
 

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().

void makeHasse std::vector< set::SetEltList > &  ,
const Block & 
[static]
 

Referenced by atlas::blocks::Block::fillBruhat().


Generated on Wed Mar 26 16:49:43 2008 for atlas by  doxygen 1.3.9.1