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

/home/r0/dav/atlas.dir/atlas3/sources/structure/latticetypes_fwd.h

Go to the documentation of this file.
00001 /*!
00002 \file
00003 \brief Forward declarations of classes and types for namespace latticetypes.
00004 
00005 A LatticeCoeff is an integer.  A LatticeElt is a vector of
00006 LatticeCoeff's; that is, an element of Z^n.  A Weight is a LatticeElt.
00007 The LatticeElt's now used are mostly of dimension RANK_MAX (now set at
00008 16).
00009 
00010 A RatLatticeElt is a class corresponding to an element of Q^n.
00011 */
00012 /*
00013   This is latticetypes_fwd.h
00014 
00015   Copyright (C) 2004,2005 Fokko du Cloux
00016   part of the Atlas of Reductive Lie Groups
00017 
00018   See file main.cpp for full copyright notice
00019 */
00020 
00021 #ifndef LATTICETYPES_FWD_H  /* guard against multiple inclusions */
00022 #define LATTICETYPES_FWD_H
00023 
00024 #include <vector>
00025 
00026 #include "bitvector_fwd.h"
00027 #include "matrix_fwd.h"
00028 #include "subquotient_fwd.h"
00029 
00030 #include "constants.h"
00031 
00032 /******** forward type declarations ******************************************/
00033 
00034 namespace atlas {
00035 
00036 namespace latticetypes {
00037 
00038   /*!
00039   \brief
00040   A LatticeElt is a vector of LatticeCoeff's; that is, an element of
00041   Z^n.
00042   */
00043   typedef int LatticeCoeff;
00044 
00045   const LatticeCoeff ZeroCoeff = 0;
00046   const LatticeCoeff OneCoeff = 1;
00047 
00048 
00049   /*!
00050   \brief
00051   A LatticeElt is a vector of LatticeCoeff's; that is, an element of
00052   Z^n.
00053   */
00054   typedef std::vector<LatticeCoeff> LatticeElt;
00055 
00056   /*!
00057   \brief
00058   This type of list of integers is used as the list of invariant
00059   factors in a Smith normal form.
00060   */
00061   typedef std::vector<LatticeCoeff> CoeffList;
00062   class RatLatticeElt;
00063 
00064   typedef LatticeElt Weight;
00065   typedef RatLatticeElt RatWeight;
00066 
00067   typedef std::vector<Weight> WeightList;
00068   typedef std::vector<RatWeight> RatWeightList;
00069 
00070   typedef matrix::Matrix<LatticeCoeff> LatticeMatrix;
00071 
00072   /*!
00073   \brief Element of (Z/2Z)^RANK_MAX.
00074 
00075   Used to represent an element of a component group of a real torus;
00076   this is why it turns up in connection with lattices.
00077   */
00078   typedef bitvector::BitVector<constants::RANK_MAX> Component;
00079 
00080   /* In Fokko's code, the type |Component| hardly ever represents an element
00081      of the component group of a real torus (or other variety). For this
00082      reason I've introduced a more neutral name to replace such uses. MvL */
00083 
00084   typedef bitvector::BitVector<constants::RANK_MAX> SmallBitVector;
00085 
00086   typedef bitvector::BitVectorList<constants::RANK_MAX> SmallBitVectorList;
00087 
00088   /* In Fokko's code, the type |LongComponent| is used (exclusively?) to
00089      represent a line of an equation matrix over $Z/2Z$, with a left hand side
00090      of at most |RANK_MAX| coefficient bits, and one bit right hand side. For
00091      this reason I've introduced a more appropirate type for such uses. MvL */
00092 
00093   typedef bitvector::BitVector<constants::RANK_MAX+1> BinaryEquation;
00094 
00095   typedef bitvector::BitVectorList<constants::RANK_MAX+1> BinaryEquationList;
00096 
00097   /*!
00098   \brief Element of (Z/2Z)^2*RANK_MAX.
00099   */
00100   typedef bitvector::BitVector<2*constants::RANK_MAX> LongComponent;
00101 
00102   /*!
00103   \brief Square matrix of size RANK_MAX with entries in Z/2Z.
00104 
00105   Used to represent for instance the map on (dual) component groups of real
00106   tori induced by a lattice map.
00107   */
00108   typedef bitvector::BitMatrix<constants::RANK_MAX> BinaryMap;
00109 
00110   /*!
00111   \brief Subgroup of (Z/2Z)^RANK_MAX.
00112 
00113   Used to represent a subgroup of the group of connected components of
00114   a real torus.
00115   */
00116   typedef subquotient::Subspace<constants::RANK_MAX> SmallSubspace;
00117 
00118 
00119   /*!
00120   \brief Subquotient of (Z/2Z)^RANK_MAX.
00121   */
00122   typedef subquotient::Subquotient<constants::RANK_MAX>
00123     SmallSubquotient;
00124 
00125   /*!
00126   \brief List of elements of (Z/2Z)^RANK_MAX.
00127 
00128   Used to represent a subset of the group of connected components of
00129   a real torus.
00130   */
00131   typedef std::vector<Component> ComponentList;
00132 
00133   /*!
00134   \brief List of elements of (Z/2Z)^2*RANK_MAX.
00135   */
00136   typedef std::vector<LongComponent> LongComponentList;
00137 
00138 }
00139 
00140 }
00141 
00142 #endif

Generated on Wed Mar 26 16:49:38 2008 for atlas by  doxygen 1.3.9.1