CoxIter  1.2
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 &iDimension)
 Constructor. More...
 
 ~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 bReadGraphFromFile (const string &strInputFilename)
 Read the graph from a file. More...
 
bool bWriteGraphToDraw (const string &strOutFilenameBasis)
 Write the graph in a file for GraphViz. More...
 
bool bWriteGraph (const string &strFilename)
 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 ()
 Explore the graph (via iCoxeterMatrix) to gind subgraphs. More...
 
bool bEulerCharacteristicFVector ()
 Conmpute the euler characteristic and f-vector. More...
 
void growthSeries ()
 
int iIsGraphCocompact ()
 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 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...
 
bool bCanBeFiniteCovolume ()
 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 bCheckFiniteCovolume after that, most of the time). More...
 
vector< vector< short unsigned int > > bCanBeFiniteCovolume_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 bIsVertexValid (const string &strVertexLabel) const
 Test if a vertex exists in the graph. More...
 
unsigned int get_iVertexIndex (const string &strVertexLabel) const
 Get the index of a vertex. More...
 
string get_strVertexLabel (const unsigned int &iVertex) const
 Get the label of a vertex. More...
 
string get_strError () const
 Retourne le code d'erreur. More...
 
MPZ_rational get_brEulerCaracteristic () const
 return brEulerCaracteristic More...
 
string get_strEulerCaracteristic () const
 return brEulerCaracteristic More...
 
string get_strEulerCharacteristic_computations () const
 Return the computations needed to determine Euler's characteristic. More...
 
int get_iFVectorAlternateSum () const
 Return the alternating sum of the componenents of the f-vector. More...
 
vector< unsigned int > get_iFVector () const
 Return the f-vector. More...
 
unsigned int get_iVerticesAtInfinityCount () const
 Return the number of vertices at infinity. More...
 
unsigned int get_iIrreducibleSphericalGraphsCount () const
 Return the number of irreducible spherical graphs. More...
 
bool get_bWriteInfo () const
 Return bWriteInfo. More...
 
bool get_bDebug () const
 Return get_bDebug. More...
 
unsigned int get_iDimension () const
 Return the dimension. More...
 
bool get_bDimensionGuessed () const
 Return true if the dimension was guessed. More...
 
int get_iIsCocompact ()
 Return the value of iIsCompact. More...
 
int get_iIsFiniteCovolume ()
 Return the value of iIsFiniteCovolume. More...
 
int get_iIsArithmetic () const
 Arithmetic? More...
 
vector< vector< unsigned int > > get_iCoxeterMatrix () const
 Return the Coxeter matrix. More...
 
map< unsigned int, string > get_strWeights () const
 
string get_strCoxeterMatrix () const
 Return the Coxeter matrix. More...
 
vector< vector< string > > get_array_str_2_GramMatrix () const
 Return the entries of 2*G (string) More...
 
string get_strGramMatrix () const
 Returns the Gram matrix. More...
 
string get_strCoxeterGraph () const
 Returns the Coxeter graph. More...
 
string get_strGramMatrix_GAP () const
 Returns the Gram matrix (format GAP) More...
 
string get_strGramMatrix_LaTeX () const
 Returns the Gram matrix (format LaTeX) More...
 
string get_strGramMatrix_Mathematica () const
 Returns the Gram matrix (format Mathematica) More...
 
string get_strGramMatrix_PARI () const
 Returns the Gram matrix (format PARI) More...
 
string get_strGramMatrixField () const
 Field generated by the entries of the Gram matrix (string) More...
 
unsigned int get_iVerticesCount () const
 Retourne le nombre de sommets du graphe. More...
 
bool get_bHasDottedLine () const
 Does the graph have at least one dotted edge? More...
 
int get_iHasDottedLineWithoutWeight () 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_iIsArithmetic (const unsigned int &iArithmetic)
 Update the member iIsArithmetic. More...
 
void set_bCheckCocompactness (const bool &bValue)
 
void set_bCheckCofiniteness (const bool &bValue)
 
void set_bDebug (const bool &bValue)
 
void set_bUseOpenMP (const bool &bValue)
 
void set_strOutputFilename (const string &strValue)
 
void set_sdtoutToFile (const string &strFilename)
 
void set_strVerticesToRemove (const vector< string > &strVerticesRemove_)
 
void set_strVerticesToConsider (const vector< string > &strVerticesToConsider)
 
void set_bWriteInfo (const bool &bNewValue)
 Set bWriteInfo. More...
 
void set_iDimension (const unsigned int &iDimension_)
 Update the member iDimension. More...
 
GraphsListget_gl_graphsList_spherical () const
 
GraphsListget_gl_graphsList_euclidean () const
 
bool get_b_hasSphericalGraphsOfRank (const unsigned int &iRank) const
 
bool get_b_hasEuclideanGraphsOfRank (const unsigned int &iRank) const
 
void get_iGrowthSeries (vector< unsigned int > &iCyclotomicNumerator, vector< mpz_class > &iPolynomialDenominator, bool &bReduced)
 Return the growth series of the group. More...
 
bool get_bGrowthSeriesReduced ()
 Return true if the fraction is reduced. More...
 
vector< mpz_class > get_iGrowthSeries_denominator ()
 
string get_strGrowthSeries ()
 
string get_strGrowthSeries_raw ()
 
const vector< vector< GraphsProductSet > > * get_ptr_graphsProducts () const
 Return the list of graphs products Remark: there is absolutely no verification. More...
 
void set_iCoxeterMatrix (const vector< vector< unsigned int > > &iMat)
 Set the Coxeter matrix. More...
 
void set_strOuputMathematicalFormat (const string &strO)
 
void map_vertices_labels_removeReference (const unsigned int &iIndex)
 Remove the references to a vertex (for the label) More...
 
void map_vertices_labels_addReference (const string &strLabel)
 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 iRoot, unsigned int iFrom)
 Look for all the An starting from a given vertex. More...
 
void printPath ()
 Print the iPath 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 > &iPathTemp, const vector< bool > &bVerticesLinkable)
 Essaie de construire des En depuis un An. More...
 
void AnToEn_AnToTEn (const vector< short unsigned int > &iPathTemp, const vector< bool > &bVerticesLinkable, const bool &bSpherical, const short unsigned int &iStart)
 Try to foind an En from an An. More...
 
void B3ToF4_B4ToTF4 (const vector< bool > &bVerticesBeginLinkable, vector< short unsigned int > iPathTemp, const short unsigned int &iVEnd)
 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 &bSpherical, GraphsProduct &gp, vector< bool > &bGPVerticesNonLinkable)
 Try to find products of connected graphs. More...
 
void bCanBeFiniteCovolume_computeGraphsProducts (GraphsListIterator grIt, GraphsProduct &gp, vector< bool > &bGPVerticesNonLinkable)
 
void bCanBeFiniteCovolume_complete_computeGraphsProducts (GraphsListIterator grIt, GraphsProduct &gp, vector< bool > &bGPVerticesNonLinkable)
 
mpz_class i_orderFiniteSubgraph (const unsigned int &iType, const unsigned int &iDataSupp)
 Order of a connected spherical graph. More...
 
bool b_isGraph_cocompact_finiteVolume_parallel (unsigned int iIndex)
 Check whether the graph is cocompact or not or has finite covolume or not Called by: iIsGraphCocompact and iIsFiniteCovolume. More...
 
bool b_isGraph_cocompact_finiteVolume_sequential (unsigned int iIndex)
 Check whether the graph is cocompact or not or has finite covolume or not Called by: iIsGraphCocompact and iIsFiniteCovolume. More...
 
void growthSeries_symbolExponentFromProduct (const vector< vector< short unsigned int > > &iProduct, vector< unsigned int > &iSymbol, unsigned int &iExponent) const
 
void growthSeries_symbolExponentFromProduct (const vector< vector< short unsigned int > > &iProduct, string &strSymbol, unsigned int &iExponent) const
 
void growthSeries_parallel ()
 
void growthSeries_sequential ()
 
void growthSeries_details ()
 
void growthSeries_mergeTerms (vector< mpz_class > &iPolynomial, vector< unsigned int > &iSymbol, vector< mpz_class > iTemp_polynomial, const vector< unsigned int > &iTemp_symbol, mpz_class biTemp=1)
 

Private Attributes

string strError
 Error code. More...
 
bool bDebug
 If true, prints additionnal information. More...
 
bool bUseOpenMP
 Use OpenMP. More...
 
bool bWriteInfo
 If we want to write informations (false if CoxIter is used "as a plugin") More...
 
bool bWriteProgress
 If we want to display the progress // TODO: option. More...
 
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 strOuputMathematicalFormat
 Format for mathematical output (generic, mathematica) More...
 
unsigned int iVerticesCount
 Number of vertices. More...
 
unsigned int iDimension
 Dimension (or 0) More...
 
unsigned int iSphericalMaxRankFound
 Maximal rank for a spherical graph. More...
 
unsigned int iEuclideanMaxRankFound
 Maximal rank for an euclidean graph. More...
 
bool bDimension_guessed
 If the dimension was not specified but guessed. More...
 
bool bGraphExplored
 True if we looked for connected subgraphs (affine and spherical) More...
 
bool bGraphsProductsComputed
 True if we computed the graphs products. More...
 
bool bGrowthSeriesComputed
 True if we computed the growth series. More...
 
bool bHasDottedLine
 True if the graph has a dotted line. More...
 
int iHasDottedLineWithoutWeight
 If the graph dotted lines without weight (-1: maybe, 0: no, 1: yes) More...
 
bool bHasBoldLine
 True if the graph has a bold line. More...
 
bool bCheckCocompactness
 True if we want to check the cocompacity. More...
 
bool bCheckCofiniteness
 True if we want to check the finite covolume condition. More...
 
int iIsCocompact
 1 If cocompact, 0 if not, -1 if don't know, -2 if not tested More...
 
int iIsArithmetic
 1 If arithmetic, 0 if non-arithmetic, -1 if don't know More...
 
int iIsFiniteCovolume
 1 If finite covolume, 0 if not, -1 if don't know (or cannot know), -2 if not tested More...
 
vector< string > strVerticesRemove
 Vertices to be removed. More...
 
vector< string > strVertices
 Vertices to be taken. More...
 
map< string, unsigned int > map_vertices_labelToIndex
 For the correspondance: label <-> indexes of vertices. More...
 
vector< string > map_vertices_indexToLabel
 For the correspondance: label <-> indexes of vertices. More...
 
vector< vector< unsigned int > > iCoxeterMatrix
 Coxeter matrix. More...
 
map< unsigned int, string > strWeights
 Weights of the dotted lines (via linearization) More...
 
vector< vector< bool > > bEdgesVisited
 For the DFS: traversed edges. More...
 
vector< bool > bVerticesVisited
 For the DFS: traversed vertices. More...
 
vector< short unsigned int > iPath
 chemin en cours (pour le DFS) More...
 
string strGramMatrixField
 Field generated by the entries of the Gram matrix. More...
 
bool bGramMatrixField
 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...
 
vector< vector< GraphsProductSet > > graphsProducts
 
vector< vector< GraphsProductSet > > graphsProducts_bCanBeFiniteCovolume
 
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 > iFactorials
 
vector< mpz_class > iPowersOf2
 Some factorials and powers of two. More...
 
MPZ_rational brEulerCaracteristic
 Euler characteristic. More...
 
string strEulerCharacteristic_computations
 Euler characteristic (without the computations done) More...
 
int iFVectorAlternateSum
 Alternating sum of the components of the f-vector. More...
 
vector< unsigned int > iFVector
 F-vector. More...
 
unsigned int iVerticesAtInfinityCount
 Number of vertices at infinity. More...
 
vector< mpz_class > growthSeries_iPolynomialDenominator
 (i-1)th term contains the coefficient of x^i More...
 
vector< unsigned int > growthSeries_iCyclotomicNumerator
 Contains a list oif cyclotomic polynomials. More...
 
bool growthSeries_bFractionReduced
 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)) More...
 
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::CoxIter ( )

Default constructor. Initialize the default values.

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

Constructor.

Parameters
iMatrix(const vector< vector<unsigned int> >& ) Coxeter matrix
iDimension(const unsigned int & ) Dimension

CoxIter does not verification on iMatrix. Especially, it is assumed that iMatrix is symmetric

CoxIter::~CoxIter ( )
CoxIter::CoxIter ( const CoxIter )
private

We do not want to do this.

Member Function Documentation

CoxIter::addGraphsFromPath ( )
private

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

Based on the content of iPath

CoxIter::AnToEn_AnToTEn ( const vector< short unsigned int > &  iPathTemp,
const vector< bool > &  bVerticesLinkable 
)
private

Essaie de construire des En depuis un An.

Parameters
iPathTemp(vector<short unsigned int>& ) Chemin actuel composant le An
bVerticesLinkable(const vector< bool >& ) Ce qui est liable ou non au graphe
CoxIter::AnToEn_AnToTEn ( const vector< short unsigned int > &  iPathTemp,
const vector< bool > &  bVerticesLinkable,
const bool &  bSpherical,
const short unsigned int &  iStart 
)
private

Try to foind an En from an An.

Parameters
iPathTemp( const vector<unsigned int>& ) Vertices of the An
bVerticesLinkable(const vector<bool> & ) Linkable vertices
bSpherical(const bool& ) True if spherical, false if euclidean
iStart(const unsigned int& ) Starting point
CoxIter::B3ToF4_B4ToTF4 ( const vector< bool > &  bVerticesBeginLinkable,
vector< short unsigned int >  iPathTemp,
const short unsigned int &  iVEnd 
)
private

Essaie de construire un F4 depuis un B3.

Parameters
bVerticesBeginLinkable(const vector<bool> & ) What's linkable to the B3
iPathTemp(vector<unsigned int>) Vertices of the B3
iVEndIndex of the vertex connected by a 4
CoxIter::b_isGraph_cocompact_finiteVolume_parallel ( unsigned int  iIndex)
private

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

Parameters
iIndex(unsigned int ): 1 if test for compacity, 2 if test for the finite covolume
Returns
True or false
CoxIter::b_isGraph_cocompact_finiteVolume_sequential ( unsigned int  iIndex)
private

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

Parameters
iIndex(unsigned int ): 1 if test for compacity, 2 if test for the finite covolume
Returns
True or false
CoxIter::bCanBeFiniteCovolume ( )

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 bCheckFiniteCovolume after that, most of the time).

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

< Current graphs product

CoxIter::bCanBeFiniteCovolume_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.

< Current graphs product

void CoxIter::bCanBeFiniteCovolume_complete_computeGraphsProducts ( GraphsListIterator  grIt,
GraphsProduct gp,
vector< bool > &  bGPVerticesNonLinkable 
)
private
void CoxIter::bCanBeFiniteCovolume_computeGraphsProducts ( GraphsListIterator  grIt,
GraphsProduct gp,
vector< bool > &  bGPVerticesNonLinkable 
)
private
CoxIter::bEulerCharacteristicFVector ( )

Conmpute the euler characteristic and f-vector.

Returns
True if success
CoxIter::bIsVertexValid ( const string &  strVertexLabel) const

Test if a vertex exists in the graph.

Parameters
strVertexLabel(const string& ) Label of the vertex
Returns
True if the vertex exists, false otherwise
CoxIter::bReadGraphFromFile ( const string &  strInputFilename)

Read the graph from a file.

Parameters
strInputFilename(const string& ) Path to the file
Returns
True if success
CoxIter::bRunAllComputations ( )

Do all the computations.

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

Returns
True if success
CoxIter::bWriteGraph ( const string &  strFilename)

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

Parameters
strFilename(const string & )
Returns
True if success, false otherwise
CoxIter::bWriteGraphToDraw ( const string &  strOutFilenameBasis)

Write the graph in a file for GraphViz.

The graph is written in szOutputGraphFilename + ".graphviz"

Parameters
strOutFilenameBasis(const string& ) Filename
Returns
True if OK, false otherwise
CoxIter::computeGraphsProducts ( )

Compute the possible products of the irreducible graphs.

< Current graphs product

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

Try to find products of connected graphs.

Parameters
grIt(GraphsListIterator ): Iterator on the list
graphsProductsCount(vector< map<vector< vector<short unsigned int> >, unsigned int> >* ) Point to the list of graphs
bSpherical(const bool& ): True if spherical, false if euclidean
gp(GraphsProduct& ) To store the product (for the cocompacity and finite covolume tests)
bGPVerticesNonLinkable(vector< bool >& ) Vertices which cannot be linked to the current product
CoxIter::DFS ( unsigned int  iRoot,
unsigned int  iFrom 
)
private

Look for all the An starting from a given vertex.

Thie function calls addGraphsFromPath() for each maximal An found

Parameters
iRootStarting point
iFromPrevious vertex (or iRoot if first call)
CoxIter::exploreGraph ( )

Explore the graph (via iCoxeterMatrix) to gind subgraphs.

First, we find all the chains startings from every vertex. Then, we wxpand the chains to spherical and euclidean graphs

CoxIter::get_array_str_2_GramMatrix ( ) const

Return the entries of 2*G (string)

Returns
Entries of 2*G
bool CoxIter::get_b_hasEuclideanGraphsOfRank ( const unsigned int &  iRank) const
bool CoxIter::get_b_hasSphericalGraphsOfRank ( const unsigned int &  iRank) const
CoxIter::get_bDebug ( ) const

Return get_bDebug.

Returns
get_bDebug
CoxIter::get_bDimensionGuessed ( ) const

Return true if the dimension was guessed.

Returns
True if the dimension was guessed
CoxIter::get_bGrowthSeriesReduced ( )

Return true if the fraction is reduced.

Returns
True if the fraction is reduced
CoxIter::get_bHasDottedLine ( ) const

Does the graph have at least one dotted edge?

Returns
Yes if the graph has at least one dotted edge
CoxIter::get_brEulerCaracteristic ( ) const

return brEulerCaracteristic

Returns
brEulerCaracteristic (MPZ_rational)
CoxIter::get_bWriteInfo ( ) const

Return bWriteInfo.

Returns
bWriteInfo
GraphsList * CoxIter::get_gl_graphsList_euclidean ( ) const
GraphsList * CoxIter::get_gl_graphsList_spherical ( ) const
CoxIter::get_iCoxeterMatrix ( ) const

Return the Coxeter matrix.

Return the weights of the dotted lines.

Returns
Coxeter matrix
Weights of the dotted lines
CoxIter::get_iDimension ( ) const

Return the dimension.

Returns
Dimension (0 if not specified/guessed)
CoxIter::get_iFVector ( ) const

Return the f-vector.

Returns
f-vector
CoxIter::get_iFVectorAlternateSum ( ) const

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

Returns
Alternating sum of the componenents of the f-vector (int)
CoxIter::get_iGrowthSeries ( vector< unsigned int > &  iCyclotomicNumerator,
vector< mpz_class > &  iPolynomialDenominator,
bool &  bReduced 
)

Return the growth series of the group.

Parameters
iCyclotomicNumerator(vector<unsigned int>& ) Numerator (cyclotomic factors)
iPolynomialDenominator(vector< mpz_class >& ) Denominator
bReduced(bool& ) True if the fraction is reduced
vector< mpz_class > CoxIter::get_iGrowthSeries_denominator ( )
CoxIter::get_iHasDottedLineWithoutWeight ( ) const

Does the graph have dotted edges without weights?

Returns
-1: maybe, 0: no, 1: yes
CoxIter::get_iIrreducibleSphericalGraphsCount ( ) const

Return the number of irreducible spherical graphs.

Returns
Return the number of irreducible spherical graphs
CoxIter::get_iIsArithmetic ( ) const

Arithmetic?

Returns
1 if arithmetic, 0 if not, -1 if not known
CoxIter::get_iIsCocompact ( )

Return the value of iIsCompact.

Returns
1 if cocompact, 0 if not, -1 if not tested
CoxIter::get_iIsFiniteCovolume ( )

Return the value of iIsFiniteCovolume.

Returns
1 if finite covolume, 0 if not, -1 if not tested
CoxIter::get_iVertexIndex ( const string &  strVertexLabel) const

Get the index of a vertex.

Parameters
strVertexLabel(const string& ) Label of the vertex
Returns
Index of the vertex (throw an exception if the vertex does not exist)
CoxIter::get_iVerticesAtInfinityCount ( ) const

Return the number of vertices at infinity.

Returns
Return the number of vertices at infinity
CoxIter::get_iVerticesCount ( ) const

Retourne le nombre de sommets du graphe.

Returns
Retourne le nombre de sommets du graphe (int)
CoxIter::get_ptr_graphsProducts ( ) const

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

CoxIter::get_str_map_vertices_indexToLabel ( ) const

Return the label of the vertices.

Returns
The labels of the vertices
CoxIter::get_strCoxeterGraph ( ) const

Returns the Coxeter graph.

Returns
Gram graph (string)
CoxIter::get_strCoxeterMatrix ( ) const

Return the Coxeter matrix.

Returns
Coxeter matrix (string)
CoxIter::get_strError ( ) const

Retourne le code d'erreur.

Returns
Code d'erreur (string)
CoxIter::get_strEulerCaracteristic ( ) const

return brEulerCaracteristic

Returns
Euler characteristic (string)
CoxIter::get_strEulerCharacteristic_computations ( ) const

Return the computations needed to determine Euler's characteristic.

Returns
strEulerCharacteristic_computations (string)
CoxIter::get_strGramMatrix ( ) const

Returns the Gram matrix.

Returns
Gram matrix (string)
CoxIter::get_strGramMatrix_GAP ( ) const

Returns the Gram matrix (format GAP)

Returns
Gram matrix (string)
CoxIter::get_strGramMatrix_LaTeX ( ) const

Returns the Gram matrix (format LaTeX)

Returns
Gram matrix (string)
CoxIter::get_strGramMatrix_Mathematica ( ) const

Returns the Gram matrix (format Mathematica)

Returns
Gram matrix (string)
CoxIter::get_strGramMatrix_PARI ( ) const

Returns the Gram matrix (format PARI)

Returns
Gram matrix (string)
CoxIter::get_strGramMatrixField ( ) const

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

Returns
Field generated by the entries of the Gram matrix (string)
string CoxIter::get_strGrowthSeries ( )
string CoxIter::get_strGrowthSeries_raw ( )
CoxIter::get_strVertexLabel ( const unsigned int &  iVertex) const

Get the label of a vertex.

Parameters
iVertex(const unsigned int& ) Index of the vertex
Returns
Label of the vertex (throw an exception if the vertex does not exist)
std::map< unsigned int, string > CoxIter::get_strWeights ( ) const
CoxIter::growthSeries ( )

Compute the growth series

Remarks
The only purpose of this function is to call growthSeries_parallel or growthSeries_sequential
void CoxIter::growthSeries_details ( )
private
CoxIter::growthSeries_mergeTerms ( vector< mpz_class > &  iPolynomial,
vector< unsigned int > &  iSymbol,
vector< mpz_class >  iTemp_polynomial,
const vector< unsigned int > &  iTemp_symbol,
mpz_class  biTemp = 1 
)
private

Given the parameters, compute iPolynomial/iSymbol += iTemp_polynomial/iTemp_symbol

Parameters
iPolynomial(vector< mpz_class >& ) First polynomial (by reference)
iSymbol(vector<short unsigned int>& ) First symbol (by reference)
iTemp_polynomial(vector< mpz_class > ) Second polynomial
iTemp_symbol(const vector<short unsigned int>& ) Second symbol
biTemp(mpz_class ) Eventually, some coefficient for the second polynomial
Returns
Nothing but the first two parameters are modified
CoxIter::growthSeries_parallel ( )
private

Compute the growth series

CoxIter::growthSeries_sequential ( )
private

Compute the growth series

CoxIter::growthSeries_symbolExponentFromProduct ( const vector< vector< short unsigned int > > &  iProduct,
vector< unsigned int > &  iSymbol,
unsigned int &  iExponent 
) const
private

From a product of graphs, compute the corresponding symbol [n1, n2, ..., nk] together with the exponent.

Parameters
iProduct(const vector< vector<short unsigned int> >& ) The product of graphs
iSymbol(vector<short unsigned int>& ) [i] = j means [i, ..., i] j times (parameter by reference)
iExponent(unsigned int& ) The exponent
CoxIter::growthSeries_symbolExponentFromProduct ( const vector< vector< short unsigned int > > &  iProduct,
string &  strSymbol,
unsigned int &  iExponent 
) const
private

From a product of graphs, compute the corresponding symbol [n1, n2, ..., nk] together with the exponent.

Parameters
iProduct(const vector< vector<unsigned int> >& ) The product of graphs
strSymbol(string& )
iExponent(u nsigned int& ) The exponent
CoxIter::i_orderFiniteSubgraph ( const unsigned int &  iType,
const unsigned int &  iDataSupp 
)
private

Order of a connected spherical graph.

Parameters
iTypeType du graphe (0 = An, 1=Bn, ...)
iDataSuppValeur du n pour presque tous les graphes, poids pour un G_2^n
Returns
Ordre (unsigned long int)
CoxIter::iIsGraphCocompact ( )

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 iIsCocompact
CoxIter::initializations ( )
private

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

CoxIter::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.

Returns
Value of iIsFiniteCovolume
CoxIter::map_vertices_labels_addReference ( const string &  strLabel)

Add a references for a new vertex.

Parameters
strLabel(const string& ) Label of the vertec
CoxIter::map_vertices_labels_create ( )

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

CoxIter::map_vertices_labels_reinitialize ( )

Create labels if there with int.

CoxIter::map_vertices_labels_removeReference ( const unsigned int &  iIndex)

Remove the references to a vertex (for the label)

Parameters
iIndex(const unsigned int& ) iIndex of the vertex
CoxIter::parseGraph ( istream &  streamIn)

Read and parse graph from stream.

Parameters
streamIn(const ifstream& ) Stream to the content (file or std::cin)
Returns
True if success
CoxIter::printCoxeterGraph ( )

Print Coxeter graph.

CoxIter::printCoxeterMatrix ( )

Print Coxeter matrix.

CoxIter::printEdgesVisitedMatrix ( )

Display the visited edges.

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
CoxIter::printGramMatrix ( )

Print the Gram matrix.

CoxIter::printGramMatrix_GAP ( )

Print the Gram matrix (format: GAP)

CoxIter::printGramMatrix_LaTeX ( )

Print the Gram matrix (format: LaTeX)

CoxIter::printGramMatrix_Mathematica ( )

Print the Gram matrix (format: Mathematica)

CoxIter::printGramMatrix_PARI ( )

Print the Gram matrix (format: PARI)

CoxIter::printGrowthSeries ( )

Display the growth series.

CoxIter::printPath ( )
private

Print the iPath vector.

void CoxIter::set_bCheckCocompactness ( const bool &  bValue)
void CoxIter::set_bCheckCofiniteness ( const bool &  bValue)
void CoxIter::set_bDebug ( const bool &  bValue)
void CoxIter::set_bUseOpenMP ( const bool &  bValue)
CoxIter::set_bWriteInfo ( const bool &  bNewValue)

Set bWriteInfo.

Parameters
bNewValue(const bool& ) The new value
Returns
void
CoxIter::set_iCoxeterMatrix ( const vector< vector< unsigned int > > &  iMat)

Set the Coxeter matrix.

Parameters
iMat(const vector< vector<short unsigned int> >& ) The matrix
CoxIter::set_iDimension ( const unsigned int &  iDimension_)

Update the member iDimension.

CoxIter::set_iIsArithmetic ( const unsigned int &  iArithmetic)

Update the member iIsArithmetic.

This is used by the Arithmeticity class

void CoxIter::set_sdtoutToFile ( const string &  strFilename)
void CoxIter::set_strOuputMathematicalFormat ( const string &  strO)
void CoxIter::set_strOutputFilename ( const string &  strValue)
void CoxIter::set_strVerticesToConsider ( const vector< string > &  strVerticesToConsider)
void CoxIter::set_strVerticesToRemove ( const vector< string > &  strVerticesRemove_)

Friends And Related Function Documentation

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

Member Data Documentation

bool CoxIter::bCheckCocompactness
private

True if we want to check the cocompacity.

bool CoxIter::bCheckCofiniteness
private

True if we want to check the finite covolume condition.

bool CoxIter::bCoutFile
private

True if we want to redirect cout to a file.

bool CoxIter::bDebug
private

If true, prints additionnal information.

bool CoxIter::bDimension_guessed
private

If the dimension was not specified but guessed.

vector< vector<bool> > CoxIter::bEdgesVisited
private

For the DFS: traversed edges.

bool CoxIter::bGramMatrixField
private

True if the field was determined.

bool CoxIter::bGraphExplored
private

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

bool CoxIter::bGraphsProductsComputed
private

True if we computed the graphs products.

bool CoxIter::bGrowthSeriesComputed
private

True if we computed the growth series.

bool CoxIter::bHasBoldLine
private

True if the graph has a bold line.

bool CoxIter::bHasDottedLine
private

True if the graph has a dotted line.

MPZ_rational CoxIter::brEulerCaracteristic
private

Euler characteristic.

bool CoxIter::bUseOpenMP
private

Use OpenMP.

vector< bool > CoxIter::bVerticesVisited
private

For the DFS: traversed vertices.

bool CoxIter::bWriteInfo
private

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

bool CoxIter::bWriteProgress
private

If we want to display the progress // TODO: option.

GraphsList* CoxIter::graphsList_euclidean
private

Pointer to the list of euclidean graphs.

GraphsList* CoxIter::graphsList_spherical
private

Pointer to the list of spherical graphs.

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 bCanBeFiniteCovolume_complete)

CoxIter::graphsProducts_bCanBeFiniteCovolume
private

Used in bCanBeFiniteCovolume and bCanBeFiniteCovolume_complete [0] Euclidean products of codimension 0

OR

[i] => Euclidean products of rank i

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

CoxIter::graphsProductsCount_spherical
private
bool CoxIter::growthSeries_bFractionReduced
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))

vector<unsigned int> CoxIter::growthSeries_iCyclotomicNumerator
private

Contains a list oif cyclotomic polynomials.

vector< mpz_class > CoxIter::growthSeries_iPolynomialDenominator
private

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

string CoxIter::growthSeries_raw
private

Row series, not simplified.

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

Coxeter matrix.

unsigned int CoxIter::iDimension
private

Dimension (or 0)

unsigned int CoxIter::iEuclideanMaxRankFound
private

Maximal rank for an euclidean graph.

vector< mpz_class > CoxIter::iFactorials
private
vector<unsigned int> CoxIter::iFVector
private

F-vector.

int CoxIter::iFVectorAlternateSum
private

Alternating sum of the components of the f-vector.

int CoxIter::iHasDottedLineWithoutWeight
private

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

int CoxIter::iIsArithmetic
private

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

int CoxIter::iIsCocompact
private

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

int CoxIter::iIsFiniteCovolume
private

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

vector<short unsigned int> CoxIter::iPath
private

chemin en cours (pour le DFS)

vector< mpz_class > CoxIter::iPowersOf2
private

Some factorials and powers of two.

unsigned int CoxIter::iSphericalMaxRankFound
private

Maximal rank for a spherical graph.

unsigned int CoxIter::iVerticesAtInfinityCount
private

Number of vertices at infinity.

unsigned int CoxIter::iVerticesCount
private

Number of vertices.

vector< string > CoxIter::map_vertices_indexToLabel
private

For the correspondance: label <-> indexes of vertices.

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

For the correspondance: label <-> indexes of vertices.

ofstream* CoxIter::outCout
private

Flow to the file.

streambuf* CoxIter::sBufOld
private

To reset the cout, at the end.

string CoxIter::strError
private

Error code.

string CoxIter::strEulerCharacteristic_computations
private

Euler characteristic (without the computations done)

string CoxIter::strGramMatrixField
private

Field generated by the entries of the Gram matrix.

string CoxIter::strOuputMathematicalFormat
private

Format for mathematical output (generic, mathematica)

vector< string > CoxIter::strVertices
private

Vertices to be taken.

vector< string > CoxIter::strVerticesRemove
private

Vertices to be removed.

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

Weights of the dotted lines (via linearization)


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