Partitionability checker ver 0.5
p_checker0.5.tar.gz
(May 6, 2023)
This is a C program for checking partitionability of simplicial complexes.
The program searches the possibility of partition by a depthfirst search.
(Until ver 0.3c, the program can only treated simplicial complexes of dimensions <= 3.
Now it can calculate higher dimensions.)
How to use.
 Download the archive file and type "tar xfz ⟨archive file⟩" (or "gunzip c ⟨archive file⟩  tar xf ") to produce
a directory named "p_checker*.*".
 Move to the directory and type "make". An executable named "p_checker" will be produced.
 Run the executable as follows:
% ./p_checker <datafile>
The program have four different functions for checking partitionability for:
 pure 2dimensional cases
 pure 3dimensional cases
 (pure and nonpure) cases up to dimension 3
 (pure and nonpure) cases for any dimension up to MAXDIM
(The functions for "pure 2dimensional" and "pure 3dimensional" cases uses
the information of hvectors and runs faster.
The functions for 2 and 3dimensional cases are faster since they use tables
of all possible types of intervals.)
Option can be given like
% ./p_checker [option] <datafile>
which forces the function for checking partitionability as follows:
 2pure : force using function for pure 2dimensional cases
 3pure : force using function for pure 3dimensional cases
 3 : force using function for (pure and nonpure) cases up to dimension 3
 dnonpure : force using function for (pure and nonpure) cases for any dimension up to MAXDIM
When running without any option, the program uses the suitable function
automatically.
How to describe the data file.
In the data file, we express the simplicial complex by a list of simplices.
The vertices are numbered by integers.
For example, a face with four vertices 1, 3, 4, 5 is expressed as follows.
1 3 4 5
The vertices are named by the natural numbers starting from 1.
(Do not use "0" or negative numbers.)
An example of a simplicial complex is as follows.
1 2 3 4
1 3 5 4
1 4 8
2 3 5
3 9
The example above shows a 3dimensional simplicial complex with 5 facets.
(This example is partitionable.)
The line starting from "#" will be ommited when parsing.
This can be used as comments.
The output will be as follows:
1 2 3 4 : empty
1 3 4 5 : 5
1 4 8 : 8
2 3 5 : 2 5
3 9 : 9
This means that the face poset of the complex can be partitoned into
the intervals [empty, 1234], [5, 1345], [8,148], [25,235], [9,39].
When the complex is not partitionable, the output is just "not partitionable".
[REMARK]

In the file "s_complex.h", the following constants are defined:
 MAXDIM : the maximum possible dimension of the simplicial complexes to be calculated.
 MAXLINE : the maximum number of lines for the input line.
 MAXVERT : the maximum number that can be used for the name of vertices.
By default, the numbers are: MAXDIM=20, MAXLINE=1000, MAXVERT=200.
If your need to calculate larger simplicial complexes, these values should be changed.

The function for ddimensional cases uses a hash table.
When a collision occures in the hashing function, it outputs "register in the next cell".
This is not an error and the computation will be done safely.
However, if it outputs too many lines of this message, it is better use a larger hash table
(for efficiency of the computation).
The size of the hash table is given by HASHSIZE in the file "hash.h".
(By default, it is 16777216 = 2^24.)

Until version 0.3b, the lower face of the interval is searched in the sequence
"dim d > empty set > dim 0 > ... > dim (d1)".
From version 0.3c, it is searched in the sequence "empty set > dim d > dim 0 > ...".
By this change, the output will be a little bit different from that of older versions.
Masahiro Hachimori
hachi@sk.tsukuba.ac.jp
This software is a byproduct of a work supported by KAKENHI #22K03399.