#include <cartanclass.h>
Collaboration diagram for atlas::cartanclass::Fiber:

Public Member Functions | |
| Fiber (const rootdata::RootDatum &, const latticetypes::LatticeMatrix &) | |
| Constructs the fiber for the Cartan class determined by the involution |q| of the root datum |rd|. | |
| ~Fiber () | |
| Fiber (const Fiber &) | |
| Fiber & | operator= (const Fiber &) |
| void | swap (Fiber &) |
| const tori::RealTorus & | torus () const |
| Real torus defined over R. | |
| const rootdata::RootSet & | complexRootSet () const |
| RootSet flagging the complex roots. | |
| const rootdata::RootSet & | imaginaryRootSet () const |
| RootSet flagging the imaginary roots. | |
| const rootdata::RootSet & | realRootSet () const |
| RootSet flagging the real roots. | |
| const rootdata::RootList & | simpleImaginary () const |
| RootList holding the numbers of the simple imaginary roots. | |
| const rootdata::RootNbr | simpleImaginary (size_t i) const |
| size_t | imaginaryRank () const |
| rootdata::RootNbr | involution_image_of_root (rootdata::RootNbr j) const |
| Action of the Cartan involution on root #j. | |
| const latticetypes::SmallSubquotient & | adjointFiberGroup () const |
| Fiber group for the adjoint group of G. | |
| size_t | adjointFiberRank () const |
| Dimension of the adjoint fiber group as a Z/2Z vector space. | |
| size_t | adjointFiberSize () const |
| Cardinality of the adjoint fiber group. | |
| const latticetypes::SmallSubquotient & | fiberGroup () const |
| Fiber group. | |
| size_t | fiberRank () const |
| Dimension of the fiber group as a Z/2Z vector space. | |
| size_t | fiberSize () const |
| Cardinality of the fiber group: 2^dimension. | |
| rootdata::RootSet | compactRoots (AdjointFiberElt x) const |
| Returns the compact imaginary roots for element #x in the adjoint fiber. | |
| rootdata::RootSet | noncompactRoots (AdjointFiberElt x) const |
| Returns the noncompact imaginary roots for elt #x in the adjoint fiber (whose bitset is interpreted as an element of the subquotient in |d_adjointFiberGroup|). | |
| gradings::Grading | grading (AdjointFiberElt x) const |
| Flags in gr the noncompact simple imaginary roots for element #x in the adjoint fiber. | |
| AdjointFiberElt | gradingRep (const gradings::Grading &) const |
| Returns an element |x| of the adjoint fiber group such that |grading(x)==gr| (if it exists, it is unique). | |
| const latticetypes::LatticeMatrix & | involution () const |
| Returns the matrix of the involution on the weight lattice of the Cartan subgroup. | |
| latticetypes::SmallBitVector | mAlpha (const rootdata::Root &) const |
Returns the fiber group element corresponding to |cr|. | |
| size_t | minusRank () const |
| Returns the dimension of the -1 eigenspace of the involution. | |
| size_t | numRealForms () const |
| Number of weak real forms containing this Cartan. | |
| size_t | plusRank () const |
| Returns the dimension of the +1 eigenspace of the involution. | |
| const partition::Partition & | realFormPartition () const |
| Partition of the weak real forms according to the corresponding central square classes in Z(G)/[(1+delta)Z(G)]. | |
| square_class | central_square_class (adjoint_fiber_orbit wrf) const |
| Returns the central square class to which a weak real form belongs. | |
| AdjointFiberElt | class_base (square_class c) const |
| Returns the base element for a central square class. | |
| const partition::Partition & | strongReal (square_class j) const |
| Partitions of Fiber group cosets corresponding to the possible square classes in Z^delta/[(1+delta)Z]. | |
| const StrongRealFormRep & | strongRepresentative (adjoint_fiber_orbit wrf) const |
| Representative strong real form for real form #rf. | |
| AdjointFiberElt | toAdjoint (FiberElt) const |
| Returns the image of x in the adjoint fiber group. | |
| adjoint_fiber_orbit | toWeakReal (fiber_orbit c, square_class csc) const |
| Returns the class number in the weak real form partition of the strong real form #c in central square class #csc. | |
| const partition::Partition & | weakReal () const |
| Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)]. | |
Private Member Functions | |
| latticetypes::SmallSubquotient | makeFiberGroup () const |
| returns the group that acts 1-transitively on each subset of the fiber with fixed central square. | |
| latticetypes::SmallSubquotient | makeAdjointFiberGroup (const rootdata::RootDatum &) const |
| Makes the group that acts 1-transitively on the adjoint fiber. | |
| latticetypes::SmallSubspace | gradingGroup (const rootdata::RootDatum &) const |
| Makes the stabilizer of the grading in the adjoint fiber group. | |
| latticetypes::LatticeMatrix | adjointInvolution (const rootdata::RootDatum &) const |
| Returns the matrix of the transformation induced by negative of our involution on the cocharacter lattice for the adjoint group, expressed on the simple coweight basis, which is dual to the simple root basis. | |
| gradings::Grading | makeBaseGrading (rootdata::RootSet &flagged_roots, const rootdata::RootDatum &) const |
| Returns the base grading (all ones) on simple imaginary roots, while flagging all noncompact imaginary roots in |flagged_roots|. | |
| gradings::GradingList | makeGradingShifts (rootdata::RootSetList &all_shifts, const rootdata::RootDatum &) const |
| Computes, for each basis vector of the adjoint fiber group, the grading shifts for simple imaginary roots, and also sets |all_shifts| to flag the grading of the full set of imaginary roots. | |
| bitset::RankFlagsList | adjointMAlphas (const rootdata::RootDatum &) const |
Constructs the s (images of coroots) in the adjoint fiber group, for simple imaginary. | |
| bitset::RankFlagsList | mAlphas (const rootdata::RootDatum &) const |
Constructs the s (images of coroots) in the fiber group, for simple imaginary. | |
| latticetypes::BinaryMap | makeFiberMap (const rootdata::RootDatum &) const |
| Computes the toAdjoint matrix. | |
| partition::Partition | makeWeakReal (const rootdata::RootDatum &) const |
| Computes the partition of the adjoint fiber, whose parts correspond to the weak real forms. | |
| partition::Partition | makeRealFormPartition () const |
| Computes the partition of the weak real forms according to central square classes. | |
| std::vector< partition::Partition > | makeStrongReal (const rootdata::RootDatum &rd) const |
| Computes the strong real form partitions. | |
| std::vector< StrongRealFormRep > | makeStrongRepresentatives () const |
Private Attributes | |
| tori::RealTorus * | d_torus |
| Pointer to a torus defined over R. | |
| InvolutionData | d_involutionData |
| latticetypes::SmallSubquotient | d_fiberGroup |
| Fiber group. | |
| latticetypes::SmallSubquotient | d_adjointFiberGroup |
| Fiber group for the adjoint group of G. | |
| rootdata::RootSet | d_baseNoncompact |
| Flags the noncompact imaginary roots for the base grading among all the roots. | |
| gradings::Grading | d_baseGrading |
| Grading with all simple imaginary roots noncompact. | |
| rootdata::RootSetList | d_noncompactShift |
| RootSet #j flags the imaginary roots whose grading is changed by canonical basis vector #j of the adjoint fiber group. | |
| gradings::GradingList | d_gradingShift |
| Grading #j flags the simple imaginary roots whose grading is changed by canonical basis vector #j in the adjoint fiber group. | |
| latticetypes::BinaryMap | d_toAdjoint |
| Matrix (over Z/2Z) of the map from the fiber group F for G to the fiber group F_ad for G_ad. | |
| partition::Partition | d_weakReal |
| Partition of the adjoint fiber group according to weak real forms. | |
| partition::Partition | d_realFormPartition |
| Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)]. | |
| std::vector< partition::Partition > | d_strongReal |
| Partitions of Fiber group cosets corresponding to the possible square classes in Z^delta/[(1+delta)Z]. | |
| std::vector< StrongRealFormRep > | d_strongRealFormReps |
| Representative strong real form for each weak real form. | |
This is an important but somewhat subtle class. In fact none of the data stored directly describes the mentioned fiber, nor is it relevant here where the "elements of the fiber" really live. There is a "fiber group" (which is a vector space over $Z/2Z$) that acts simply transitively on the fiber, in other words, the fiber is an affine space over $Z/2Z$ with the fiber group as space of translations. After a choice of a base point, the fiber itself can be identified which this fiber group. The way a fiber element manifests itself is via a grading it defines on the imaginary roots; this grading is determined for the entire fiber by giving the "base grading" for the base point, and the "grading shifts" for translations by each of a set of generators of the grading group.
We fix an involutive automorphism tau of the complex torus H, and consider the collection of all strong real forms x of G (which are elements of G semidirect delta) that induce tau on H, modulo the conjugation action of H on the collection. Such a strong real form has square equal to some element z in Z(G)^delta. Changing the element z by (1+delta)Z is innocuous, and there are finitely many possibilities for Z^delta/[(1+delta)Z]. For each fixed value of z, this collection of strong real form representatives in
(modulo H conjugation) has a simply transitive action (left multiplication) of the fiber group H^{-tau}/(1-tau)H, the component group of the complex group H^{-tau} of fixed points of -tau. The fiber group is a Z/2Z vector space that can be realized as a subquotient of the group H(2) of elements of order 2 (or 1) in H.
Equivalence classes of strong real forms (still with a fixed value of z) give a partition of the fiber group (depending on z). These partitions are stored in d_strongReal, and accessed by the function strongReal.
An equivalence class of strong real forms may be labelled by a pair of integers: the second labelling the element z (or rather its coset modulo [(1+delta)Z]), and the first the equivalence class in the fiber group.
Definition at line 119 of file cartanclass.h.
|
||||||||||||
|
Constructs the fiber for the Cartan class determined by the involution |q| of the root datum |rd|.
Definition at line 200 of file cartanclass.cpp. References gradingGroup(), and atlas::latticetypes::LatticeMatrix. Referenced by operator=(). |
|
|
Definition at line 240 of file cartanclass.cpp. Referenced by operator=(). |
|
|
Definition at line 248 of file cartanclass.cpp. |
|
|
Fiber group for the adjoint group of G. Writing H_ad for the complex torus in G_ad, and still writing tau for the Cartan involution, this is F_ad=H_ad^{-tau}/(1-tau)H_ad. The adjoint covering G-->G_ad defines a natural map F-->F_ad, but this map may be neither injective nor surjective. The adjoint fiber is computed from the action of tau on the adjoint lattice of one-parameter subgroups Y_ad just as the fiber group is computed. The lattice Y_ad has as basis the fundamental coweights. Definition at line 374 of file cartanclass.h. References atlas::latticetypes::SmallSubquotient. |
|
|
Dimension of the adjoint fiber group as a Z/2Z vector space.
Definition at line 381 of file cartanclass.h. References atlas::subquotient::Subquotient< dim >::dimension(). Referenced by grading(), atlas::cartanset::makeRepresentative(), makeStrongRepresentatives(), noncompactRoots(), and toAdjoint(). |
|
|
Cardinality of the adjoint fiber group.
Definition at line 388 of file cartanclass.h. References atlas::subquotient::Subquotient< dim >::size(). Referenced by makeWeakReal(), and atlas::cartanclass::specialGrading(). |
|
|
Returns the matrix of the transformation induced by negative of our involution on the cocharacter lattice for the adjoint group, expressed on the simple coweight basis, which is dual to the simple root basis. So we first transform the involution to one on the root basis, and then take the negative transpose. Definition at line 330 of file cartanclass.cpp. References atlas::latticetypes::LatticeMatrix, and atlas::matrix::Matrix< C >::negative_transposed(). |
|
|
Constructs the
The number of bits of each
Algorithm: the cocharacter lattice for the adjoint group is spanned by the simple coweights. To get the coordinates of an element in that basis (which is dual to that of the simple roots), it is enough to pair it with the simple roots. The resulting element for the coroot of a simple imaginary Definition at line 553 of file cartanclass.cpp. References atlas::rootdata::RootDatum::coroot(), d_adjointFiberGroup, imaginaryRank(), atlas::rootdata::RootDatum::semisimpleRank(), simpleImaginary(), atlas::rootdata::RootDatum::simpleRoot(), atlas::latticetypes::SmallBitVector, and atlas::subquotient::Subquotient< dim >::toBasis(). Referenced by makeWeakReal(). |
|
|
Returns the central square class to which a weak real form belongs.
Definition at line 462 of file cartanclass.h. References atlas::cartanclass::square_class. Referenced by atlas::cartanset::CartanClassSet::dualFiberSize(), atlas::cartanset::CartanClassSet::fiberSize(), atlas::kgb::KGBHelp::KGBHelp(), makeStrongRepresentatives(), and atlas::kgb::KGBHelp::naive_seed(). |
|
|
Returns the base element for a central square class.
Definition at line 470 of file cartanclass.h. References atlas::cartanclass::AdjointFiberElt, and atlas::partition::Partition::classRep(). Referenced by makeStrongRepresentatives(), atlas::kgb::square_class_grading_offset(), and toWeakReal(). |
|
|
Returns the compact imaginary roots for element #x in the adjoint fiber.
Definition at line 843 of file cartanclass.cpp. References atlas::bitmap::BitMap::andnot(), imaginaryRootSet(), noncompactRoots(), and atlas::rootdata::RootSet. Referenced by atlas::cartanclass::compactTwoRho(), and atlas::realweyl::RealWeyl::RealWeyl(). |
|
|
RootSet flagging the complex roots. That is, a bitmap whose set bits are those corresponding to the numbers (within the list of roots in RootDatum) of the complex roots (those roots alpha with tau(alpha) equal neither to alpha nor to -alpha). Definition at line 310 of file cartanclass.h. References atlas::cartanclass::InvolutionData::complex_roots(), and atlas::rootdata::RootSet. |
|
|
Fiber group.
Definition at line 396 of file cartanclass.h. References atlas::latticetypes::SmallSubquotient. Referenced by atlas::kgb::KGBHelp::backtrack_seed(), and atlas::kgb::KGBHelp::naive_seed(). |
|
|
Dimension of the fiber group as a Z/2Z vector space.
Definition at line 403 of file cartanclass.h. References atlas::subquotient::Subquotient< dim >::dimension(). Referenced by atlas::kgb::KGBHelp::backtrack_seed(), gradingRep(), makeStrongRepresentatives(), atlas::kgb::KGBHelp::naive_seed(), atlas::cartan_io::printCartanClass(), atlas::rGenerators(), and toAdjoint(). |
|
|
Cardinality of the fiber group: 2^dimension.
Definition at line 410 of file cartanclass.h. References atlas::subquotient::Subquotient< dim >::size(). Referenced by atlas::cartan_io::printCartanClass(). |
|
|
Flags in gr the noncompact simple imaginary roots for element #x in the adjoint fiber. Precondition: |x| represents an element of the subquotient in |d_adjointFiberGroup|. Definition at line 857 of file cartanclass.cpp. References adjointFiberRank(), atlas::bitvector::combination(), d_gradingShift, atlas::gradings::Grading, and atlas::bitset::RankFlags. Referenced by atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::correlateForms(), atlas::kgb::KGBHelp::grading_seed(), atlas::cartanclass::CartanClass::isMostSplit(), and atlas::cartan_io::printGradings(). |
|
|
Makes the stabilizer of the grading in the adjoint fiber group. Explanation: each real form defines a grading of the imaginary root system, obtained by pairing with the simple imaginary roots. It should be the case that the grading entirely defines the real form, i.e., the corresponding W_i-orbit. However, this doesn't mean that the map from real form parameters to gradings has to be injective. It could a priori be the case that some real form parameters in the same W_i-orbit give identical gradings of the imaginary root system; this would mean that the nonzero adjoint fiber element that transforms one into the other gives a null pairing with every imaginary root. It seems that this never happens, whence the constructor for |Fiber| just calls this function to |assert| that the result is trivial. Definition at line 379 of file cartanclass.cpp. References atlas::latticetypes::BinaryMap, atlas::bitvector::BitMatrix< dim >::kernel(), atlas::latticetypes::scalarProduct(), atlas::bitvector::BitVector< dim >::set(), atlas::latticetypes::SmallBitVector, atlas::latticetypes::SmallBitVectorList, atlas::latticetypes::SmallSubspace, and atlas::subquotient::Subquotient< dim >::space(). Referenced by Fiber(). |
|
|
Returns an element |x| of the adjoint fiber group such that |grading(x)==gr| (if it exists, it is unique). Algorithm: the grading must be reached from the base grading (with all ones) by adding a linear combination of grading shifts. So we set up and solve the system asking for the appropriate linear combination of grading shifts. Definition at line 875 of file cartanclass.cpp. References atlas::cartanclass::AdjointFiberElt, d_baseGrading, d_gradingShift, fiberRank(), atlas::bitvector::firstSolution(), atlas::gradings::Grading, imaginaryRank(), atlas::bitset::RankFlags, atlas::latticetypes::SmallBitVector, atlas::latticetypes::SmallBitVectorList, and atlas::bitset::BitSet< n >::to_ulong(). |
|
|
Definition at line 351 of file cartanclass.h. Referenced by adjointMAlphas(), atlas::kgb::KGBHelp::grading_seed(), gradingRep(), makeWeakReal(), and mAlphas(). |
|
|
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 321 of file cartanclass.h. References atlas::cartanclass::InvolutionData::imaginary_roots(), and atlas::rootdata::RootSet. Referenced by compactRoots(), atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::correlateForms(), atlas::cartanclass::CartanClass::imaginaryRootSet(), and atlas::cartanclass::toMostSplit(). |
|
|
Returns the matrix of the involution on the weight lattice of the Cartan subgroup. NOTE: this is not inlined to avoid a dependency upon tori.h in the .h file. Definition at line 898 of file cartanclass.cpp. References d_torus, atlas::tori::RealTorus::involution(), and atlas::latticetypes::LatticeMatrix. Referenced by atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::distinguished(), atlas::cartanset::CartanClassSet::dualDistinguished(), atlas::cartanclass::CartanClass::involution(), and makeFiberGroup(). |
|
|
Action of the Cartan involution on root #j.
Definition at line 358 of file cartanclass.h. References atlas::cartanclass::InvolutionData::root_involution(). Referenced by atlas::cartanclass::CartanClass::involution_image_of_root(). |
|
|
Makes the group that acts 1-transitively on the adjoint fiber.
Algorithm: this is the subquotient $V_+ + V_-/V_+$ for the negative transpose of the involution induced by Definition at line 353 of file cartanclass.cpp. References atlas::tori::dualPi0(), atlas::subquotient::Subquotient< dim >::rank(), and atlas::latticetypes::SmallSubquotient. |
|
||||||||||||
|
Returns the base grading (all ones) on simple imaginary roots, while flagging all noncompact imaginary roots in |flagged_roots|. Algorithm: for the noncompact roots, express imaginary roots in terms of the simple ones, and see if the sum of coordinates is even. Definition at line 427 of file cartanclass.cpp. References atlas::gradings::Grading, atlas::rootdata::RootSet, and atlas::bitvector::BitMatrix< dim >::set_mod2(). |
|
|
returns the group that acts 1-transitively on each subset of the fiber with fixed central square. Explanation: the value returned is the subquotient $V_+ + V_-/V_+$ as constructed by |toridualPi0|, but for the negative transpose of our involution. Note that only the involution is used, not the root datum. Definition at line 312 of file cartanclass.cpp. References atlas::tori::dualPi0(), involution(), and atlas::latticetypes::SmallSubquotient. |
|
|
Computes the toAdjoint matrix. Explanation: this is the matrix of the natural map from the fiber group to the adjoint fiber group. Such a map exists because (1) the root lattice is a sublattice of the weight lattice, so there is a restriction map from the coweight lattice $X^*$ (dual to the weight lattice) to the lattice $Y^*$ spanned by the fundamental coweights (dual to the root lattice), and (2) this map sends $X^*_+$ to $Y^*_+$ and $X^*_-$ to $Y^*_-$ and of course $2X^*$ to $2Y^*$, so it induces a map on the respective subquotients of the form $(V_+ + V_-)/V_-$, where $V_+$ is the modulo $2X^*$ image of $X^*_+$ (or similarly for $Y^*_-$). While the map $X^* Y^*$ is injective (only) in the semisimple case, little can be said about the induced map. The above argument shows that the vector |v| computed below of scalar products of a generator of the fiber group with simple roots can be validly incorporated (by calling |d_adjointFiberGroup.toBasis|) into the adjoint fiber group; notably, it represents an element of $V_+ + V_-$ in $Y^* / 2Y^*$. (without space that formula would have ended our comment!) Definition at line 593 of file cartanclass.cpp. References atlas::bitset::BitSet< n >::begin(), atlas::rootdata::RootDatum::beginSimpleRoot(), atlas::latticetypes::BinaryMap, d_adjointFiberGroup, d_fiberGroup, atlas::subquotient::Subquotient< dim >::dimension(), atlas::rootdata::RootDatum::endSimpleRoot(), atlas::bitset::RankFlags, atlas::rootdata::RootDatum::semisimpleRank(), atlas::bitvector::BitVector< dim >::set(), atlas::latticetypes::SmallBitVector, atlas::latticetypes::SmallBitVectorList, atlas::subquotient::Subquotient< dim >::space(), atlas::subquotient::Subquotient< dim >::support(), and atlas::subquotient::Subquotient< dim >::toBasis(). |
|
||||||||||||
|
Computes, for each basis vector of the adjoint fiber group, the grading shifts for simple imaginary roots, and also sets |all_shifts| to flag the grading of the full set of imaginary roots. Explanation: component |j| of the result contains the grading on the set of simple imaginary roots given by the canonical basis vector |j| of the adjoint fiber group. This is not the grading of a real form, but the amount by which the grading changes by the action of that basis vector, whence the name grading shift. Similarly, |all_shifts[j]| is set to contain the action on all imaginary roots. With these data and the "base" grading corresponding to the real form parameter numbered $0$, it is easy to compute the grading for an arbitrary real form parameter (as represented by the element of the adjoint fiber group moving the base element there). Algorithm: the basis for the adjoint fiber group is expressed in the reduction modulo 2 of the simple coweight basis. Therefore, in order to apply to a root, it is enough to express that root in the simple root basis, and do the scalar product mod 2. Note that in contrast to |makeBaseGrading| above, and in spite of the reuse of the same names, we express in the (full) simple root basis here, not on the simple imaginary root basis. Definition at line 471 of file cartanclass.cpp. References atlas::bitset::BitSet< n >::begin(), atlas::gradings::Grading, atlas::bitset::RankFlags, atlas::rootdata::RootSet, atlas::latticetypes::scalarProduct(), atlas::bitset::BitSet< n >::set(), and atlas::latticetypes::SmallBitVectorList. |
|
|
Computes the partition of the weak real forms according to central square classes.
Explanation: while weak real forms correspond to orbits in the adjoint fiber, they can be grouped into even coarser "central square classes", defined by the condition that the corresponding orbits belong to the same coset in the adjoint fiber (group) by the image (under |toAdjoint|) of the fiber group. The imaginary Weyl group $W_{im}$ acts on both the fiber group and the adjoint fiber group, and |toAdjoint| intertwines these actions, so that an orbit defining a weak real form is always contained in a single coset of the image of |toAdjoint|; therefore we really have a partition of the set of weak real forms. Its parts are called central square classes, since for these weak real forms any Algorithm: we compute the quotient of the adjoint fiber group by the fiber group as a |Subquotient| object whose |space()| is the whole adjoint fiber group. Its |toBasis| method will map each weak real form to a vector on the basis of the (sub)quotient whose |to_ulong()| value will be used to characterise the central square class. Since we want to preserve this numbering when construting the resulting partition (rather than reordering by smallest element), we call the constructor with a |tags::UnnormalizedTag| argument. Definition at line 669 of file cartanclass.cpp. References atlas::partition::Partition::classCount(), atlas::partition::Partition::classRep(), d_adjointFiberGroup, d_toAdjoint, d_weakReal, atlas::subquotient::Subquotient< dim >::dimension(), atlas::bitvector::BitMatrix< dim >::image(), atlas::matrix::initBasis(), numRealForms(), atlas::bitset::RankFlags, atlas::partition::Partition::size(), atlas::latticetypes::SmallBitVector, atlas::latticetypes::SmallBitVectorList, and atlas::latticetypes::SmallSubquotient. |
|
|
Computes the strong real form partitions. In the software, strong real forms are represented by orbits of "fiber elements" under the imaginary Weyl group, where the fiber elements live in a union of affine spaces over $Z/2Z$, one for each central square class. Each of these affine spaces has the fiber group as associated vector space, but the action of the imaginary Weyl group is different for each one. Therefore there is a separate partition of the fiber group for each central square class of weak real forms (as determined by |makeRealFormPartition|). The function |makeStrongReal| computes all of these partitions. Method: We traverse the central square classes of |d_realFormPartition|; for each class we choose a weak real form |rf| in it, which itself labels an orbit on the adjoint fiber, and then choose a point |y| in that orbit. Altogether, the values of |y| are just coset representatives of the image of the |toAdjoint| map in the adjoint fiber group. The affine space of fiber elements for this class of strong real forms will map to that coset by a map the sends the base point (the one represented by the number $0$) to |y|, and which induces the linear map |toAdjoint| on the associated vector spaces. It follows that we must associate to the base point the same grading as to |y|, and this determines the action of the imaginary Weyl group on this affine space of fiber elements (together with the fact that the grading shift for any vector $v$ in the fiber group is to one associated to $toAdjoint(v)$). The orbits of this action then define the strong real form partition associated to this central square class. The grading defined by |y| is {not} independent of the choices of |rf| and |y|. However, if $y'$ is another possibility for |y|, then by construction there is an element $d$ of the fiber group such that $y'=y+toAdjoint[d]$, and the partitions defined by the gradings of $y$ and $y'$ will differ by translation in the fiber group over |d|, in other words they correspond to another choice of a base point in the affine space. Definition at line 736 of file cartanclass.cpp. References atlas::bitvector::combination(), atlas::gradings::Grading, atlas::partition::makeOrbits(), and atlas::cartanclass::square_class. |
|
|
|
Computes the partition of the adjoint fiber, whose parts correspond to the weak real forms.
Algorithm: we construct the FiberAction object corresponding to the action of the imaginary Weyl group on the adjoint fiber, and then call |makeOrbits| to make the partition. For the fiber action we can use the base grading and the grading shifts "as is", while the fiber group elements Definition at line 628 of file cartanclass.cpp. References adjointFiberSize(), adjointMAlphas(), d_baseGrading, d_gradingShift, imaginaryRank(), and atlas::partition::makeOrbits(). |
|
|
Returns the fiber group element
Precondition: |cr| a weight vector for an imaginary coroot Definition at line 909 of file cartanclass.cpp. References d_fiberGroup, atlas::latticetypes::SmallBitVector, and atlas::subquotient::Subquotient< dim >::toBasis(). Referenced by atlas::rGenerators(). |
|
|
Constructs the
The effective number of bits of each We take the coroots corresponding to the imaginary simple roots, which in the root datum are already expressed in the basis of the coweight lattice $X^*$ dual to the weight lattice; we reduce the coordinates modulo 2 (this is hidden in the call of |toBasis|, which converts its argument to a |SmallBitVector| first), and interpret the result in the subquotient |d_fiberGroup| of $X^* / 2X^*$. Definition at line 527 of file cartanclass.cpp. References atlas::rootdata::RootDatum::coroot(), d_fiberGroup, imaginaryRank(), simpleImaginary(), and atlas::subquotient::Subquotient< dim >::toBasis(). |
|
|
Returns the dimension of the -1 eigenspace of the involution. NOTE: this is not inlined to avoid a dependency upon tori.h in the .h file. Definition at line 926 of file cartanclass.cpp. References d_torus, and atlas::tori::RealTorus::minusRank(). |
|
|
Returns the noncompact imaginary roots for elt #x in the adjoint fiber (whose bitset is interpreted as an element of the subquotient in |d_adjointFiberGroup|).
Definition at line 828 of file cartanclass.cpp. References adjointFiberRank(), d_noncompactShift, atlas::bitset::RankFlags, and atlas::rootdata::RootSet. Referenced by compactRoots(), atlas::cartanset::makeRepresentative(), atlas::cartanset::CartanClassSet::noncompactPosRootSet(), atlas::cartanset::CartanClassSet::noncompactRoots(), atlas::orthogonalMAlpha(), atlas::cartanclass::specialGrading(), atlas::kgb::square_class_grading_offset(), and atlas::cartanclass::toMostSplit(). |
|
|
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 442 of file cartanclass.h. References atlas::partition::Partition::classCount(). Referenced by atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::correlateForms(), makeRealFormPartition(), makeStrongRepresentatives(), atlas::cartanset::CartanClassSet::numDualRealForms(), atlas::cartanclass::CartanClass::numDualRealForms(), atlas::cartanset::CartanClassSet::numRealForms(), and atlas::cartanclass::CartanClass::numRealForms(). |
|
|
Synopsis: assignment operator. Use copy constructor. This requires a check for self-assignment, or the source would be destroyed! Definition at line 264 of file cartanclass.cpp. |
|
|
Returns the dimension of the +1 eigenspace of the involution. NOTE: this is not inlined to avoid a dependency upon tori.h in the .h file. Definition at line 914 of file cartanclass.cpp. References d_torus, and atlas::tori::RealTorus::plusRank(). |
|
|
Partition of the weak real forms according to the corresponding central square classes in Z(G)/[(1+delta)Z(G)]. A weak real form (always containing our fixed real torus) is an orbit of W_i on the adjoint fiber group. Definition at line 455 of file cartanclass.h. Referenced by atlas::cartanclass::CartanClass::numRealFormClasses(). |
|
|
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 332 of file cartanclass.h. References atlas::cartanclass::InvolutionData::real_roots(), and atlas::rootdata::RootSet. Referenced by atlas::cartanclass::CartanClass::realRootSet(). |
|
|
Definition at line 347 of file cartanclass.h. References atlas::cartanclass::InvolutionData::imaginary_basis(). |
|
|
RootList holding the numbers of the simple imaginary roots. These are simple for the positive imaginary roots given by the (based) RootDatum. They need not be simple in the entire root system. Definition at line 344 of file cartanclass.h. References atlas::cartanclass::InvolutionData::imaginary_basis(). Referenced by adjointMAlphas(), atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::correlateForms(), atlas::kgb::KGBHelp::grading_seed(), mAlphas(), atlas::cartan_io::printGradings(), atlas::cartanclass::CartanClass::simpleImaginary(), and atlas::cartanclass::CartanClass::simpleReal(). |
|
|
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 487 of file cartanclass.h. Referenced by atlas::kgb::KGBHelp::backtrack_seed(), atlas::cartanset::CartanClassSet::dualFiberSize(), atlas::cartanset::CartanClassSet::fiberSize(), and atlas::cartanclass::CartanClass::strongReal(). |
|
|
Representative strong real form for real form #rf. A StrongRealFormRep is a pair of numbers. The second indexes the value of the square of the strong real form in Z^delta/[(1+delta)Z]. The first indexes a W_im orbit on the corresponding coset of the fiber group. Definition at line 499 of file cartanclass.h. References atlas::cartanclass::StrongRealFormRep. Referenced by atlas::cartanset::CartanClassSet::dualFiberSize(), atlas::cartanset::CartanClassSet::fiberSize(), and atlas::kgb::KGBHelp::naive_seed(). |
|
|
|
Returns the image of x in the adjoint fiber group. This map is induced by the inclusion of the root lattice in the character lattice Definition at line 944 of file cartanclass.cpp. References atlas::cartanclass::AdjointFiberElt, adjointFiberRank(), atlas::bitvector::BitMatrix< dim >::apply(), d_toAdjoint, atlas::bitvector::BitVector< dim >::data(), fiberRank(), atlas::bitset::RankFlags, atlas::latticetypes::SmallBitVector, and atlas::bitset::BitSet< n >::to_ulong(). Referenced by atlas::cartanclass::CartanClass::toAdjoint(), and toWeakReal(). |
|
|
Real torus defined over R. Represented as the lattice Z^n endowed with an involutive automorphism (represented by its n x n integer matrix). Definition at line 298 of file cartanclass.h. Referenced by atlas::cartan_io::printCartanClass(). |
|
||||||||||||
|
Returns the class number in the weak real form partition of the strong real form #c in central square class #csc.
The pair (c,rfc) is the software representation of an equivalence class of strong real forms (always assumed to induce This function computes the weak real form (W_i orbit on the adjoint fiber group) corresponding to (c,csc). First, |csc| also labels a coset of the fiber group image in the adjoint fiber group. The coset |csc| is a union of weak real forms (W_i orbits on the adjoint fiber group). The integer brf indexes the base W_i orbit on csc, and "by" is the base adjoint fiber group element in brf. The fiber group coset corresponding to csc is labelled by the fiber group itself using a base point with image by. The integer x is a representative in the fiber group of the orbit csc. Its image in the adjoint fiber group is y. Translating y by the base point "by" gives an adjoint fiber group element representing the weak real form we want. Definition at line 984 of file cartanclass.cpp. References atlas::cartanclass::adjoint_fiber_orbit, atlas::cartanclass::AdjointFiberElt, class_base(), d_strongReal, d_weakReal, and toAdjoint(). Referenced by atlas::cartanclass::CartanClass::toWeakReal(). |
|
|
Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)].
Definition at line 521 of file cartanclass.h. Referenced by atlas::cartanset::CartanClassSet::correlateDualForms(), atlas::cartanset::CartanClassSet::correlateForms(), atlas::cartanset::CartanClassSet::dualRepresentative(), atlas::kgb::KGBHelp::grading_seed(), atlas::cartanclass::CartanClass::isMostSplit(), atlas::cartanset::CartanClassSet::noncompactRoots(), atlas::cartan_io::printFiber(), atlas::cartan_io::printGradings(), atlas::cartanset::CartanClassSet::representative(), atlas::cartanclass::specialGrading(), atlas::cartanclass::toMostSplit(), atlas::cartanset::CartanClassSet::updateStatus(), and atlas::cartanclass::CartanClass::weakReal(). |
|
|
Fiber group for the adjoint group of G. Writing H_ad for the complex torus in G_ad, and still writing tau for the Cartan involution, this is F_ad=H_ad^{-tau}/(1-tau)H_ad. The adjoint covering G-->G_ad defines a natural map F-->F_ad, but this map may be neither injective nor surjective. The adjoint fiber is computed from the action of tau on the adjoint lattice of one-parameter subgroups Y_ad just as the fiber group is computed. The lattice Y_ad has as basis the fundamental coweights. Definition at line 185 of file cartanclass.h. Referenced by adjointMAlphas(), makeFiberMap(), makeRealFormPartition(), and swap(). |
|
|
Grading with all simple imaginary roots noncompact. The grading is a RankFlags; that is, a BitSet<RANK_MAX>. It flags the noncompact imaginary roots among the simple imaginary roots; so all the bits up to imaginaryRank are 1. Definition at line 200 of file cartanclass.h. Referenced by gradingRep(), makeWeakReal(), and swap(). |
|
|
Flags the noncompact imaginary roots for the base grading among all the roots.
Definition at line 191 of file cartanclass.h. Referenced by swap(). |
|
|
Fiber group.
In terms of the complex torus $H$ and the Cartan involution Recall that the group of real points $H(R)$ is a product of $p$ unit circle groups, $q$ groups $R^$, and $r$ groups $C^$. It is easy to see that $F=(/2)^p$, with one factor $/2$ coming from each circle.
The fiber group is represented as a subquotient of the group $H(2)$ of elements of order 2 (or 1) in the torus. Write $Y$ for the lattice of coweights of $H$; then one has natural isomorphisms $H(2)=(1/2)Y/Y=Y/2Y$. The Cartan involution
Because $H$ is the product (not direct) of the connected groups
The larger group Definition at line 171 of file cartanclass.h. Referenced by makeFiberMap(), mAlpha(), mAlphas(), and swap(). |
|
|
Grading #j flags the simple imaginary roots whose grading is changed by canonical basis vector #j in the adjoint fiber group.
Definition at line 213 of file cartanclass.h. Referenced by grading(), gradingRep(), makeWeakReal(), and swap(). |
|
|
Definition at line 131 of file cartanclass.h. Referenced by swap(). |
|
|
RootSet #j flags the imaginary roots whose grading is changed by canonical basis vector #j of the adjoint fiber group.
Definition at line 206 of file cartanclass.h. Referenced by noncompactRoots(), and swap(). |
|
|
Partition of the weak real forms according to the corresponding classes in Z(G)^delta/[(1+delta)Z(G)]. Constructed by the function realFormPartition in the Helper class of the unnamed namespace of cartanclass.cpp; details in that documentation. Definition at line 247 of file cartanclass.h. Referenced by swap(). |
|
|
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 partitions into orbits are described by the c partitions in d_strongReal. Definition at line 261 of file cartanclass.h. Referenced by swap(), and toWeakReal(). |
|
|
Representative strong real form for each weak real form. A StrongRealFormRep is a pair of numbers. The second indexes the value of the square of the strong real form in Z^delta/[(1+delta)Z]. The first indexes a W_im orbit on the corresponding coset of the fiber group. Definition at line 271 of file cartanclass.h. Referenced by swap(). |
|
|
Matrix (over Z/2Z) of the map from the fiber group F for G to the fiber group F_ad for G_ad. Although the map is induced by Y/2Y-->Y_ad/2Y_ad, whose matrix is the reduction mod 2 of the matrix of Y-->Y_ad, that is _not_ the matrix in d_toAdjoint, which must take into account the subquotients at both sides. Each subquotient F and F_ad is equipped (by the row reduction algorithms in Subquotient) with a distinguished basis, and what is recorded in d_toAdjoint is the (dim F_ad) x (dim F) matrix with respect to those bases. Definition at line 226 of file cartanclass.h. Referenced by makeRealFormPartition(), makeStrongRepresentatives(), swap(), and toAdjoint(). |
|
|
Pointer to a torus defined over R. Represented as the lattice Z^n endowed with an involutive automorphism (represented by its n x n integer matrix). Definition at line 129 of file cartanclass.h. Referenced by involution(), minusRank(), plusRank(), and swap(). |
|
|
Partition of the adjoint fiber group according to weak real forms. The imaginary Weyl group acts on the adjoint fiber group; the partition is by orbits of this action. It is constructed by the function weakReal in the Helper class of the unnamed namespace of cartanclass.cpp. Definition at line 237 of file cartanclass.h. Referenced by makeRealFormPartition(), makeStrongRepresentatives(), swap(), and toWeakReal(). |
1.3.9.1