AlVin  1.0
A C++ implementation of the Vinberg's algorithm for Q, Q( sqrt(d) ) and Q( cos(2 pi / 7) )
notreflective.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2014, 2015, 2016
3 Rafael Guglielmetti, rafael.guglielmetti@unifr.ch
4 */
5 
6 /*
7 This file is part of AlVin.
8 
9 CoxIter is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as
11 published by the Free Software Foundation, either version 3 of the
12 License, or (at your option) any later version.
13 
14 CoxIter is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with AlVin. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
31 #ifndef NOTREFLECTIVE_H
32 #define NOTREFLECTIVE_H
33 
34 #include "alvin.h"
35 
38 {
39  vector< short unsigned int > iGraphVertices;
40  vector< short unsigned int > iVariablesName;
41  vector< short unsigned int > iVariablesToCoeff;
42 
43  vector< short unsigned int > iVariablesGreaterThan;
44  vector< AlgebraicInteger* > aiVariablesCount;
45 };
46 
48 {
49  protected:
50  AlVin *alvin;
51  vector< vector< AlgebraicInteger* > > aiVectors;
52  unsigned int iDimension;
53 
54  vector< AlgebraicInteger* > aiQF;
55  vector< AlgebraicInteger* > ai2QF;
56 
57  vector< vector< NotReflective_Graph > > graphs;
58 
59  string strOFormat;
60  string strAlgebraicIntegerType;
61 
62  vector< AlgebraicInteger* > aiPossibleNorm2;
63 
64  public:
65  NotReflective( AlVin *v );
66  virtual ~NotReflective();
67 
68  void Run();
69 
70  private:
71  void prepareGraphsList();
72  void createSystemsEquations();
73  virtual void createSystemEquations( NotReflective_Graph nrg ) = 0;
74 };
75 
76 #endif // NOTREFLECTIVE_H
Create systems of equations to test the non-reflectivity of a quadratic form defined over Z...
Definition: notreflective.h:47
vector< short unsigned int > iGraphVertices
Vertices of the graph.
Definition: notreflective.h:39
<
Definition: notreflective.h:37
vector< vector< NotReflective_Graph > > graphs
The first index is for the number of variables, then one for each graph which cannot be extended...
Definition: notreflective.h:57
vector< AlgebraicInteger * > aiVariablesCount
Number of time each variable appear (useful for the norm equation)
Definition: notreflective.h:44
Main class for AlVin.
Definition: alvin.h:52
vector< short unsigned int > iVariablesToCoeff
[ i ] = j means that x_i has the jth coefficient in the quadratic form
Definition: notreflective.h:41
vector< short unsigned int > iVariablesName
For each vertex, the corresponding variable.
Definition: notreflective.h:40
vector< short unsigned int > iVariablesGreaterThan
[ i ] = j means x_i >= x_j
Definition: notreflective.h:43