atlas  0.6
Classes | Typedefs | Functions | Variables
atlas::lietype Namespace Reference

Classes

struct  InnerClassType
 
struct  Layout
 
struct  LieType
 
struct  SimpleLieType
 

Typedefs

typedef char TypeLetter
 

Functions

std::ostream & operator<< (std::ostream &strm, const SimpleLieType &slt)
 
std::ostream & operator<< (std::ostream &strm, const LieType &lt)
 
std::ostream & operator<< (std::ostream &strm, const InnerClassType &ict)
 
void addCompactInvolution (WeightInvolution &, size_t, size_t, const Permutation &pi)
 
void addDInvolution (WeightInvolution &, size_t, size_t, const Permutation &pi)
 
void addMinusIdentity (WeightInvolution &, size_t, size_t, const Permutation &pi)
 
void addSimpleInvolution (WeightInvolution &, size_t, const SimpleLieType &, TypeLetter, const Permutation &pi)
 
int dispatch (TypeLetter tp, size_t r, size_t min, size_t d, bool lower)
 
LieType dual_type (LieType lt)
 
InnerClassType dual_type (InnerClassType ict, const LieType &lt)
 Returns dual inner class type of |ict| with respect to |lt|. More...
 
Layout dual (const Layout &lo)
 
bool checkRank (const TypeLetter &x, size_t l)
 
WeightInvolution involution (const Layout &lo)
 
WeightInvolution involution (const LieType &lt, const InnerClassType &ict)
 

Variables

const char *const typeLetters = "ABCDEFGT"
 
const char *const innerClassLetters = "Ccesu"
 

Typedef Documentation

Function Documentation

void atlas::lietype::addCompactInvolution ( WeightInvolution m,
size_t  r,
size_t  rs,
const Permutation &  pi 
)

Synopsis: sets the block of size (rs,rs) starting from (r,r) to the identity

Precondition: the block is set to zero.

void atlas::lietype::addDInvolution ( WeightInvolution m,
size_t  r,
size_t  rs,
const Permutation &  pi 
)

Synopsis: flips the last two vectors in the block of size rs starting from (r,r).

Precondition: the block is set to zero.

void atlas::lietype::addMinusIdentity ( WeightInvolution m,
size_t  r,
size_t  rs,
const Permutation &  pi 
)

Synopsis: sets the block of size (rs,rs) starting from (r,r) to minus the identity

Precondition: the block is set to zero.

void atlas::lietype::addSimpleInvolution ( WeightInvolution m,
size_t  r,
const SimpleLieType slt,
TypeLetter  x,
const Permutation &  pi 
)

Synopsis: appends to m, from position (r,r), the fundamental involution corresponding to x in size rs.

bool atlas::lietype::checkRank ( const TypeLetter x,
size_t  l 
)

Synopsis: checks if the rank l is in the valid range for x.

int atlas::lietype::dispatch ( TypeLetter  tp,
size_t  r,
size_t  min,
size_t  d,
bool  lower 
)
inline
Layout atlas::lietype::dual ( const Layout lo)
LieType atlas::lietype::dual_type ( LieType  lt)

brief Returns the dual Lie type of lt. In fact this applies to ordered Dynkin diagrams, whence the distinction between (B2,C2), (F4,f4) and (G2,g2)

InnerClassType atlas::lietype::dual_type ( InnerClassType  ict,
const LieType lt 
)

Returns dual inner class type of |ict| with respect to |lt|.

The result is independent of whether |lt| is the original or dual type

WeightInvolution atlas::lietype::involution ( const Layout lo)

Synopsis: constructs the fundamental involution for the Lie type lt and the inner class ic, in the weight basis for the simply connected group.

Precondition: validity if |lo.d_inner| has been checked

WeightInvolution atlas::lietype::involution ( const LieType lt,
const InnerClassType ict 
)
std::ostream & atlas::lietype::operator<< ( std::ostream &  strm,
const SimpleLieType slt 
)
std::ostream & atlas::lietype::operator<< ( std::ostream &  strm,
const LieType lt 
)
std::ostream & atlas::lietype::operator<< ( std::ostream &  strm,
const InnerClassType ict 
)

Variable Documentation

const char* const atlas::lietype::innerClassLetters = "Ccesu"

Used by the interaction in interactive_lietype.cpp to tell the user what input is expected for an inner class type.

The letter "C" stands for "complex"; it goes with two adjacent equal Lie types, to say that the group has the corresponding complex simple factor. (For example, a Lie type of A4.A4 and inner type C refers to SL(5,C).)

The letter "c" stands for "compact"; it designates the inner class of forms in which rank(G) = rank(K) (so that there is a compact Cartan subgroup.)

The letter "s" stands for "split," and designates the inner class containing the split real form of G.

The letter "u" stands for "unequal rank," and designates an inner class of forms with no compact Cartan and (if possible) no split Cartan. This inner class is allowed only in A_n, n > 1, D_n, and E_6. In types A, E6, and D_{2n+1} the unique unequal rank inner class is split, and the inner class designator "u" is then mapped to "s." (This is important, because the code implementing the Cartan involution in lietype.cpp would not work in types A and E with the designator "u.") In type D_{2n}, the inner class "u" corresponds to the Cartan involution exchanging the two simple roots at the branched end of the Dynkin diagram. (In D_4 there are three involutions fitting this description. The software picks just one of them. Since the three differ by an outer automorphism of D_4, this loss of generality is harmless.) The real forms in the inner class "u" for D_{2n} are the special orthogonal groups of signature (odd,odd).

The letter "e" stands for "equal rank," and is mapped in every case to "c."

const char* const atlas::lietype::typeLetters = "ABCDEFGT"

Used by the interaction in interactive_lietype.cpp to tell the user what input is expected for a Lie type.