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

atlas::blocks::Block Class Reference

Represents a block of representations of an inner form of G. More...

#include <blocks.h>

Collaboration diagram for atlas::blocks::Block:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Block (complexredgp::ComplexReductiveGroup &, realform::RealForm rf, realform::RealForm drf, bool select_Cartans=false)
 Constructor for the block class.
 ~Block ()
const descents::DescentStatusdescent (BlockElt z) const
 vector of descent statuses of all simple roots
descents::DescentStatus::Value descentValue (size_t s, BlockElt z) const
 descent type of s at z
bool isWeakDescent (size_t s, BlockElt z) const
 whether |s| is a weak descent for |z|
realform::RealForm dualForm () const
size_t firstStrictDescent (BlockElt z) const
 Returns the first descent for z (the number of a simple root) that is not imaginary compact, or rank() if there is no such descent.
size_t firstStrictGoodDescent (BlockElt z) const
 Returns the first descent for z (the number of a simple root) that is either complex or real type I; if there is no such descent returns |rank()|.
BlockElt cross (size_t s, BlockElt z) const
 cross action
BlockEltPair cayley (size_t s, BlockElt z) const
 Cayley transform.
BlockEltPair inverseCayley (size_t s, BlockElt z) const
 inverse Cayley transform
const bitset::RankFlagsinvolutionSupport (size_t z) const
 the simple roots occurring in $\theta_z$.
bool isStrictAscent (size_t, BlockElt) const
 Tells if s is a strict ascent generator for z.
bool isStrictDescent (size_t, BlockElt) const
 Tells if s is a strict descent generator for z.
size_t length (BlockElt z) const
 length of block element
size_t Cartan_class (BlockElt z) const
 Cartan class of block element.
BlockEltPair link (size_t alpha, size_t beta, BlockElt y) const
 the functor $T_{\alpha,\beta}$
size_t rank () const
 semisimple rank of the group this block is constructed for
realform::RealForm realForm () const
size_t size () const
 size of the block
const weyl::TwistedInvolutioninvolution (BlockElt z) const
 Returns the twisted involution corresponding to z.
const weyl::WeylGroupweylGroup () const
kgb::KGBElt x (BlockElt z) const
kgb::KGBElt y (BlockElt z) const
BlockElt element (kgb::KGBElt x, kgb::KGBElt y) const
 Look up element by |x|, |y| coordinates.
std::pair< BlockElt, BlockEltR_packet (BlockElt z) const
size_t xsize () const
size_t ysize () const
bruhat::BruhatOrderbruhatOrder ()

Private Types

enum  State { BruhatConstructed, NumStates }

Private Member Functions

weyl::TwistedInvolution dualInvolution (const weyl::TwistedInvolution &tw, weyl::WeylInterface to_dual) const
 Returns the twisted involution dual to tw.
void generate (realredgp::RealReductiveGroup &G, realredgp::RealReductiveGroup &dG, bool select_Cartans)
void fillBruhat ()
 Constructs the BruhatOrder.

Private Attributes

realform::RealForm d_realForm
 Number (in the list maintained by the complex reductive group) of the real form of G where the block lives.
realform::RealForm d_dualForm
 Number of the real form of G^vee defining the block.
size_t d_rank
 Semisimple rank of G.
const weyl::WeylGroupd_weylGroup
size_t d_xrange
 Number of K orbits on G/B.
size_t d_yrange
 Number of K^vee orbits on G^vee/B^vee.
kgb::KGBEltList d_x
 Element d_x[z] identifies the K orbit x on G/B for z.
kgb::KGBEltList d_y
 Element d_y[z] identifies the K^vee orbit y on G^vee/B^vee for z.
std::vector< BlockEltd_first_z_of_x
 maps KGB element |x| to the first block element |z| with |d_x[z]>=x|.
std::vector< BlockEltListd_cross
 d_cross[s][z] is $s * z$ (for s a simple root, z a BlockElt).
std::vector< BlockEltPairListd_cayley
 For $s$ a simple root and $z$ a |BlockElt|, |d_cayley[s][z]| is the Cayley transform $c_s(z)$ (noncompact imaginary case) or the inverse Cayley transform $c^s(z)$ (real type 1 or 2) or undefined (otherwise).
descents::DescentStatusList d_descent
 Entry z flags the descent status of the simple roots for block element z.
std::vector< size_t > d_length
 Entry z is the length of block element z.
std::vector< size_t > d_Cartan
 Entry z is the Cartan class of block element z.
weyl::TwistedInvolutionList d_involution
 Entry z (multiplied by the fixed outer automorphism ) is the involution $\tau_z$ of H attached to z (in other words, d_involution[z] is the twisted involution attached to z; MvL).
std::vector< bitset::RankFlagsd_involutionSupport
 Entry z flags the simple roots occurring in $\theta_z$.
bitset::BitSet< NumStates > d_state
 Records state bits (in fact one: whether the Bruhat order is computed).
bruhat::BruhatOrderd_bruhat
 Bruhat order on the block.

Detailed Description

Represents a block of representations of an inner form of G.

For our fixed inner form, orbits of $K$ on $G/B$ are parametrized by classes of elements $x$ in $N_G(H).$ (which is the normalizer in the second half $G.$ of the extended group $G^Gamma=G disju G.$, where $$ is (i.e., acts on $G$ as) an involution that itself normalises $H$) modulo the {conjugation} action of $H$. (Dangerous bend: this $H$ conjugacy class of $x$ is a subset, usually proper, of the coset $xH$. The collection of all $x$ is therefore NOT a subset of the extended Weyl group $N(H)/H$, but something more subtle.) The requirement on $x$ is that it belong to to the $G$-conjugacy class of strong involutions defining the inner form.

Each $x$ therefore defines an involution $theta_x$ of $H$. Describing the set of $x$ with a fixed involution is accomplished by the Fiber class.

A block is characterized by specifying also an inner form of the dual group $G^vee$. For this inner form, $K^vee$ orbits on $G^vee/B^vee$ are parametrized by elements $y$. The basic theorem is that the block of representations is parametrized by pairs $(x,y)$ as above, subject to the requirement that $theta_y$ is the negative transpose of $theta_x$.

Definition at line 81 of file blocks.h.


Member Enumeration Documentation

enum atlas::blocks::Block::State [private]
 

Enumeration values:
BruhatConstructed 
NumStates 

Definition at line 83 of file blocks.h.


Constructor & Destructor Documentation

atlas::blocks::Block::Block complexredgp::ComplexReductiveGroup G,
realform::RealForm  rf,
realform::RealForm  df,
bool  select_Cartans = false
 

Constructor for the block class.

Constructs a block from the datum of a real form rf for G and a real form df for G^vee (_not_ strong real forms: up to isomorphism, the result depends only on the underlying real forms!).

Definition at line 171 of file blocks.cpp.

References atlas::blocks::BlockElt, cross(), d_involution, d_involutionSupport, d_length, d_rank, descentValue(), firstStrictDescent(), generate(), inverseCayley(), atlas::bitset::RankFlags, atlas::lietype::semisimpleRank(), atlas::bitset::BitSet< n >::set(), size(), weylGroup(), and atlas::weyl::WeylGroup::word().

atlas::blocks::Block::~Block  ) 
 

Definition at line 239 of file blocks.cpp.


Member Function Documentation

bruhat::BruhatOrder& atlas::blocks::Block::bruhatOrder  )  [inline]
 

Definition at line 322 of file blocks.h.

Referenced by atlas::blockorder_f(), atlas::kl_io::printAllKL(), and atlas::kl_io::printPrimitiveKL().

size_t atlas::blocks::Block::Cartan_class BlockElt  z  )  const [inline]
 

Cartan class of block element.

Definition at line 256 of file blocks.h.

Referenced by atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

BlockEltPair atlas::blocks::Block::cayley size_t  s,
BlockElt  z
const [inline]
 

Cayley transform.

Definition at line 223 of file blocks.h.

References atlas::blocks::BlockEltPair, and atlas::blocks::UndefBlock.

Referenced by atlas::klsupport::KLSupport::cayley(), atlas::blocks::insertAscents(), link(), atlas::klsupport::KLSupport::primitivize(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

BlockElt atlas::blocks::Block::cross size_t  s,
BlockElt  z
const [inline]
 

cross action

Definition at line 216 of file blocks.h.

References atlas::blocks::BlockElt.

Referenced by Block(), atlas::klsupport::KLSupport::cross(), atlas::blocks::insertAscents(), link(), atlas::blocks::makeHasse(), atlas::klsupport::KLSupport::primitivize(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

const descents::DescentStatus& atlas::blocks::Block::descent BlockElt  z  )  const [inline]
 

vector of descent statuses of all simple roots

Definition at line 192 of file blocks.h.

Referenced by link(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

descents::DescentStatus::Value atlas::blocks::Block::descentValue size_t  s,
BlockElt  z
const [inline]
 

descent type of s at z

Definition at line 198 of file blocks.h.

Referenced by Block(), atlas::klsupport::KLSupport::descentValue(), firstStrictGoodDescent(), atlas::blocks::insertAscents(), isStrictAscent(), isStrictDescent(), atlas::blocks::makeHasse(), and atlas::filekl::write_block_file().

realform::RealForm atlas::blocks::Block::dualForm  )  const [inline]
 

Definition at line 208 of file blocks.h.

weyl::TwistedInvolution atlas::blocks::Block::dualInvolution const weyl::TwistedInvolution tw,
weyl::WeylInterface  to_dual
const [private]
 

Returns the twisted involution dual to tw.

Definition at line 563 of file blocks.cpp.

References atlas::weyl::WeylGroup::inverse(), atlas::weyl::WeylGroup::longest(), atlas::weyl::WeylGroup::prod(), atlas::weyl::WeylGroup::translation(), atlas::weyl::WeylGroup::twisted(), and atlas::weyl::TwistedInvolution.

Referenced by generate().

BlockElt atlas::blocks::Block::element kgb::KGBElt  x,
kgb::KGBElt  y
const
 

Look up element by |x|, |y| coordinates.

Precondition: |x| and |y| should be compatible: such a block element exists

This uses the |d_first_z_of_x| table to locate the range where the |x| coordinates are correct; then comparing the given |y| value with the first one present for |x| (there must be at least one) we can predict the value directly, since for each fixed |x| value the values of |y| are consecutive.

Definition at line 258 of file blocks.cpp.

References atlas::blocks::BlockElt, d_first_z_of_x, d_x, d_y, and size().

Referenced by atlas::blocks::dual_map(), and generate().

void atlas::blocks::Block::fillBruhat  )  [private]
 

Constructs the BruhatOrder.

NOTE: may throw a MemoryOverflow error. Commit-or-rollback is guaranteed.

Definition at line 497 of file blocks.cpp.

References BruhatConstructed, d_bruhat, d_state, atlas::blocks::makeHasse(), atlas::bitset::BitSet< n >::set(), and atlas::bitset::BitSet< n >::test().

size_t atlas::blocks::Block::firstStrictDescent BlockElt  z  )  const
 

Returns the first descent for z (the number of a simple root) that is not imaginary compact, or rank() if there is no such descent.

Definition at line 298 of file blocks.cpp.

References isStrictDescent(), and rank().

Referenced by Block().

size_t atlas::blocks::Block::firstStrictGoodDescent BlockElt  z  )  const
 

Returns the first descent for z (the number of a simple root) that is either complex or real type I; if there is no such descent returns |rank()|.

Definition at line 311 of file blocks.cpp.

References descentValue(), isStrictDescent(), and rank().

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

void atlas::blocks::Block::generate realredgp::RealReductiveGroup G,
realredgp::RealReductiveGroup dG,
bool  select_Cartans
[private]
 

Definition at line 388 of file blocks.cpp.

References atlas::blocks::BlockElt, atlas::blocks::BlockEltPair, atlas::complexredgp::ComplexReductiveGroup::blockSize(), atlas::kgb::KGB::Cartan_class(), atlas::kgb::KGB::cayley(), atlas::blocks::common_Cartans(), atlas::blocks::correlation(), atlas::kgb::KGB::cross(), d_Cartan, d_cayley, d_cross, d_descent, d_dualForm, d_first_z_of_x, d_involution, d_length, d_realForm, d_weylGroup, d_x, d_xrange, d_y, d_yrange, atlas::blocks::descents(), dualInvolution(), element(), atlas::kgb::KGB::inverseCayley(), atlas::kgb::KGB::involution(), atlas::kgb::KGB::length(), size(), atlas::kgb::KGB::size(), atlas::kgb::KGB::tauPacket(), atlas::weyl::TwistedInvolution, atlas::blocks::UndefBlock, x(), and y().

Referenced by Block().

BlockEltPair atlas::blocks::Block::inverseCayley size_t  s,
BlockElt  z
const [inline]
 

inverse Cayley transform

Definition at line 232 of file blocks.h.

References atlas::blocks::BlockEltPair, and atlas::blocks::UndefBlock.

Referenced by Block(), link(), atlas::blocks::makeHasse(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

const weyl::TwistedInvolution& atlas::blocks::Block::involution BlockElt  z  )  const [inline]
 

Returns the twisted involution corresponding to z.

This is the corresponding Weyl group element w, such that w.delta is the root datum involution tau corresponding to z

Definition at line 284 of file blocks.h.

References atlas::weyl::TwistedInvolution.

Referenced by atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

const bitset::RankFlags& atlas::blocks::Block::involutionSupport size_t  z  )  const [inline]
 

the simple roots occurring in $\theta_z$.

Definition at line 241 of file blocks.h.

References atlas::bitset::RankFlags.

Referenced by atlas::block_io::printBlockU().

bool atlas::blocks::Block::isStrictAscent size_t  s,
BlockElt  z
const
 

Tells if s is a strict ascent generator for z.

Explanation: this means that d_descent[z][s] is one of ComplexAscent, ImaginaryTypeI or ImaginaryTypeII.

Definition at line 272 of file blocks.cpp.

References atlas::blocks::descents(), and descentValue().

bool atlas::blocks::Block::isStrictDescent size_t  s,
BlockElt  z
const
 

Tells if s is a strict descent generator for z.

Explanation: this means that d_descent[z][s] is one of ComplexDescent, RealTypeI or RealTypeII.

Definition at line 286 of file blocks.cpp.

References descentValue().

Referenced by firstStrictDescent(), and firstStrictGoodDescent().

bool atlas::blocks::Block::isWeakDescent size_t  s,
BlockElt  z
const [inline]
 

whether |s| is a weak descent for |z|

Definition at line 205 of file blocks.h.

Referenced by link(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

size_t atlas::blocks::Block::length BlockElt  z  )  const [inline]
 

length of block element

Definition at line 251 of file blocks.h.

Referenced by atlas::fillLengthLess(), atlas::klsupport::KLSupport::length(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

BlockEltPair atlas::blocks::Block::link size_t  alpha,
size_t  beta,
BlockElt  y
const
 

the functor $T_{\alpha,\beta}$

Precondition: alpha and beta are adjacent roots, of which alpha is a (weak) descent for y, while beta is not a descent for y.

In fact if this is not satisfied, we return a pair of UndefBlock elements

Definition at line 330 of file blocks.cpp.

References atlas::blocks::BlockElt, atlas::blocks::BlockEltPair, cayley(), cross(), descent(), inverseCayley(), isWeakDescent(), and atlas::blocks::UndefBlock.

std::pair<BlockElt,BlockElt> atlas::blocks::Block::R_packet BlockElt  z  )  const [inline]
 

Definition at line 307 of file blocks.h.

References atlas::blocks::BlockElt.

Referenced by atlas::kl::helper::Helper::completePacket(), atlas::kl::helper::Helper::fillKLRow(), and atlas::kl::helper::Helper::fillThickets().

size_t atlas::blocks::Block::rank  )  const [inline]
 

semisimple rank of the group this block is constructed for

Definition at line 265 of file blocks.h.

Referenced by firstStrictDescent(), firstStrictGoodDescent(), atlas::blocks::makeHasse(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

realform::RealForm atlas::blocks::Block::realForm  )  const [inline]
 

Definition at line 269 of file blocks.h.

size_t atlas::blocks::Block::size  )  const [inline]
 

size of the block

Definition at line 274 of file blocks.h.

References atlas::bitmap::BitMap::size().

Referenced by Block(), atlas::blockorder_f(), atlas::blocks::dual_map(), element(), atlas::klsupport::KLSupport::fillDownsets(), atlas::fillLengthLess(), generate(), atlas::blocks::makeHasse(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), atlas::block_io::printBlockU(), and atlas::filekl::write_block_file().

const weyl::WeylGroup& atlas::blocks::Block::weylGroup  )  const [inline]
 

Definition at line 290 of file blocks.h.

Referenced by Block(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

kgb::KGBElt atlas::blocks::Block::x BlockElt  z  )  const [inline]
 

Definition at line 294 of file blocks.h.

Referenced by atlas::blocks::dual_map(), generate(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

size_t atlas::blocks::Block::xsize  )  const [inline]
 

Definition at line 314 of file blocks.h.

Referenced by atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

kgb::KGBElt atlas::blocks::Block::y BlockElt  z  )  const [inline]
 

Definition at line 299 of file blocks.h.

Referenced by atlas::blocks::dual_map(), generate(), atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().

size_t atlas::blocks::Block::ysize  )  const [inline]
 

Definition at line 317 of file blocks.h.

Referenced by atlas::block_io::printBlock(), atlas::block_io::printBlockD(), and atlas::block_io::printBlockU().


Member Data Documentation

bruhat::BruhatOrder* atlas::blocks::Block::d_bruhat [private]
 

Bruhat order on the block.

Definition now corrected mathematically from the bad definition of Vogan's Park City notes to one equivalent to the transitive closure of non-vanishing KL polynomial.

Definition at line 178 of file blocks.h.

Referenced by fillBruhat().

std::vector<size_t> atlas::blocks::Block::d_Cartan [private]
 

Entry z is the Cartan class of block element z.

Definition at line 151 of file blocks.h.

Referenced by generate().

std::vector<BlockEltPairList> atlas::blocks::Block::d_cayley [private]
 

For $s$ a simple root and $z$ a |BlockElt|, |d_cayley[s][z]| is the Cayley transform $c_s(z)$ (noncompact imaginary case) or the inverse Cayley transform $c^s(z)$ (real type 1 or 2) or undefined (otherwise).

Definition at line 134 of file blocks.h.

Referenced by generate().

std::vector<BlockEltList> atlas::blocks::Block::d_cross [private]
 

d_cross[s][z] is $s * z$ (for s a simple root, z a BlockElt).

Definition at line 128 of file blocks.h.

Referenced by generate().

descents::DescentStatusList atlas::blocks::Block::d_descent [private]
 

Entry z flags the descent status of the simple roots for block element z.

Definition at line 141 of file blocks.h.

Referenced by generate().

realform::RealForm atlas::blocks::Block::d_dualForm [private]
 

Number of the real form of G^vee defining the block.

Definition at line 94 of file blocks.h.

Referenced by generate().

std::vector<BlockElt> atlas::blocks::Block::d_first_z_of_x [private]
 

maps KGB element |x| to the first block element |z| with |d_x[z]>=x|.

Definition at line 123 of file blocks.h.

Referenced by element(), and generate().

weyl::TwistedInvolutionList atlas::blocks::Block::d_involution [private]
 

Entry z (multiplied by the fixed outer automorphism ) is the involution $\tau_z$ of H attached to z (in other words, d_involution[z] is the twisted involution attached to z; MvL).

Definition at line 159 of file blocks.h.

Referenced by Block(), and generate().

std::vector<bitset::RankFlags> atlas::blocks::Block::d_involutionSupport [private]
 

Entry z flags the simple roots occurring in $\theta_z$.

Definition at line 164 of file blocks.h.

Referenced by Block().

std::vector<size_t> atlas::blocks::Block::d_length [private]
 

Entry z is the length of block element z.

Definition at line 146 of file blocks.h.

Referenced by Block(), and generate().

size_t atlas::blocks::Block::d_rank [private]
 

Semisimple rank of G.

Definition at line 97 of file blocks.h.

Referenced by Block().

realform::RealForm atlas::blocks::Block::d_realForm [private]
 

Number (in the list maintained by the complex reductive group) of the real form of G where the block lives.

Definition at line 89 of file blocks.h.

Referenced by generate().

bitset::BitSet<NumStates> atlas::blocks::Block::d_state [private]
 

Records state bits (in fact one: whether the Bruhat order is computed).

Definition at line 169 of file blocks.h.

Referenced by fillBruhat().

const weyl::WeylGroup& atlas::blocks::Block::d_weylGroup [private]
 

Definition at line 99 of file blocks.h.

Referenced by generate().

kgb::KGBEltList atlas::blocks::Block::d_x [private]
 

Element d_x[z] identifies the K orbit x on G/B for z.

Definition at line 114 of file blocks.h.

Referenced by element(), and generate().

size_t atlas::blocks::Block::d_xrange [private]
 

Number of K orbits on G/B.

Definition at line 104 of file blocks.h.

Referenced by generate().

kgb::KGBEltList atlas::blocks::Block::d_y [private]
 

Element d_y[z] identifies the K^vee orbit y on G^vee/B^vee for z.

Definition at line 119 of file blocks.h.

Referenced by element(), and generate().

size_t atlas::blocks::Block::d_yrange [private]
 

Number of K^vee orbits on G^vee/B^vee.

Definition at line 109 of file blocks.h.

Referenced by generate().


The documentation for this class was generated from the following files:
Generated on Wed Mar 26 16:52:21 2008 for atlas by  doxygen 1.3.9.1