CoxIter  1.3
CoxIter - Computing invariants of hyperbolic Coxeter groups
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
CoxIter Class Reference

Main class for the work. More...

#include <coxiter.h>

Collaboration diagram for CoxIter:
Collaboration graph
[legend]

Public Member Functions

 CoxIter ()
 Default constructor. Initialize the default values. More...
 
 CoxIter (const vector< vector< unsigned int >> &iMatrix, const unsigned int &dimension)
 
 ~CoxIter ()
 
bool bRunAllComputations ()
 Do all the computations. More...
 
void printCoxeterMatrix ()
 Print Coxeter matrix. More...
 
void printCoxeterGraph ()
 Print Coxeter graph. More...
 
void printGramMatrix ()
 Print the Gram matrix. More...
 
void printGramMatrix_GAP ()
 Print the Gram matrix (format: GAP) More...
 
void printGramMatrix_Mathematica ()
 Print the Gram matrix (format: Mathematica) More...
 
void printGramMatrix_PARI ()
 Print the Gram matrix (format: PARI) More...
 
void printGramMatrix_LaTeX ()
 Print the Gram matrix (format: LaTeX) More...
 
void printEdgesVisitedMatrix ()
 Display the visited edges. More...
 
bool readGraphFromFile (const string &inputFilename)
 Read the graph from a file. More...
 
bool writeGraphToDraw (const string &outFilenameBasis)
 Write the graph in a file for GraphViz. More...
 
bool writeGraph (const string &filename)
 Write the graph in a file (so that it can be read by CoxIter) More...
 
bool parseGraph (istream &streamIn)
 Read and parse graph from stream. More...
 
void exploreGraph ()
 
void IS_computations (const string &t0, const string &s0)
 
bool computeEulerCharacteristicFVector ()
 Conmpute the euler characteristic and f-vector. More...
 
void growthSeries ()
 
int isGraphCocompact ()
 Check whether the graph is cocompact or not Remark: If the programm was not called with the -compacity flag, the function does nothing. More...
 
int checkCovolumeFiniteness ()
 
bool canBeFiniteCovolume ()
 Check whether the group can be of finite covolume or no Remark: If true, it does not mean that the group is of finite covolume. The function only provides a faster test if we think that the group is of infinite covolume. We also suppose that this function is called alone most of the time (i.e. that we won't call checkFiniteCovolume after that, most of the time). More...
 
vector< vector< short unsigned int > > canBeFiniteCovolume_complete ()
 Check whether the group can be of finite covolume or no. More...
 
void computeGraphsProducts ()
 Compute the possible products of the irreducible graphs. More...
 
void printGrowthSeries ()
 Display the growth series. More...
 
void printEuclideanGraphsProducts (vector< map< vector< vector< short unsigned int >>, unsigned int >> *graphsProductsCount)
 Display the euclidean graph products found. More...
 
bool isVertexValid (const string &vertexLabel) const
 Test if a vertex exists in the graph. More...
 
unsigned int get_vertexIndex (const string &vertexLabel) const
 Get the index of a vertex. More...
 
string get_vertexLabel (const unsigned int &vertex) const
 Get the label of a vertex. More...
 
string get_error () const
 Retourne le code d'erreur. More...
 
MPZ_rational get_brEulerCaracteristic () const
 return brEulerCaracteristic More...
 
string get_eulerCaracteristicString () const
 return Euler characteristic More...
 
string get_eulerCharacteristic_computations () const
 Return the computations needed to determine Euler's characteristic. More...
 
int get_fVectorAlternateSum () const
 Return the alternating sum of the componenents of the f-vector. More...
 
vector< unsigned int > get_fVector () const
 Return the f-vector. More...
 
vector< unsigned int > get_infSeqFVectorsUnits () const
 Return the units of the f-vector after n-doubling. More...
 
vector< unsigned int > get_infSeqFVectorsPowers () const
 
unsigned int get_verticesAtInfinityCount () const
 Return the number of vertices at infinity. More...
 
unsigned int get_irreducibleSphericalGraphsCount () const
 Return the number of irreducible spherical graphs. More...
 
bool get_bWriteInfo () const
 Return bWriteInfo. More...
 
bool get_debug () const
 Return get_debug. More...
 
unsigned int get_dimension () const
 Return the dimension. More...
 
bool get_dimensionGuessed () const
 Return true if the dimension was guessed. More...
 
int get_isCocompact ()
 Return the value of isCompact. More...
 
int get_isFiniteCovolume ()
 Return the value of isFiniteCovolume. More...
 
int get_isArithmetic () const
 Arithmetic? More...
 
vector< vector< unsigned int > > get_coxeterMatrix () const
 Return the Coxeter matrix. More...
 
unsigned int get_coxeterMatrixEntry (const unsigned int &i, const unsigned int &j) const
 Return the one entry of the Coxeter matrix. More...
 
map< unsigned int, string > get_weights () const
 Return the weights of the dotted lines. More...
 
string get_CoxeterMatrixString () const
 Return the Coxeter matrix as a string. More...
 
vector< vector< string > > get_array_str_2_GramMatrix () const
 Return the entries of 2*G (string) More...
 
string get_gramMatrix () const
 Returns the Gram matrix. More...
 
string get_coxeterGraph () const
 Returns the Coxeter graph. More...
 
string get_gramMatrix_GAP () const
 Returns the Gram matrix (format GAP) More...
 
string get_gramMatrix_LaTeX () const
 Returns the Gram matrix (format LaTeX) More...
 
string get_gramMatrix_Mathematica () const
 Returns the Gram matrix (format Mathematica) More...
 
string get_gramMatrix_PARI () const
 Returns the Gram matrix (format PARI) More...
 
string get_gramMatrixField () const
 Field generated by the entries of the Gram matrix (string) More...
 
unsigned int get_verticesCount () const
 Retourne le nombre de sommets du graphe. More...
 
bool get_hasDottedLine () const
 Does the graph have at least one dotted edge? More...
 
int get_hasDottedLineWithoutWeight () const
 Does the graph have dotted edges without weights? More...
 
vector< string > get_str_map_vertices_indexToLabel () const
 Return the label of the vertices. More...
 
void set_isArithmetic (const unsigned int &arithmetic)
 Update the member isArithmetic. More...
 
void set_checkCocompactness (const bool &value)
 
void set_checkCofiniteness (const bool &value)
 
void set_debug (const bool &value)
 
void set_useOpenMP (const bool &value)
 
void set_outputFilename (const string &filename)
 
void set_sdtOutToFile (const string &filename)
 
void set_verticesToRemove (const vector< string > &verticesRemove_)
 
void set_verticesToConsider (const vector< string > &verticesToConsider)
 
void set_bWriteInfo (const bool &newValue)
 Set bWriteInfo. More...
 
void set_dimension (const unsigned int &dimension_)
 Update the member dimension. More...
 
GraphsListget_gl_graphsList_spherical () const
 
GraphsListget_gl_graphsList_euclidean () const
 
bool get_hasSphericalGraphsOfRank (const unsigned int &rank) const
 
bool get_hasEuclideanGraphsOfRank (const unsigned int &rank) const
 
void get_growthSeries (vector< unsigned int > &cyclotomicNumerator, vector< mpz_class > &polynomialDenominator, bool &isReduced)
 
bool get_isGrowthSeriesReduced ()
 Return true if the fraction is reduced. More...
 
vector< mpz_class > get_growthSeries_denominator ()
 
string get_growthSeries ()
 
string get_growthSeries_raw ()
 
const vector< vector< GraphsProductSet > > * get_ptr_graphsProducts () const
 Return the list of graphs products Remark: there is absolutely no verification. More...
 
void set_coxeterMatrix (const vector< vector< unsigned int >> &matrix)
 Set the Coxeter matrix. More...
 
void set_ouputMathematicalFormat (const string &format)
 
void map_vertices_labels_removeReference (const unsigned int &index)
 Remove the references to a vertex (for the label) More...
 
void map_vertices_labels_addReference (const string &label)
 Add a references for a new vertex. More...
 
void map_vertices_labels_create ()
 Create labels if there is none (int --> string) More...
 
void map_vertices_labels_reinitialize ()
 Create labels if there with int. More...
 

Private Member Functions

 CoxIter (const CoxIter &)
 We do not want to do this. More...
 
void initializations ()
 Une fois le nombre de sommets du graphe connu (via inputRead()), fait divers initialisations de variables. More...
 
void DFS (unsigned int root, unsigned int from)
 Look for all the An starting from a given vertex. More...
 
void printPath ()
 Print the path vector. More...
 
void addGraphsFromPath ()
 Find the different type of graphs (An, Bn, Dn, En, Hn, F4) from any An. More...
 
void AnToEn_AnToTEn (const vector< short unsigned int > &pathTemp, const vector< bool > &verticesLinkable)
 
void AnToEn_AnToTEn (const vector< short unsigned int > &pathTemp, const vector< bool > &linkableVertices, const bool &isSpherical, const short unsigned int &iStart)
 
void B3ToF4_B4ToTF4 (const vector< bool > &linkableVerticesStart, vector< short unsigned int > pathTemp, const short unsigned int &endVertex)
 Essaie de construire un F4 depuis un B3. More...
 
void computeGraphsProducts (GraphsListIterator grIt, vector< map< vector< vector< short unsigned int >>, unsigned int >> *graphsProductsCount, const bool &isSpherical, GraphsProduct &gp, vector< bool > &gpNonLinkableVertices)
 
void computeGraphsProducts_IS (GraphsListIterator grIt, const bool &isSpherical, GraphsProduct &gp, vector< bool > &gpNonLinkableVertices)
 
void canBeFiniteCovolume_computeGraphsProducts (GraphsListIterator grIt, GraphsProduct &gp, vector< bool > &gpNonLinkableVertices)
 
void canBeFiniteCovolume_complete_computeGraphsProducts (GraphsListIterator grIt, GraphsProduct &gp, vector< bool > &gpNonLinkableVertices)
 
mpz_class i_orderFiniteSubgraph (const unsigned int &type, const unsigned int &dataSupp)
 Order of a connected spherical graph. More...
 
bool isGraph_cocompact_finiteVolume_parallel (unsigned int index)
 Check whether the graph is cocompact or not or has finite covolume or not Called by: isGraphCocompact and isFiniteCovolume. More...
 
bool isGraph_cocompact_finiteVolume_sequential (unsigned int index)
 Check whether the graph is cocompact or not or has finite covolume or not Called by: isGraphCocompact and isFiniteCovolume. More...
 
void growthSeries_symbolExponentFromProduct (const vector< vector< short unsigned int >> &product, vector< unsigned int > &symbol, unsigned int &exponent) const
 
void growthSeries_symbolExponentFromProduct (const vector< vector< short unsigned int >> &product, string &symbol, unsigned int &exponent) const
 
void growthSeries_parallel ()
 
void growthSeries_sequential ()
 
void growthSeries_details ()
 
void growthSeries_mergeTerms (vector< mpz_class > &polynomial, vector< unsigned int > &symbol, vector< mpz_class > tempPolynomial, const vector< unsigned int > &tempSymbol, mpz_class biTemp=1)
 

Private Attributes

string error
 Error code. More...
 
bool debug
 If true, prints additionnal information. More...
 
bool useOpenMP
 Use OpenMP. More...
 
bool bWriteInfo
 
bool bCoutFile
 True if we want to redirect cout to a file. More...
 
ofstream * outCout
 Flow to the file. More...
 
streambuf * sBufOld
 To reset the cout, at the end. More...
 
string ouputMathematicalFormat
 
unsigned int verticesCount
 Number of vertices. More...
 
unsigned int maximalSubgraphRank
 Maximal rank of a subgraph. More...
 
unsigned int dimension
 Dimension (or 0) More...
 
unsigned int sphericalMaxRankFound
 Maximal rank for a spherical graph. More...
 
unsigned int euclideanMaxRankFound
 Maximal rank for an euclidean graph. More...
 
bool isDimensionGuessed
 If the dimension was not specified but guessed. More...
 
bool isGraphExplored
 
bool isGraphsProductsComputed
 True if we computed the graphs products. More...
 
bool isGrowthSeriesComputed
 True if we computed the growth series. More...
 
bool hasDottedLine
 True if the graph has a dotted line. More...
 
int hasDottedLineWithoutWeight
 
bool hasBoldLine
 True if the graph has a bold line. More...
 
bool checkCocompactness
 True if we want to check the cocompacity. More...
 
bool checkCofiniteness
 
int isCocompact
 
int isArithmetic
 1 If arithmetic, 0 if non-arithmetic, -1 if don't know More...
 
int isFiniteCovolume
 Check whether the graph is of finite covolume or not Remark: If the programm was not called with the -fv flag, the function does nothing. More...
 
vector< string > verticesToRemove
 Vertices to be removed. More...
 
vector< string > vertices
 Vertices to be taken. More...
 
map< string, unsigned int > map_vertices_labelToIndex
 
vector< string > map_vertices_indexToLabel
 
vector< vector< unsigned int > > coxeterMatrix
 Coxeter matrix. More...
 
map< unsigned int, string > weightsDotted
 Weights of the dotted lines (via linearization) More...
 
vector< vector< bool > > visitedEdges
 For the DFS: traversed edges. More...
 
vector< bool > visitedVertices
 For the DFS: traversed vertices. More...
 
vector< short unsigned int > path
 chemin en cours (pour le DFS) More...
 
string gramMatrixField
 Field generated by the entries of the Gram matrix. More...
 
bool isGramMatrixFieldKnown
 True if the field was determined. More...
 
GraphsListgraphsList_spherical
 Pointer to the list of spherical graphs. More...
 
GraphsListgraphsList_euclidean
 Pointer to the list of euclidean graphs. More...
 
unsigned int infSeq_t0
 First reflecting hyperplane. More...
 
unsigned int infSeq_s0
 
vector< unsigned int > infSeqFVectorsUnits
 (ultra)parallel hyperplane, will be conjugate More...
 
vector< unsigned int > infSeqFVectorsPowers
 Components of the f-vector. More...
 
vector< vector< GraphsProductSet > > graphsProducts
 
vector< vector< GraphsProductSet > > graphsProducts_canBeFiniteCovolume
 
vector< map< vector< vector< short unsigned int > >, unsigned int > > graphsProductsCount_spherical
 
vector< map< vector< vector< short unsigned int > >, unsigned int > > graphsProductsCount_euclidean
 Count graphs products (with their multiplicities) More...
 
vector< mpz_class > factorials
 
vector< mpz_class > powersOf2
 
MPZ_rational brEulerCaracteristic
 Euler characteristic. More...
 
string eulerCharacteristic_computations
 
int fVectorAlternateSum
 Alternating sum of the components of thef-vector. More...
 
vector< unsigned int > fVector
 F-vector. More...
 
unsigned int verticesAtInfinityCount
 Number of vertices at infinity. More...
 
vector< mpz_class > growthSeries_polynomialDenominator
 
vector< unsigned int > growthSeries_cyclotomicNumerator
 
bool growthSeries_isFractionReduced
 
string growthSeries_raw
 Row series, not simplified. More...
 

Friends

ostream & operator<< (ostream &, CoxIter const &)
 

Detailed Description

Main class for the work.

Remarks
This must be compiled with C++11 and a few other stuff (see documentation)

Constructor & Destructor Documentation

◆ CoxIter() [1/3]

CoxIter::CoxIter ( )

Default constructor. Initialize the default values.

◆ CoxIter() [2/3]

CoxIter::CoxIter ( const vector< vector< unsigned int >> &  iMatrix,
const unsigned int &  dimension 
)

◆ ~CoxIter()

CoxIter::~CoxIter ( )

◆ CoxIter() [3/3]

CoxIter::CoxIter ( const CoxIter )
private

We do not want to do this.

Member Function Documentation

◆ addGraphsFromPath()

CoxIter::addGraphsFromPath ( )
private

Find the different type of graphs (An, Bn, Dn, En, Hn, F4) from any An.

Based on the content of path

◆ AnToEn_AnToTEn() [1/2]

void CoxIter::AnToEn_AnToTEn ( const vector< short unsigned int > &  pathTemp,
const vector< bool > &  linkableVertices,
const bool &  isSpherical,
const short unsigned int &  iStart 
)
private

◆ AnToEn_AnToTEn() [2/2]

void CoxIter::AnToEn_AnToTEn ( const vector< short unsigned int > &  pathTemp,
const vector< bool > &  verticesLinkable 
)
private

◆ B3ToF4_B4ToTF4()

CoxIter::B3ToF4_B4ToTF4 ( const vector< bool > &  linkableVerticesStart,
vector< short unsigned int >  pathTemp,
const short unsigned int &  endVertex 
)
private

Essaie de construire un F4 depuis un B3.

Parameters
linkableVerticesStart(constvector<bool> &) What's linkable to the B3
pathTemp(vector<unsigned int>) Vertices of the B3
endVertexIndex of the vertex connected by a 4

◆ bRunAllComputations()

CoxIter::bRunAllComputations ( )

Do all the computations.

Call the followings functions:
readGraph()
exploreGraph()
computeGraphsProducts()
euler()
isFiniteCovolume()
isGraphCocompact()

Returns
True if success

◆ canBeFiniteCovolume()

CoxIter::canBeFiniteCovolume ( )

Check whether the group can be of finite covolume or no Remark: If true, it does not mean that the group is of finite covolume. The function only provides a faster test if we think that the group is of infinite covolume. We also suppose that this function is called alone most of the time (i.e. that we won't call checkFiniteCovolume after that, most of the time).

Returns
True is the group can be of finite covolume, false if the group is of infinite covolume

◆ canBeFiniteCovolume_complete()

CoxIter::canBeFiniteCovolume_complete ( )

Check whether the group can be of finite covolume or no.

Returns
The list of affine graphs which cannot be extended to an affine graph of rank n-1. If the list is empty, then it is possible that the group has finite covolume.

◆ canBeFiniteCovolume_complete_computeGraphsProducts()

void CoxIter::canBeFiniteCovolume_complete_computeGraphsProducts ( GraphsListIterator  grIt,
GraphsProduct gp,
vector< bool > &  gpNonLinkableVertices 
)
private

◆ canBeFiniteCovolume_computeGraphsProducts()

void CoxIter::canBeFiniteCovolume_computeGraphsProducts ( GraphsListIterator  grIt,
GraphsProduct gp,
vector< bool > &  gpNonLinkableVertices 
)
private

◆ checkCovolumeFiniteness()

int CoxIter::checkCovolumeFiniteness ( )

◆ computeEulerCharacteristicFVector()

CoxIter::computeEulerCharacteristicFVector ( )

Conmpute the euler characteristic and f-vector.

Returns
True if success

◆ computeGraphsProducts() [1/2]

CoxIter::computeGraphsProducts ( )

Compute the possible products of the irreducible graphs.

◆ computeGraphsProducts() [2/2]

void CoxIter::computeGraphsProducts ( GraphsListIterator  grIt,
vector< map< vector< vector< short unsigned int >>, unsigned int >> *  graphsProductsCount,
const bool &  isSpherical,
GraphsProduct gp,
vector< bool > &  gpNonLinkableVertices 
)
private

◆ computeGraphsProducts_IS()

CoxIter::computeGraphsProducts_IS ( GraphsListIterator  grIt,
const bool &  isSpherical,
GraphsProduct gp,
vector< bool > &  gpNonLinkableVertices 
)
private

sequence

\param grIt(GraphsListIterator): Iterator on the list
\param isSpherical(const bool&): True if spherical, false if euclidean
\param gp(GraphsProduct&) To store the product (for the cocompacity and

finite covolume tests)

Parameters
gpNonLinkableVertices(vector<bool >&) Vertices which cannot be linked to the current product

◆ DFS()

CoxIter::DFS ( unsigned int  root,
unsigned int  from 
)
private

Look for all the An starting from a given vertex.

Thie function calls addGraphsFromPath() for each maximal An found

Parameters
rootStarting point
fromPrevious vertex (or root if first call)

◆ exploreGraph()

void CoxIter::exploreGraph ( )
\fn exploreGraph
\brief Explore the graph (via coxeterMatrix) to gind subgraphs

First, we find all the chains startings from every vertex. Then, we

expand the chains to spherical and euclidean graphs

◆ get_array_str_2_GramMatrix()

CoxIter::get_array_str_2_GramMatrix ( ) const

Return the entries of 2*G (string)

Returns
Entries of 2*G

◆ get_brEulerCaracteristic()

CoxIter::get_brEulerCaracteristic ( ) const

return brEulerCaracteristic

Returns
brEulerCaracteristic (MPZ_rational)

◆ get_bWriteInfo()

CoxIter::get_bWriteInfo ( ) const

Return bWriteInfo.

Returns
bWriteInfo

◆ get_coxeterGraph()

CoxIter::get_coxeterGraph ( ) const

Returns the Coxeter graph.

Returns
Gram graph (string)

◆ get_coxeterMatrix()

CoxIter::get_coxeterMatrix ( ) const

Return the Coxeter matrix.

Returns
Coxeter matrix

◆ get_coxeterMatrixEntry()

CoxIter::get_coxeterMatrixEntry ( const unsigned int &  i,
const unsigned int &  j 
) const

Return the one entry of the Coxeter matrix.

Returns
Entry

◆ get_CoxeterMatrixString()

CoxIter::get_CoxeterMatrixString ( ) const

Return the Coxeter matrix as a string.

Returns
Coxeter matrix (string)

◆ get_debug()

CoxIter::get_debug ( ) const

Return get_debug.

Returns
get_debug

◆ get_dimension()

CoxIter::get_dimension ( ) const

Return the dimension.

Returns
Dimension (0 if not specified/guessed)

◆ get_dimensionGuessed()

CoxIter::get_dimensionGuessed ( ) const

Return true if the dimension was guessed.

Returns
True if the dimension was guessed

◆ get_error()

CoxIter::get_error ( ) const

Retourne le code d'erreur.

Returns
Code d'erreur (string)

◆ get_eulerCaracteristicString()

CoxIter::get_eulerCaracteristicString ( ) const

return Euler characteristic

Returns
Euler characteristic (string)

◆ get_eulerCharacteristic_computations()

CoxIter::get_eulerCharacteristic_computations ( ) const

Return the computations needed to determine Euler's characteristic.

Returns
eulerCharacteristic_computations (string)

◆ get_fVector()

CoxIter::get_fVector ( ) const

Return the f-vector.

Returns
f-vector

◆ get_fVectorAlternateSum()

CoxIter::get_fVectorAlternateSum ( ) const

Return the alternating sum of the componenents of the f-vector.

Returns
Alternating sum of the componenents of the f-vector (int)

◆ get_gl_graphsList_euclidean()

GraphsList* CoxIter::get_gl_graphsList_euclidean ( ) const

◆ get_gl_graphsList_spherical()

GraphsList* CoxIter::get_gl_graphsList_spherical ( ) const

◆ get_gramMatrix()

CoxIter::get_gramMatrix ( ) const

Returns the Gram matrix.

Returns
Gram matrix (string)

◆ get_gramMatrix_GAP()

CoxIter::get_gramMatrix_GAP ( ) const

Returns the Gram matrix (format GAP)

Returns
Gram matrix (string)

◆ get_gramMatrix_LaTeX()

CoxIter::get_gramMatrix_LaTeX ( ) const

Returns the Gram matrix (format LaTeX)

Returns
Gram matrix (string)

◆ get_gramMatrix_Mathematica()

CoxIter::get_gramMatrix_Mathematica ( ) const

Returns the Gram matrix (format Mathematica)

Returns
Gram matrix (string)

◆ get_gramMatrix_PARI()

CoxIter::get_gramMatrix_PARI ( ) const

Returns the Gram matrix (format PARI)

Returns
Gram matrix (string)

◆ get_gramMatrixField()

CoxIter::get_gramMatrixField ( ) const

Field generated by the entries of the Gram matrix (string)

Returns
Field generated by the entries of the Gram matrix (string)

◆ get_growthSeries() [1/2]

string CoxIter::get_growthSeries ( )

◆ get_growthSeries() [2/2]

void CoxIter::get_growthSeries ( vector< unsigned int > &  cyclotomicNumerator,
vector< mpz_class > &  polynomialDenominator,
bool &  isReduced 
)
\fn get_growthSeries
\brief Return the growth series of the group

\param cyclotomicNumerator(vector<unsigned int>&) Numerator (cyclotomic

factors)

Parameters
polynomialDenominator(vector<mpz_class >&) Denominator
isReduced(bool&)True if the fraction is reduced

◆ get_growthSeries_denominator()

vector<mpz_class> CoxIter::get_growthSeries_denominator ( )

◆ get_growthSeries_raw()

string CoxIter::get_growthSeries_raw ( )

◆ get_hasDottedLine()

CoxIter::get_hasDottedLine ( ) const

Does the graph have at least one dotted edge?

Returns
Yes if the graph has at least one dotted edge

◆ get_hasDottedLineWithoutWeight()

CoxIter::get_hasDottedLineWithoutWeight ( ) const

Does the graph have dotted edges without weights?

Returns
-1: maybe, 0: no, 1: yes

◆ get_hasEuclideanGraphsOfRank()

bool CoxIter::get_hasEuclideanGraphsOfRank ( const unsigned int &  rank) const

◆ get_hasSphericalGraphsOfRank()

bool CoxIter::get_hasSphericalGraphsOfRank ( const unsigned int &  rank) const

◆ get_infSeqFVectorsPowers()

vector<unsigned int> CoxIter::get_infSeqFVectorsPowers ( ) const

◆ get_infSeqFVectorsUnits()

CoxIter::get_infSeqFVectorsUnits ( ) const

Return the units of the f-vector after n-doubling.

Return the powers of 2^{n-1} of the f-vector after n-doubling.

Returns
Units

◆ get_irreducibleSphericalGraphsCount()

CoxIter::get_irreducibleSphericalGraphsCount ( ) const

Return the number of irreducible spherical graphs.

Returns
Return the number of irreducible spherical graphs

◆ get_isArithmetic()

CoxIter::get_isArithmetic ( ) const

Arithmetic?

Returns
1 if arithmetic, 0 if not, -1 if not known

◆ get_isCocompact()

CoxIter::get_isCocompact ( )

Return the value of isCompact.

Returns
1 if cocompact, 0 if not, -1 if not tested

◆ get_isFiniteCovolume()

CoxIter::get_isFiniteCovolume ( )

Return the value of isFiniteCovolume.

Returns
1 if finite covolume, 0 if not, -1 if not tested

◆ get_isGrowthSeriesReduced()

CoxIter::get_isGrowthSeriesReduced ( )

Return true if the fraction is reduced.

Returns
True if the fraction is reduced

◆ get_ptr_graphsProducts()

CoxIter::get_ptr_graphsProducts ( ) const

Return the list of graphs products Remark: there is absolutely no verification.

◆ get_str_map_vertices_indexToLabel()

CoxIter::get_str_map_vertices_indexToLabel ( ) const

Return the label of the vertices.

Returns
The labels of the vertices

◆ get_vertexIndex()

CoxIter::get_vertexIndex ( const string &  vertexLabel) const

Get the index of a vertex.

Parameters
vertexLabel(conststring&) Label of the vertex
Returns
Index of the vertex (throw an exception if the vertex does not exist)

◆ get_vertexLabel()

CoxIter::get_vertexLabel ( const unsigned int &  vertex) const

Get the label of a vertex.

Parameters
vertex(constunsigned int&) Index of the vertex
Returns
Label of the vertex (throw an exception if the vertex does not exist)

◆ get_verticesAtInfinityCount()

CoxIter::get_verticesAtInfinityCount ( ) const

Return the number of vertices at infinity.

Returns
Return the number of vertices at infinity

◆ get_verticesCount()

CoxIter::get_verticesCount ( ) const

Retourne le nombre de sommets du graphe.

Returns
Retourne le nombre de sommets du graphe (int)

◆ get_weights()

CoxIter::get_weights ( ) const

Return the weights of the dotted lines.

Returns
Weights of the dotted lines

◆ growthSeries()

CoxIter::growthSeries ( )

Compute the growth series

Remarks
The only purpose of this function is to call growthSeries_parallel or growthSeries_sequential

◆ growthSeries_details()

void CoxIter::growthSeries_details ( )
private

◆ growthSeries_mergeTerms()

CoxIter::growthSeries_mergeTerms ( vector< mpz_class > &  polynomial,
vector< unsigned int > &  symbol,
vector< mpz_class >  tempPolynomial,
const vector< unsigned int > &  tempSymbol,
mpz_class  biTemp = 1 
)
private

Given the parameters, compute polynomial/symbol += tempPolynomial/tempSymbol

\param polynomial(vector< mpz_class >&) First polynomial (by reference)
\param symbol(vector<short unsigned int>&) First symbol (by reference)
\param tempPolynomial(vector< mpz_class >) Second polynomial
\param tempSymbol(const vector<short unsigned int>&) Second symbol
\param biTemp(mpz_class) Eventually, some coefficient for the second

polynomial

\return Nothing but the first two parameters are modified

◆ growthSeries_parallel()

CoxIter::growthSeries_parallel ( )
private

Compute the growth series

◆ growthSeries_sequential()

CoxIter::growthSeries_sequential ( )
private

Compute the growth series

◆ growthSeries_symbolExponentFromProduct() [1/2]

void CoxIter::growthSeries_symbolExponentFromProduct ( const vector< vector< short unsigned int >> &  product,
string &  symbol,
unsigned int &  exponent 
) const
private

◆ growthSeries_symbolExponentFromProduct() [2/2]

void CoxIter::growthSeries_symbolExponentFromProduct ( const vector< vector< short unsigned int >> &  product,
vector< unsigned int > &  symbol,
unsigned int &  exponent 
) const
private

◆ i_orderFiniteSubgraph()

CoxIter::i_orderFiniteSubgraph ( const unsigned int &  type,
const unsigned int &  dataSupp 
)
private

Order of a connected spherical graph.

Parameters
typeType du graphe (0 = An, 1=Bn, ...)
dataSuppValeur du n pour presque tous les graphes, poids pour un G_2^n
\return Ordre (unsigned long int)

◆ initializations()

CoxIter::initializations ( )
private

Une fois le nombre de sommets du graphe connu (via inputRead()), fait divers initialisations de variables.

◆ IS_computations()

void CoxIter::IS_computations ( const string &  t0,
const string &  s0 
)
\fn IS_computations
\brief Do some computations related to the infinite sequence
Remark: It is suppose that both t0, s0 are admissible vertices whose

corresponding hyperplanes are (ultra)parallel

Parameters
t0(conststring&) t0 Reflecting hyperplane
t0(conststring&) s0 Other hyperplane

◆ isGraph_cocompact_finiteVolume_parallel()

CoxIter::isGraph_cocompact_finiteVolume_parallel ( unsigned int  index)
private

Check whether the graph is cocompact or not or has finite covolume or not Called by: isGraphCocompact and isFiniteCovolume.

Parameters
index(unsignedint): 1 if test for compacity, 2 if test for the finite covolume
Returns
True or false

◆ isGraph_cocompact_finiteVolume_sequential()

CoxIter::isGraph_cocompact_finiteVolume_sequential ( unsigned int  index)
private

Check whether the graph is cocompact or not or has finite covolume or not Called by: isGraphCocompact and isFiniteCovolume.

Parameters
index(unsignedint): 1 if test for compacity, 2 if test for the finite covolume
Returns
True or false

◆ isGraphCocompact()

CoxIter::isGraphCocompact ( )

Check whether the graph is cocompact or not Remark: If the programm was not called with the -compacity flag, the function does nothing.

Returns
Value of isCocompact

◆ isVertexValid()

CoxIter::isVertexValid ( const string &  vertexLabel) const

Test if a vertex exists in the graph.

Parameters
vertexLabel(conststring&) Label of the vertex
Returns
True if the vertex exists, false otherwise

◆ map_vertices_labels_addReference()

CoxIter::map_vertices_labels_addReference ( const string &  label)

Add a references for a new vertex.

Parameters
label(conststring&) Label of the vertec

◆ map_vertices_labels_create()

CoxIter::map_vertices_labels_create ( )

Create labels if there is none (int --> string)

◆ map_vertices_labels_reinitialize()

CoxIter::map_vertices_labels_reinitialize ( )

Create labels if there with int.

◆ map_vertices_labels_removeReference()

CoxIter::map_vertices_labels_removeReference ( const unsigned int &  index)

Remove the references to a vertex (for the label)

Parameters
index(constunsigned int&) index of the vertex

◆ parseGraph()

CoxIter::parseGraph ( istream &  streamIn)

Read and parse graph from stream.

Parameters
streamIn(constifstream&) Stream to the content (file or std::cin)
Returns
True if success

◆ printCoxeterGraph()

CoxIter::printCoxeterGraph ( )

Print Coxeter graph.

◆ printCoxeterMatrix()

CoxIter::printCoxeterMatrix ( )

Print Coxeter matrix.

◆ printEdgesVisitedMatrix()

CoxIter::printEdgesVisitedMatrix ( )

Display the visited edges.

◆ printEuclideanGraphsProducts()

CoxIter::printEuclideanGraphsProducts ( vector< map< vector< vector< short unsigned int >>, unsigned int >> *  graphsProductsCount)

Display the euclidean graph products found.

Parameters
graphsProductsCount(vector<map<vector< vector<short unsigned int> >, unsigned int> >*) Pointer to the vector contaitning the results

◆ printGramMatrix()

CoxIter::printGramMatrix ( )

Print the Gram matrix.

◆ printGramMatrix_GAP()

CoxIter::printGramMatrix_GAP ( )

Print the Gram matrix (format: GAP)

◆ printGramMatrix_LaTeX()

CoxIter::printGramMatrix_LaTeX ( )

Print the Gram matrix (format: LaTeX)

◆ printGramMatrix_Mathematica()

CoxIter::printGramMatrix_Mathematica ( )

Print the Gram matrix (format: Mathematica)

◆ printGramMatrix_PARI()

CoxIter::printGramMatrix_PARI ( )

Print the Gram matrix (format: PARI)

◆ printGrowthSeries()

CoxIter::printGrowthSeries ( )

Display the growth series.

◆ printPath()

CoxIter::printPath ( )
private

Print the path vector.

◆ readGraphFromFile()

CoxIter::readGraphFromFile ( const string &  inputFilename)

Read the graph from a file.

Parameters
inputFilename(conststring&) Path to the file
Returns
True if success

◆ set_bWriteInfo()

CoxIter::set_bWriteInfo ( const bool &  newValue)

Set bWriteInfo.

Parameters
newValue(constbool&) The new value
Returns
void

◆ set_checkCocompactness()

void CoxIter::set_checkCocompactness ( const bool &  value)

◆ set_checkCofiniteness()

void CoxIter::set_checkCofiniteness ( const bool &  value)

◆ set_coxeterMatrix()

CoxIter::set_coxeterMatrix ( const vector< vector< unsigned int >> &  matrix)

Set the Coxeter matrix.

Parameters
matrix(constvector< vector<short unsigned int> >&) The matrix

◆ set_debug()

void CoxIter::set_debug ( const bool &  value)

◆ set_dimension()

CoxIter::set_dimension ( const unsigned int &  dimension_)

Update the member dimension.

◆ set_isArithmetic()

CoxIter::set_isArithmetic ( const unsigned int &  arithmetic)

Update the member isArithmetic.

This is used by the Arithmeticity class

◆ set_ouputMathematicalFormat()

void CoxIter::set_ouputMathematicalFormat ( const string &  format)

◆ set_outputFilename()

void CoxIter::set_outputFilename ( const string &  filename)

◆ set_sdtOutToFile()

void CoxIter::set_sdtOutToFile ( const string &  filename)

◆ set_useOpenMP()

void CoxIter::set_useOpenMP ( const bool &  value)

◆ set_verticesToConsider()

void CoxIter::set_verticesToConsider ( const vector< string > &  verticesToConsider)

◆ set_verticesToRemove()

void CoxIter::set_verticesToRemove ( const vector< string > &  verticesRemove_)

◆ writeGraph()

CoxIter::writeGraph ( const string &  filename)

Write the graph in a file (so that it can be read by CoxIter)

Parameters
filename(conststring &)
Returns
True if success, false otherwise

◆ writeGraphToDraw()

CoxIter::writeGraphToDraw ( const string &  outFilenameBasis)

Write the graph in a file for GraphViz.

The graph is written in outputGraphFilename + ".graphviz"

Parameters
outFilenameBasis(conststring&) Filename
Returns
True if OK, false otherwise

Friends And Related Function Documentation

◆ operator<<

ostream& operator<< ( ostream &  ,
CoxIter const &   
)
friend

Member Data Documentation

◆ bCoutFile

bool CoxIter::bCoutFile
private

True if we want to redirect cout to a file.

◆ brEulerCaracteristic

MPZ_rational CoxIter::brEulerCaracteristic
private

Euler characteristic.

◆ bWriteInfo

bool CoxIter::bWriteInfo
private

If we want to write informations (false if CoxIter is used "as a plugin")

◆ checkCocompactness

bool CoxIter::checkCocompactness
private

True if we want to check the cocompacity.

◆ checkCofiniteness

bool CoxIter::checkCofiniteness
private

True if we want to check the finite covolume condition

◆ coxeterMatrix

vector<vector<unsigned int> > CoxIter::coxeterMatrix
private

Coxeter matrix.

◆ debug

bool CoxIter::debug
private

If true, prints additionnal information.

◆ dimension

unsigned int CoxIter::dimension
private

Dimension (or 0)

◆ error

string CoxIter::error
private

Error code.

◆ euclideanMaxRankFound

unsigned int CoxIter::euclideanMaxRankFound
private

Maximal rank for an euclidean graph.

◆ eulerCharacteristic_computations

string CoxIter::eulerCharacteristic_computations
private

Euler characteristic (without the computations done)

◆ factorials

vector<mpz_class> CoxIter::factorials
private

◆ fVector

vector<unsigned int> CoxIter::fVector
private

F-vector.

◆ fVectorAlternateSum

int CoxIter::fVectorAlternateSum
private

Alternating sum of the components of thef-vector.

◆ gramMatrixField

string CoxIter::gramMatrixField
private

Field generated by the entries of the Gram matrix.

◆ graphsList_euclidean

GraphsList* CoxIter::graphsList_euclidean
private

Pointer to the list of euclidean graphs.

◆ graphsList_spherical

GraphsList* CoxIter::graphsList_spherical
private

Pointer to the list of spherical graphs.

◆ graphsProducts

CoxIter::graphsProducts
private

[0] Spherical products of codimension 1 [1] Spherical products of codimension 0 [2] Euclidean products of codimension 0

OR

[i] => Euclidean products of rank i (for canBeFiniteCovolume_complete)

◆ graphsProducts_canBeFiniteCovolume

CoxIter::graphsProducts_canBeFiniteCovolume
private

Euclidean products of codimension 0

OR

[i] => Euclidean products of rank i

◆ graphsProductsCount_euclidean

CoxIter::graphsProductsCount_euclidean
private

Count graphs products (with their multiplicities)

External vectors: products of graphs by their number of total vertices
map< vector< vector<short unsigned int> >, unsigned int>
The key is "vector< vector<short unsigned int> >": For each type of graph and each rank, how many times it occurs in the product
For example, the vector [ 0 => [2, 3], 3 => [ 1 ] ] corresponds to: A1 x A1 x A2 x A2 X A2 x D3
la valeur est le nombre de fois que le produit apparait

◆ graphsProductsCount_spherical

CoxIter::graphsProductsCount_spherical
private

◆ growthSeries_cyclotomicNumerator

vector<unsigned int> CoxIter::growthSeries_cyclotomicNumerator
private

Contains a list oif cyclotomic polynomials

◆ growthSeries_isFractionReduced

bool CoxIter::growthSeries_isFractionReduced
private

True if the fraction has been reduced (it is always the case when the cyclotomic terms are <= 60, which is... always (except if we find an hyperbolic group in H^31))

◆ growthSeries_polynomialDenominator

vector<mpz_class> CoxIter::growthSeries_polynomialDenominator
private

(i-1)th term contains the coefficient of x^i

◆ growthSeries_raw

string CoxIter::growthSeries_raw
private

Row series, not simplified.

◆ hasBoldLine

bool CoxIter::hasBoldLine
private

True if the graph has a bold line.

◆ hasDottedLine

bool CoxIter::hasDottedLine
private

True if the graph has a dotted line.

◆ hasDottedLineWithoutWeight

int CoxIter::hasDottedLineWithoutWeight
private

If the graph dotted lines without weight (-1: maybe, 0: no, 1: yes)

◆ infSeq_s0

unsigned int CoxIter::infSeq_s0
private

◆ infSeq_t0

unsigned int CoxIter::infSeq_t0
private

First reflecting hyperplane.

◆ infSeqFVectorsPowers

vector<unsigned int> CoxIter::infSeqFVectorsPowers
private

Components of the f-vector.

◆ infSeqFVectorsUnits

vector<unsigned int> CoxIter::infSeqFVectorsUnits
private

(ultra)parallel hyperplane, will be conjugate

Components of the f-vector

◆ isArithmetic

int CoxIter::isArithmetic
private

1 If arithmetic, 0 if non-arithmetic, -1 if don't know

◆ isCocompact

int CoxIter::isCocompact
private

1 If cocompact, 0 if not, -1 if don't know, -2 if not tested

◆ isDimensionGuessed

bool CoxIter::isDimensionGuessed
private

If the dimension was not specified but guessed.

◆ isFiniteCovolume

CoxIter::isFiniteCovolume
private

Check whether the graph is of finite covolume or not Remark: If the programm was not called with the -fv flag, the function does nothing.

1 If finite covolume, 0 if not, -1 if don't know (or cannot know), -2 if not tested

Returns
Value of isFiniteCovolume

◆ isGramMatrixFieldKnown

bool CoxIter::isGramMatrixFieldKnown
private

True if the field was determined.

◆ isGraphExplored

bool CoxIter::isGraphExplored
private

True if we looked for connected subgraphs (affine and spherical)

◆ isGraphsProductsComputed

bool CoxIter::isGraphsProductsComputed
private

True if we computed the graphs products.

◆ isGrowthSeriesComputed

bool CoxIter::isGrowthSeriesComputed
private

True if we computed the growth series.

◆ map_vertices_indexToLabel

vector<string> CoxIter::map_vertices_indexToLabel
private

For the correspondance: label <-> indexes of vertices

◆ map_vertices_labelToIndex

map<string, unsigned int> CoxIter::map_vertices_labelToIndex
private

For the correspondance: label <-> indexes of vertices

◆ maximalSubgraphRank

unsigned int CoxIter::maximalSubgraphRank
private

Maximal rank of a subgraph.

◆ ouputMathematicalFormat

string CoxIter::ouputMathematicalFormat
private

Format for mathematical output (generic, mathematica)

◆ outCout

ofstream* CoxIter::outCout
private

Flow to the file.

◆ path

vector<short unsigned int> CoxIter::path
private

chemin en cours (pour le DFS)

◆ powersOf2

vector<mpz_class> CoxIter::powersOf2
private

◆ sBufOld

streambuf* CoxIter::sBufOld
private

To reset the cout, at the end.

◆ sphericalMaxRankFound

unsigned int CoxIter::sphericalMaxRankFound
private

Maximal rank for a spherical graph.

◆ useOpenMP

bool CoxIter::useOpenMP
private

Use OpenMP.

◆ vertices

vector<string> CoxIter::vertices
private

Vertices to be taken.

◆ verticesAtInfinityCount

unsigned int CoxIter::verticesAtInfinityCount
private

Number of vertices at infinity.

◆ verticesCount

unsigned int CoxIter::verticesCount
private

Number of vertices.

◆ verticesToRemove

vector<string> CoxIter::verticesToRemove
private

Vertices to be removed.

◆ visitedEdges

vector<vector<bool> > CoxIter::visitedEdges
private

For the DFS: traversed edges.

◆ visitedVertices

vector<bool> CoxIter::visitedVertices
private

For the DFS: traversed vertices.

◆ weightsDotted

map<unsigned int, string> CoxIter::weightsDotted
private

Weights of the dotted lines (via linearization)


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