Function Repository Resource:

# PoincarePolynomial

Compute the Poincaré polynomial for a simplicial complex

Contributed by: Richard Hennigan (Wolfram Research)
 ResourceFunction["PoincarePolynomial"][cplx] gives the Poincaré polynomial for the specified simplicial complex cplx.

## Details and Options

In ResourceFunction["PoincarePolynomial"][cplx], the value for cplx can be any of the following:
 simplex a simplex as defined in the table below {simplex1,simplex2,…} a list of simplices {{v11,v12,…},…} a list of lists, where the vi,j correspond to simplex vertices Graph[…] a graph object MeshRegion[…] a mesh region
The value for simplex can be any of the following:
 Point[v] a point Line[{v1,v2}] a line segment Triangle[{v1,v2,v3}] or Polygon[{v1,v2,v3}] a filled triangle Tetrahedron[{v1,v2,v3,v4}] a filled tetrahedron Simplex[{v1,…,vn}] an n-1 dimensional simplex

## Examples

### Basic Examples (6)

Get the Poincaré polynomial for a simplex:

 In[1]:=
 Out[1]=

Get the Poincaré polynomial for a simplicial complex:

 In[2]:=
 Out[2]=

Get the Poincaré polynomial for a MeshRegion:

 In[3]:=
 Out[3]=

Specify the variable:

 In[4]:=
 Out[4]=

Obtain the Poincaré polynomial as a Function:

 In[5]:=
 Out[5]=

Obtain a Series:

 In[6]:=
 Out[6]=

### Scope (3)

Many graphics primitives that represent simplices can be used:

 In[7]:=
 Out[7]=
 In[8]:=
 Out[8]=
 In[9]:=
 Out[9]=

A simplicial complex can be specified as lists of indices:

 In[10]:=
 Out[10]=

Get the Poincaré polynomial for a graph:

 In[11]:=
 Out[11]=

### Properties and Relations (1)

The coefficient of xk in the Poincaré polynomial corresponds to the Betti number bk:

 In[12]:=
 In[13]:=
 Out[13]=

### Possible Issues (5)

PoincarePolynomial only considers unique vertices in each simplex:

 In[14]:=
 In[15]:=
 Out[15]=
 In[16]:=
 Out[16]=

As graphs, these are considered distinct:

 In[17]:=
 Out[17]=
 In[18]:=
 Out[18]=
 In[19]:=
 Out[19]=

The same is true for hypergraphs:

 In[20]:=
 Out[20]=

All graphs are treated as undirected:

 In[21]:=
 Out[21]=
 In[22]:=
 Out[22]=

This means that the first coefficient corresponds to the number of WeaklyConnectedGraphComponents instead of ConnectedGraphComponents:

 In[23]:=
 Out[23]=
 In[24]:=
 Out[24]=

The Poincaré polynomial does not identify links, knots or braids:

 In[25]:=
 Out[25]=
 In[26]:=
 Out[26]=

The Poincaré polynomial cannot determine orientability:

 In[27]:=
 Out[27]=
 In[28]:=
 Out[28]=

PoincarePolynomial only allows Polygon objects with three vertices:

 In[29]:=
 Out[29]=
 In[30]:=
 Out[30]=

### Neat Examples (1)

The Poincaré–Birdnardo polynomial is a special case of the Poincaré polynomial:

 In[31]:=
 Out[31]=
 In[32]:=
 Out[32]=

## Version History

• 1.0.0 – 13 May 2020