atlas  0.6
Public Member Functions | Private Attributes | List of all members
atlas::tori::RealTorus Class Reference

Represents a torus defined over R. More...

#include <tori.h>

Collaboration diagram for atlas::tori::RealTorus:
Collaboration graph
[legend]

Public Member Functions

 RealTorus (const WeightInvolution &)
 
 RealTorus (const RealTorus &, tags::DualTag)
 
const WeightInvolutioninvolution () const
 
size_t rank () const
 
size_t complexRank () const
 
size_t compactRank () const
 
size_t splitRank () const
 
size_t plusRank () const
 
size_t minusRank () const
 
size_t twoRank () const
 
bool isCompact () const
 
bool isSplit () const
 
BinaryMap componentMap (const LatticeMatrix &, const RealTorus &) const
 
const WeightListplusLattice () const
 
const WeightListminusLattice () const
 
void toPlus (Weight &dest, const Weight &source) const
 
void toMinus (Weight &dest, const Weight &source) const
 
const SmallSubquotienttopology () const
 

Private Attributes

size_t d_rank
 
size_t d_complexRank
 
WeightInvolution d_involution
 
WeightList d_plus
 
WeightList d_minus
 
LatticeMatrix d_toPlus
 
LatticeMatrix d_toMinus
 
SmallSubquotient d_topology
 

Detailed Description

Represents a torus defined over R.

This is equivalent to the datum of a lattice with an involution; to be consistent with the rest of the program, we use the Cartan involution tau which is the negative of the Galois involution on the character lattice.

The fundamental data are the rank d_rank (allowing us to identify the character lattice X with d_rank-tuples of integers) and the integer matrix d_involution of tau.

The software constructs two sublattices X_+ and X_-, the +1 and -1 eigenspaces for the involution. The datum d_plus is a basis of X_+, and d_minus is a basis of X_-. Both X_+ and X_- are supplementable in X, but in general X is not equal to the direct sum X_+ + X_-.

The most delicate invariant we shall have to deal with is the component group of the group of real points of T. This is an elementary abelian 2-group; we shall rather consider its dual dpi0(T). To describe its rank is fairly easy. Indeed, T may be decomposed as a product of compact, split and complex factors; denote r_u, r_s and r_c the number of factors of each type, so that the rank n of T is r_u + r_s + 2 r_c, then the rank of the component group is r_s. We have moreover : rk(X_+) = r_u + r_c; rk(X_-) = r_s + r_c. Denote V = X/2X, a vector space over the two-element field F_2, and denote V_+,V_- the images of X_+, X_- in V. Then it is not hard to show that r_c = dim(V_+ cap V_-), which allows computing r_s once rk(X_-) is known. One may prove that V_+- := V_+ cap V_- is also the image of tau - 1 in V.

It is a little bit harder to describe dpi0(T) functorially as a vector space. The group T(2)(R) of real points of the group of elements of order 2 in T is in natural duality with V/V_+-. There is a natural surjection from T(2)(R) to pi0(T), so dpi0(T) is a sub-vector space of V/V_+-, which may in fact be described as the image of V_-. This is how we will consider it.

Constructor & Destructor Documentation

atlas::tori::RealTorus::RealTorus ( const WeightInvolution i)
explicit
atlas::tori::RealTorus::RealTorus ( const RealTorus T,
tags::DualTag   
)

Member Function Documentation

size_t atlas::tori::RealTorus::compactRank ( ) const
inline
size_t atlas::tori::RealTorus::complexRank ( ) const
inline
BinaryMap atlas::tori::RealTorus::componentMap ( const LatticeMatrix m,
const RealTorus T_dest 
) const
const WeightInvolution& atlas::tori::RealTorus::involution ( ) const
inline
bool atlas::tori::RealTorus::isCompact ( ) const
inline
bool atlas::tori::RealTorus::isSplit ( ) const
inline
const WeightList& atlas::tori::RealTorus::minusLattice ( ) const
inline
size_t atlas::tori::RealTorus::minusRank ( ) const
inline
const WeightList& atlas::tori::RealTorus::plusLattice ( ) const
inline
size_t atlas::tori::RealTorus::plusRank ( ) const
inline
size_t atlas::tori::RealTorus::rank ( ) const
inline
size_t atlas::tori::RealTorus::splitRank ( ) const
inline
void atlas::tori::RealTorus::toMinus ( Weight dest,
const Weight source 
) const
inline
void atlas::tori::RealTorus::toPlus ( Weight dest,
const Weight source 
) const
inline
const SmallSubquotient& atlas::tori::RealTorus::topology ( ) const
inline
size_t atlas::tori::RealTorus::twoRank ( ) const
inline

Member Data Documentation

size_t atlas::tori::RealTorus::d_complexRank
private

number of C^x-factors

WeightInvolution atlas::tori::RealTorus::d_involution
private

matrix of the Cartan involution

WeightList atlas::tori::RealTorus::d_minus
private

basis for -1 eigenlattice of the Cartan involution

WeightList atlas::tori::RealTorus::d_plus
private

basis for +1 eigenlattice of the Cartan involution

size_t atlas::tori::RealTorus::d_rank
private

rank of torus

LatticeMatrix atlas::tori::RealTorus::d_toMinus
private

coordinate transformation from standard basis of $X$ to basis |d_minus| of $X_-$; should be applied only to elements of $X_-$

LatticeMatrix atlas::tori::RealTorus::d_toPlus
private

coordinate transformation from standard basis of $X$ to basis |d_plus| of $X_+$; should be applied only to elements of $X_+$

SmallSubquotient atlas::tori::RealTorus::d_topology
private

dual component group of real torus (a vector space over $Z/2Z$), realised as the subquotient $(V_+ + V_-)/V_+$ of the $Z/2Z$ vector space $X/2X$


The documentation for this class was generated from the following files: