atlas  0.6
prerootdata.h
Go to the documentation of this file.
1 /*
2  Constructing a root datum from user interaction
3 
4  The idea is to construct an abstract root datum (a lattice and a
5  subset of "roots," together with the dual lattice and a subset of
6  "coroots") specified interactively as a product of simple Lie types,
7  then dividing by a specified subgroup of the center of a simply
8  connected form.
9 */
10 
11 /*
12  This is prerootdata.h
13 
14  Copyright (C) 2004,2005 Fokko du Cloux
15  part of the Atlas of Lie Groups and Representations
16  Copyright (C) 2014 Marc van Leeuwen
17 
18  For license information see the LICENSE file
19 */
20 
21 #ifndef PREROOTDATA_H /* guard against multiple inclusions */
22 #define PREROOTDATA_H
23 
24 #include "../Atlas.h"
25 #include <stdexcept>
26 
27 namespace atlas {
28 
29 /******** type definitions **************************************************/
30 
31 namespace prerootdata {
32  /* Root datum specified by user interaction, having passed validity tests.
33 
34  The idea is to construct an abstract root datum (a lattice and a
35  subset of "roots," together with the dual lattice and a subset of
36  "coroots") specified interactively as a product of simple Lie types,
37  then dividing by a specified subgroup of the center of a simply
38  connected form.
39 
40  The lattice and dual lattice in which the root datum lives are
41  always Z^d_rank. The simple roots, expressed as a list of elements
42  of Z^d_rank, are in d_roots, and the simple coroots in d_coroots.
43 
44  More serious calculations (like producing the complete list of
45  roots) are handled by the RootDatum class, to which PreRootDatum can
46  pass its contents.
47  */
49 {
63  size_t d_rank;
64 
65  public:
66 
67 // constructors and destructors
69 
70  PreRootDatum(const WeightList& roots,
71  const CoweightList& coroots,
72  size_t rank)
73  : d_roots(roots),d_coroots(coroots), d_rank(rank) {}
74 
75  PreRootDatum(const LieType& lt);
76 
78 
79 // accessors
80  bool operator== (const PreRootDatum& prd) const {
81  return (d_roots == prd.d_roots) and (d_coroots == prd.d_coroots) and
82  (d_rank == prd.d_rank);
83  }
84 
88  size_t rank() const { return d_rank; }
89 
90  // List of the simple roots, in basis that is implicit in constructor.
91  const WeightList& simple_roots() const { return d_roots; }
92  // List of the simple coroots, in basis that is implicit in constructor.
93  const CoweightList& simple_coroots() const { return d_coroots; }
94 
95  int_Matrix Cartan_matrix() const;
96 
97  template<typename C>
101 
102 // manipulators
103  // replace by root datum for finite central quotient with weight |sublattice|
104  PreRootDatum& quotient(const LatticeMatrix& sublattice);
105 
106 };
107 
108 } // |namespace prerootdata|
109 
110 } // |namespace atlas|
111 
112 #endif
size_t rank() const
Rank of the root datum.
Definition: prerootdata.h:88
const CoweightList & simple_coroots() const
Definition: prerootdata.h:93
int_Matrix Cartan_matrix() const
Definition: prerootdata.cpp:85
PreRootDatum(const WeightList &roots, const CoweightList &coroots, size_t rank)
Definition: prerootdata.h:70
void simple_reflect(weyl::Generator i, matrix::Vector< C > &v) const
Definition: prerootdata.cpp:123
bool operator==(const PreRootDatum &prd) const
Definition: prerootdata.h:80
~PreRootDatum()
Definition: prerootdata.h:77
WeightList d_roots
List of the simple roots as elements of Z^d_rank, expressed in the basis specified by the argument b ...
Definition: prerootdata.h:54
Definition: prerootdata.h:48
std::vector< Weight > WeightList
Definition: Atlas.h:162
PreRootDatum()
Definition: prerootdata.h:68
size_t d_rank
Rank of the root datum.
Definition: prerootdata.h:63
Definition: Atlas.h:78
CoweightList d_coroots
Definition: prerootdata.h:59
std::vector< Weight > CoweightList
Definition: Atlas.h:163
const WeightList & simple_roots() const
Definition: prerootdata.h:91
Definition: Atlas.h:38
PreRootDatum & quotient(const LatticeMatrix &sublattice)
Definition: prerootdata.cpp:97
unsigned char Generator
Definition: Atlas.h:226
Vertex v
Definition: graph.cpp:116