#include "kl.h"
#include <cassert>
#include <map>
#include <stack>
#include <stdexcept>
#include "bitmap.h"
#include "basic_io.h"
#include "blocks.h"
#include "error.h"
#include "hashtable.h"
#include "kl_error.h"
#include "prettyprint.h"
Include dependency graph for kl.cpp:

Go to the source code of this file.
Namespaces | |
| namespace | atlas |
| namespace | atlas::kl |
| namespace | atlas::kl::helper |
Classes | |
| class | atlas::kl::KLPolEntry |
| class | atlas::kl::helper::Helper |
| class | atlas::kl::helper::Thicket |
| Collection of block elements y_j of the same length, differing by type II real cross actions, and having no other descents. More... | |
| struct | atlas::kl::helper::Thicket::Edge |
| Pair (y , s x y) (with s type II real) in a Thicket. More... | |
| class | atlas::kl::helper::ThicketIterator |
Typedefs | |
| typedef hashtable::HashTable< KLPolEntry, KLIndex > | KLHashStore |
Functions | |
| size_t | firstAscent (const descents::DescentStatus &, const descents::DescentStatus &, size_t) |
| Returns the first s that is an ascent for d1, and a descent for d2; rank if there is none such. | |
| size_t | goodAscent (const descents::DescentStatus &, const descents::DescentStatus &, size_t) |
| Returns the first s that is a non-ImaginaryTypeII ascent for d1, and a descent for d2; rank if there is none such. | |
| void | wGraph (wgraph::WGraph &wg, const KLContext &klc) |
| Puts in wg the W-graph for this block. | |
This module contains code for the computation of the Kazhdan-Lusztig polynomials for a given block of representations. We have taken the radical approach of not using the Bruhat ordering at all, just ordering by length instead, and coping with the ensuing appearance of zero polynomials. It is expected that the simplification thus achieved will more than outweigh the additional polynomials computed.
The general scheme is fairly similar to the one in Coxeter: there is a "KLSupport" structure, that holds the list of primitive pairs that makes it possible to read the d_kl list, plus some additional lists that allow for a fast primitivization algorithm, for instance; there are two main lists, d_kl (filled in for all primitive pairs), and d_mu (filled in only for non-zero mu coefficients.)
Definition in file kl.cpp.
|
|
|
|
||||||||||||||||
|
Returns the first s that is an ascent for d1, and a descent for d2; rank if there is none such. Precondition: rank is the number of valid fields in d1 and d2. Definition at line 2133 of file kl.cpp. Referenced by atlas::kl::helper::Thicket::ascentCompute(), atlas::kl::helper::Thicket::nonExtremal(), atlas::kl::helper::Helper::type2Mu(), and atlas::kl::helper::Helper::writeRow(). |
|
||||||||||||||||
|
Returns the first s that is a non-ImaginaryTypeII ascent for d1, and a descent for d2; rank if there is none such. Precondition: rank is the number of valid fields in d1 and d2. |
|
||||||||||||
|
Puts in wg the W-graph for this block. Explanation: the W-graph is a graph with one vertex for each element of the block; the corresponding descent set is the tau-invariant, i.e. the set of generators s that are either complex descents, real type I or II, or imaginary compact. Let x < y in the block such that mu(x,y) != 0, and descent(x) != descent(y). Then there is an edge from x to y unless descent(x) is contained in descent(y), and an edge from y to x unless descent(y) is contained in descent(x). Note that the latter containment always holds when the length difference is > 1, so that in that case there will only be an edge from x to y (the edge must be there because we already assumed that the descent sets were not equal.) In both cases, the coefficient corresponding to the edge is mu(x,y). NOTE: if I'm not mistaken, the edgelists come already out sorted. Definition at line 2072 of file kl.cpp. References atlas::wgraph::WGraph::coeffList(), atlas::wgraph::WGraph::descent(), atlas::kl::KLContext::descentSet(), atlas::wgraph::WGraph::edgeList(), atlas::kl::KLContext::length(), atlas::kl::MuCoeff, atlas::kl::KLContext::muRow(), atlas::kl::MuRow, RankFlags, atlas::wgraph::WGraph::reset(), atlas::wgraph::WGraph::resize(), and atlas::kl::KLContext::size(). |
1.3.9.1