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

atlas::cartanclass::CartanClass Class Reference

Represents a single stable conjugacy class of Cartan subgroups. More...

#include <cartanclass.h>

Collaboration diagram for atlas::cartanclass::CartanClass:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CartanClass (const rootdata::RootDatum &, const latticetypes::LatticeMatrix &)
 ~CartanClass ()
void swap (CartanClass &)
const latticetypes::LatticeMatrixinvolution () const
 Returns the matrix of the involution on the weight lattice of the Cartan subgroup.
rootdata::RootNbr involution_image_of_root (rootdata::RootNbr j) const
 Action of the Cartan involution on root #j.
const rootdata::RootSetimaginaryRootSet () const
 RootSet flagging the imaginary roots.
const rootdata::RootSetrealRootSet () const
 RootSet flagging the real roots.
const rootdata::RootListsimpleImaginary () const
 RootList holding the numbers of the simple imaginary roots.
const rootdata::RootListsimpleReal () const
 RootList holding the numbers of the simple real roots.
const Fiberfiber () const
 Class of the fiber group H^{-tau}/[(1-tau)H] for this Cartan.
const FiberdualFiber () const
 Class of the fiber group for the dual Cartan.
bool isMostSplit (adjoint_fiber_orbit wrf) const
 Tells whether this cartan class is the most split one for weak real form corresponding to class #wrf in fiber().weakReal().
size_t numDualRealForms () const
 Number of weak real forms for the dual group containing the dual Cartan.
size_t numRealForms () const
 Number of weak real forms containing this Cartan.
size_t numRealFormClasses () const
 Number of possible squares of strong real forms mod (1+delta)Z.
size_t orbitSize () const
 Size of the W-conjugacy class of tau.
const rootdata::RootListsimpleComplex () const
 Roots simple for the "complex factor" of W^tau.
const partition::PartitionstrongReal (square_class j) const
 Partitions of Fiber group cosets corresponding to the possible square classes in Z^delta/[(1+delta)Z].
AdjointFiberElt toAdjoint (FiberElt x) const
 Returns the image of x in the adjoint fiber group.
adjoint_fiber_orbit toWeakReal (fiber_orbit c, square_class j) const
 Returns the class number in the weak real form partition of the strong real form #c in real form class rfc.
const partition::PartitionweakReal () const
 Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)].

Private Member Functions

rootdata::RootList makeSimpleComplex (const rootdata::RootDatum &) const
 Computes the list of the simple roots for a complex factor in $W^\tau$, where $\tau$ is the root datum involution of our Cartan class.
size::Size makeOrbitSize (const rootdata::RootDatum &) const
 Returns the size of the twisted involution orbit for this class.

Private Attributes

Fiber d_fiber
 Class of the fiber group H^{-tau}/[(1-tau)H] for this Cartan.
Fiber d_dualFiber
 Class of the fiber group for the dual Cartan.
rootdata::RootList d_simpleComplex
 Roots simple for the "complex factor" of W^tau.
size::Size d_orbitSize
 Size of the W-conjugacy class of tau.

Detailed Description

Represents a single stable conjugacy class of Cartan subgroups.

Mathematically this means the complex torus in the complex group, together with an involutive automorphism of this torus (the Cartan involution). (More precisely, it is a W-conjugacy class of involutive automorphisms.) As the class is now used in the software, the Cartan involution must be in the inner class specified by ComplexReductiveGroup. Most of the interesting information is contained in the two underlying Fiber classes d_fiber and d_dualFiber. First of all, that is where the Cartan involution lives (since the involution is needed to define the fibers). But the fiber classes also record for which real forms this stable conjugacy class of Cartan subgroups is defined; and, given the real form, which imaginary roots are compact and noncompact.

Definition at line 588 of file cartanclass.h.


Constructor & Destructor Documentation

atlas::cartanclass::CartanClass::CartanClass const rootdata::RootDatum rd,
const latticetypes::LatticeMatrix q
 

Synopsis: constructs the Cartan class with involution q.

Precondition: q is an involution of the root datum rd that can be obtained from the distinguished involution by multiplication to the left by the action of a Weyl group element w, which is called the twisted involution associated to q.

Definition at line 142 of file cartanclass.cpp.

References atlas::cartanclass::dualFiber(), and atlas::latticetypes::LatticeMatrix.

atlas::cartanclass::CartanClass::~CartanClass  )  [inline]
 

Definition at line 655 of file cartanclass.h.


Member Function Documentation

const Fiber& atlas::cartanclass::CartanClass::dualFiber  )  const [inline]
 

Class of the fiber group for the dual Cartan.

Elements of the dual fiber group are characters of the group of connected components of the real points of H.

Definition at line 742 of file cartanclass.h.

Referenced by atlas::cartanset::CartanClassSet::dualFiberSize(), atlas::cartanset::CartanClassSet::dualRepresentative(), and atlas::realweyl::RealWeyl::RealWeyl().

const Fiber& atlas::cartanclass::CartanClass::fiber  )  const [inline]
 

Class of the fiber group H^{-tau}/[(1-tau)H] for this Cartan.

Elements (very roughly) correspond to possible extensions of the real form tau from H to G.

Definition at line 732 of file cartanclass.h.

Referenced by atlas::cartanset::CartanClassSet::fiberSize(), atlas::kgb::KGBHelp::grading_seed(), isMostSplit(), atlas::kgb::KGBHelp::naive_seed(), atlas::cartan_io::printCartanClass(), atlas::complexredgp_io::printGradings(), atlas::realweyl::RealWeyl::RealWeyl(), atlas::cartanset::CartanClassSet::representative(), and atlas::cartanset::CartanClassSet::updateStatus().

const rootdata::RootSet& atlas::cartanclass::CartanClass::imaginaryRootSet  )  const [inline]
 

RootSet flagging the imaginary roots.

That is, a bitmap whose set bits are those corresponding to the numbers (within the list of roots in RootDatum) of the imaginary roots (those roots $\alpha$ with $\tau(\alpha)=\alpha$).

Definition at line 686 of file cartanclass.h.

References atlas::cartanclass::Fiber::imaginaryRootSet(), and atlas::rootdata::RootSet.

Referenced by makeSimpleComplex().

const latticetypes::LatticeMatrix& atlas::cartanclass::CartanClass::involution  )  const [inline]
 

Returns the matrix of the involution on the weight lattice of the Cartan subgroup.

Definition at line 668 of file cartanclass.h.

References atlas::cartanclass::Fiber::involution(), and atlas::latticetypes::LatticeMatrix.

Referenced by atlas::cartanset::CartanClassSet::addCartan(), and atlas::kgb::FiberData::FiberData().

rootdata::RootNbr atlas::cartanclass::CartanClass::involution_image_of_root rootdata::RootNbr  j  )  const [inline]
 

Action of the Cartan involution on root #j.

Definition at line 675 of file cartanclass.h.

References atlas::cartanclass::Fiber::involution_image_of_root().

Referenced by makeSimpleComplex(), and atlas::realweyl::RealWeylGenerators::RealWeylGenerators().

bool atlas::cartanclass::CartanClass::isMostSplit adjoint_fiber_orbit  wrf  )  const
 

Tells whether this cartan class is the most split one for weak real form corresponding to class #wrf in fiber().weakReal().

Algorithm: this is the case iff the grading corresponding to wrf is trivial, i.e., all imaginary roots are compact. In this case it does not matter which representative fiber element |x| is chosen, since the action of the imaginary Weyl group obviously stabilises the trivial grading. [In fact there should be only one such representative by injectivity of the map from the adjoint fiber to gradings, as given by the assert statement below. MvL]

Definition at line 174 of file cartanclass.cpp.

References atlas::cartanclass::AdjointFiberElt, atlas::bitset::BitSet< n >::any(), atlas::partition::Partition::classRep(), atlas::partition::Partition::classSize(), fiber(), atlas::cartanclass::Fiber::grading(), atlas::gradings::Grading, atlas::bitset::BitSet< n >::none(), and atlas::cartanclass::Fiber::weakReal().

Referenced by atlas::cartanset::CartanClassSet::updateStatus().

size::Size atlas::CartanClass::makeOrbitSize const rootdata::RootDatum rd  )  const [private]
 

Returns the size of the twisted involution orbit for this class.

Definition at line 1191 of file cartanclass.cpp.

References atlas::rootdata::RootDatum::cartanMatrix(), atlas::rootdata::lieType(), simpleComplex(), simpleImaginary(), simpleReal(), atlas::size::Size, and atlas::weylsize::weylSize().

rootdata::RootList atlas::CartanClass::makeSimpleComplex const rootdata::RootDatum rd  )  const [private]
 

Computes the list of the simple roots for a complex factor in $W^\tau$, where $\tau$ is the root datum involution of our Cartan class.

Explanation: $W^\tau$ is the semidirect product of $W^R x W^{iR}$ (Weyl groups of the real and imaginary root systems), with the diagonal subgroup of $W^C$, where $W^C$ is the Weyl group of the root system $Phi^C$ orthogonal to both the sums of positive imaginary and real roots. That root system is complex for the involution induced by $\tau$, i.e., it decomposes as orthogonal sum of two subsystems interchanged by $\tau$; we return a basis of one "half" of it.

NOTE: there was a bad bug here in an earlier version, which amounted to the implicit assumption that the standard positive root system for the $Phi^C$ is $\tau$-stable; this is very false. It would be true for an involution of the based root datum (the distinguished involution of the inner class), which would stabilise everyting mentioned here; in general however although $Phi^C$ is $\tau$-stable (the sum of positive imaginary roots is $\tau$-fixed, and the sum of positive real roots is $\tau$-negated), its subsets of positive and simple roots is not. As a consequence the root |rTau| below need not correspond to any vertex of the Dynkin diagram |dd|. The component of |dd| to whose root system the various |rTau| found for the component |c| belong (the "other half" that we want to exclude) can be characterised as the vertices |j| whose simple roots |rb[j]| are non-orthogonal to some of those roots |rTau|. Hence we exclude for each |rTau| any nodes that are non-orthogonal to it.

Definition at line 1143 of file cartanclass.cpp.

References atlas::bitset::BitSet< n >::andnot(), atlas::bitset::BitSet< n >::begin(), atlas::rootdata::cartanMatrix(), atlas::dynkin::DynkinDiagram::component(), imaginaryRootSet(), involution_image_of_root(), atlas::rootdata::RootDatum::isOrthogonal(), atlas::latticetypes::LatticeMatrix, atlas::rootdata::RootDatum::numRoots(), atlas::dynkin::DynkinDiagram::rank(), atlas::bitset::RankFlags, realRootSet(), atlas::bitset::BitSet< n >::reset(), atlas::rootdata::RootDatum::simpleBasis(), and atlas::rootdata::RootDatum::twoRho().

size_t atlas::cartanclass::CartanClass::numDualRealForms  )  const [inline]
 

Number of weak real forms for the dual group containing the dual Cartan.

Definition at line 753 of file cartanclass.h.

References atlas::cartanclass::Fiber::numRealForms().

Referenced by atlas::interpreter::Cartan_class_value::print().

size_t atlas::cartanclass::CartanClass::numRealFormClasses  )  const [inline]
 

Number of possible squares of strong real forms mod (1+delta)Z.

This is the number of classes in the partition of weak real forms according to Z^delta/[(1+delta)Z].

Definition at line 773 of file cartanclass.h.

References atlas::partition::Partition::classCount(), and atlas::cartanclass::Fiber::realFormPartition().

Referenced by atlas::realredgp_io::printStrongReal().

size_t atlas::cartanclass::CartanClass::numRealForms  )  const [inline]
 

Number of weak real forms containing this Cartan.

This is the number of orbits of the imaginary Weyl group on the adjoint fiber group.

Definition at line 762 of file cartanclass.h.

References atlas::cartanclass::Fiber::numRealForms().

Referenced by atlas::interpreter::Cartan_class_value::print(), atlas::cartan_io::printCartanClass(), and atlas::complexredgp_io::printGradings().

size_t atlas::cartanclass::CartanClass::orbitSize  )  const [inline]
 

Size of the W-conjugacy class of tau.

The number of distinct involutions defining the same stable conjugacy class of Cartan subgroups.

Definition at line 783 of file cartanclass.h.

References atlas::size::SizeType< C >::toUlong().

Referenced by atlas::cartanset::CartanClassSet::block_size(), atlas::cartanset::CartanClassSet::KGB_size(), atlas::cartanset::CartanClassSet::numInvolutions(), atlas::realredgp_io::printBlockStabilizer(), atlas::cartan_io::printCartanClass(), and atlas::realredgp_io::printRealWeyl().

const rootdata::RootSet& atlas::cartanclass::CartanClass::realRootSet  )  const [inline]
 

RootSet flagging the real roots.

That is, a bitmap whose set bits are those corresponding to the numbers (within the list of roots in RootDatum) of the real roots (those roots $\alpha$ with $\tau(\alpha)=-\alpha$).

Definition at line 696 of file cartanclass.h.

References atlas::cartanclass::Fiber::realRootSet(), and atlas::rootdata::RootSet.

Referenced by makeSimpleComplex().

const rootdata::RootList& atlas::cartanclass::CartanClass::simpleComplex  )  const [inline]
 

Roots simple for the "complex factor" of W^tau.

The subgroup W^tau of Weyl group elements commuting with the Cartan involution tau has two obvious (commuting) normal subgroups: the Weyl group W^R of the real (that is, fixed by -tau) roots, and the Weyl group W^iR of the imaginary (that is, fixed by tau) roots. But this is not all of W^: W^tau is a semidirect product of (W^R x W^iR) with a group W^C, the first factor being normal. Here is how to describe W^C.

Write RC (standing for "complex roots") for the roots orthogonal to (a) the sum of positive real roots, and also (b) the sum of positive imaginary roots. It turns out that RC as a root system is the direct sum of two isomorphic root systems RC_0 and RC_1 interchanged by tau. (There is no canonical choice of this decomposition.) The group W^tau includes W^C, the diagonal subgroup of W(RC_0) x W(RC_1). The list d_simpleComplex is the numbers of the simple roots for (a choice of) RC_0. That is, the Weyl group W^C is isomorphic to the Weyl group generated by the reflections corresponding to the numbers in d_simpleComplex.

Definition at line 809 of file cartanclass.h.

Referenced by makeOrbitSize(), atlas::cartan_io::printCartanClass(), and atlas::realweyl::RealWeyl::RealWeyl().

const rootdata::RootList& atlas::cartanclass::CartanClass::simpleImaginary  )  const [inline]
 

RootList holding the numbers of the simple imaginary roots.

These are simple for the subsystem of imaginary roots. They need not be simple in the entire root system.

Definition at line 706 of file cartanclass.h.

References atlas::cartanclass::Fiber::simpleImaginary().

Referenced by makeOrbitSize(), atlas::cartan_io::printCartanClass(), and atlas::realweyl::RealWeyl::RealWeyl().

const rootdata::RootList& atlas::cartanclass::CartanClass::simpleReal  )  const [inline]
 

RootList holding the numbers of the simple real roots.

These are simple for subsystem of real roots. They need not be simple in the entire root system. Since only the _numbers_ are needed, we can take those of the simple imaginary roots in the dual fiber (this depends on the fact that the constructor for a dual root system preserves the numbering of the roots (but exchanging roots and coroots of course). This dependency should be removed in the future, MvL.

Definition at line 721 of file cartanclass.h.

References atlas::cartanclass::Fiber::simpleImaginary().

Referenced by makeOrbitSize(), atlas::cartan_io::printCartanClass(), and atlas::realweyl::RealWeyl::RealWeyl().

const partition::Partition& atlas::cartanclass::CartanClass::strongReal square_class  j  )  const [inline]
 

Partitions of Fiber group cosets corresponding to the possible square classes in Z^delta/[(1+delta)Z].

The Fiber group acts in a simply transitive way on strong real forms (inducing tau on H) with a fixed square in Z^delta. The number of squares that occur (modulo (1+delta)Z) is equal to the number c of classes in the partition d_weakReal. The collection of strong real forms is therefore a collection of c cosets of the fiber group F. Each of these c cosets is partitioned into W_i orbits; these orbits are described by the c partitions in d_strongReal.

Definition at line 825 of file cartanclass.h.

References atlas::cartanclass::Fiber::strongReal().

Referenced by atlas::realredgp_io::printStrongReal().

void atlas::cartanclass::CartanClass::swap CartanClass  ) 
 

Definition at line 152 of file cartanclass.cpp.

References d_dualFiber, d_fiber, d_orbitSize, d_simpleComplex, and atlas::cartanclass::Fiber::swap().

AdjointFiberElt atlas::cartanclass::CartanClass::toAdjoint FiberElt  x  )  const [inline]
 

Returns the image of x in the adjoint fiber group.

Precondition: x is a valid element in the fiber group.

Definition at line 834 of file cartanclass.h.

References atlas::cartanclass::AdjointFiberElt, and atlas::cartanclass::Fiber::toAdjoint().

adjoint_fiber_orbit atlas::cartanclass::CartanClass::toWeakReal fiber_orbit  c,
square_class  j
const [inline]
 

Returns the class number in the weak real form partition of the strong real form #c in real form class rfc.

The pair (c,rfc) is the software representation of an equivalence class of strong real forms (always assumed to induce tau on H). The integer rfc labels an element of Z^delta/[(1+delta)Z], thought of as a possible square value for strong real forms. The fiber group acts simply transitively on strong real forms with square equal to rfc. The integer c labels an orbit of W_i on this fiber group coset; this orbit is the equivalence class of strong real forms.

Definition at line 850 of file cartanclass.h.

References atlas::cartanclass::adjoint_fiber_orbit, and atlas::cartanclass::Fiber::toWeakReal().

Referenced by atlas::realredgp_io::printStrongReal().

const partition::Partition& atlas::cartanclass::CartanClass::weakReal  )  const [inline]
 

Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)].

Definition at line 858 of file cartanclass.h.

References atlas::cartanclass::Fiber::weakReal().


Member Data Documentation

Fiber atlas::cartanclass::CartanClass::d_dualFiber [private]
 

Class of the fiber group for the dual Cartan.

Elements of the dual fiber group are characters of the group of connected components of the real points of H.

Definition at line 607 of file cartanclass.h.

Referenced by swap().

Fiber atlas::cartanclass::CartanClass::d_fiber [private]
 

Class of the fiber group H^{-tau}/[(1-tau)H] for this Cartan.

Elements (very roughly) correspond to possible extensions of the real form tau from H to G.

Definition at line 599 of file cartanclass.h.

Referenced by swap().

size::Size atlas::cartanclass::CartanClass::d_orbitSize [private]
 

Size of the W-conjugacy class of tau.

The number of distinct involutions defining the same stable conjugacy class of Cartan subgroups.

Definition at line 647 of file cartanclass.h.

Referenced by swap().

rootdata::RootList atlas::cartanclass::CartanClass::d_simpleComplex [private]
 

Roots simple for the "complex factor" of W^tau.

The subgroup $W^\tau$ of Weyl group elements commuting with the Cartan involution $\tau$ has two obvious (commuting) normal subgroups: the Weyl group $W^R$ of the real (that is, fixed by $-\tau$) roots, and the Weyl group $W^{iR}$ of the imaginary (that is, fixed by $\tau$) roots. But this is not all of $W^\tau$, as is easily seen in the case of complex groups, where both $W^R$ and $W^{iR}$ are trivial (there are no real or imaginary roots), yet $W$ is a direct sum of two identical factors interchanged by $\tau$, and the actions of diagonal elements of that sum clearly commute with $\tau$. In general there is a group denoted $W^C such that $W^\tau$ is a semidirect product of $W^R * W^{iR}$ (the normal subgroup) with $W^C$. Here is how to describe $W^C$.

Write $RC$ (standing for "complex roots") for the roots orthogonal to both the sum of positive real roots, and the sum of positive imaginary roots (this group depends on the choice of positive roots, but all choices lead to conjugate subgroups). It turns out that $RC$ as a root system is the direct sum of two isomorphic root systems $RC_0$ and $RC_1$ interchanged by $$. (There is no canonical choice of this decomposition.) Now $W^C$ is the set of $$-fixed elements of $W(RC_0) W(RC_1)$, in other words its diagonal subgroup.

In general $W^C$ is not the Weyl group of a root subsystem, but it is isomorphic the the Weyl group of (any choice of) $RC_0$ (or of $RC_1$). We make a choice for $RC_0$, and |d_simpleComplex| lists its simple roots, so that $W^C$ is isomorphic to the Weyl group generated by the reflections corresponding to the roots whose numbers are in |d_simpleComplex|.

Definition at line 639 of file cartanclass.h.

Referenced by swap().


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