CHomP Programs

There are numerous programs included in the advanced version of the Homology Package. All of them are command-line driven utilities that can be launched from the text terminal by typing a suitable command. Moreover, all these programs run in the text mode, except for showcubes.

The programs that are contained in the Homology Package are described in short below. Moreover, each program displays a brief message on its purpose and usage if called without arguments. The text data format page explains how to understand the format of the input/output files used by the programs. Also, several examples are included in the Homology Package. They can be helpful in understanding how to use the programs.

It is recommended that one downloads the source code of the programs and compiles them oneslef; nevertheless, the executable programs already compiled for some popular systems (including Windows and Linux) are also available for download in the Download section of the CHomP website.


Common command-line arguments

Most programs in the package support the following common command-line arguments:


Programs for homology computation

homchain - computes the homology groups over Z or Zp of a chain complex, as well as the homomorphisms induced in homology by chain maps

homcubes - computes the (relative) homology of a set of cubes or a cubical set, as well as the homomorphism induced in homology by an acyclic combinatorial cubical multivalued map

homsimpl - computes the homology of a finite abstract simplicial complex or relative homology of a pair of simplicial complexes

indxpair - finds an index pair with Andrzej Szymczak's algorithm

homcub2l - computes the index map using double-layer cubical sets to overcome the problem with excision, as introduced in a paper by P. Pilarczyk and K. Stolot

chmap - constructs a chain selector of an almost perfect combinatorial cubical multivalued map; this program was written by Marcin Mazur and Jacek Szybowski (note: it does not support the common command-line arguments listed above)

chom - computes homology of a cubical sets using a geometric reduction approach; this program was written by Bill Kalies [more info] (note: it does not support the common command-line arguments listed above)

chomp - computes homology of cubical sets using one of the bitmap-based homology computation algorithms developped recently by Marian Mrozek; the program is capable of reading data in a variety of input formats, and it allows to use multiple homology computation engines, including the ones implemented in homcubes and chom


Programs for data verification

chkmvmap - verifies whether a combinatorial cubical multivalued map is suitable for the (relative) homology computation with homcubes

chkperf - verifies whether a combinatorial cubical multivalued map satisfies the almost-perfectnessassumption of the chmap program


Programs for converting data files

bit2pset - converts a set of cubes between the format used in the Bill Kalies' chom program and the format used in this Homology Package

bmp2pset - extracts a list of squares from an uncompressed Windows bitmap file

cell2cub - converts a set of cubical cells into a set of cubes; for every cell defined in the input file, if it spans across several cubes, then all the cubes it contains are written to the output file

cnvchmap - converts a chain map from the output format of the chmap program written by Marcin Mazur and Jacek Szybowski to the input format for homchain, which is necessary if one wants to compute the homomorphism induced in homology by such a map

cnvmvmap - converts a combinatorial cubical multivalued map from the format used in chmap by Marcin Mazur and Jacek Szybowski to the format used in the Homology Package, in which each cube is mapped to a set of cubes, not necessarily convex

cub2cell - converts a set of cubes to a set of corresponding cubical cells

cub2map - creates a map whose graph is stored as a set of cubes, or creates the combinatorial cubical multivalued indentity map on the given set of cubes

map2cub - extracts the domain, image, and/or graph of a combinatorial cubical multivalued map

pgm2pset - extracts a list of pixels or voxels from a raw bitmap data

pset2bmp - draws a 2-dimensional projection of a set of cubes onto one of the planes spanned by selected two axes


Programs for data manipulation

cubchain - creates a chain complex of a set of cubes

cubiproj - creates chain maps corresponding to the projections of a map whose graph is given onto its domain and codomain

cubdiff - computes the difference of two sets of cubes

cubslice - divides a set of cubes into subsets separated by hyperplanes

simchain - creates a chain complex of a simplicial complex

maprestr - computes the restriction of a map to the given subset of its domain

psetcomm - computes the common part of given sets of cubes

psetconn - splits a set of cubes into connected components

psetglue - computes the union of given sets of cubes

cubtop - manipulates with cubical sets; this program was written by Sylvain Bérubé and Anik Trahan [more info] (note: it does not support the common command-line arguments listed above)


Homolgy Library demonstration programs

celbetti - computes the Betti numbers of a cubical complex or a pair of cubical complexes over Z or Zp (compare this program with cubbetti and simbetti)

celreduc - collapses a cubical complex or a pair of cubical complexes and saves the result so that one can use homcubes -d to compute the homology (compare this program with simreduc)

cubbetti - computes the Betti numbers of a set of cubes or a pair of sets of cubes over Z or Zp (compare this program with celbetti and simbetti)

cubinclu - computes maps induced in homology by the inclusion maps of each set of cubes in a series into the next one

cubklein - creates a cubical approximation of the Klein bottle embedded in R4

cubreduc - verifies whether the union of two sets of cubes can be reduced to the first of them proving in this way that the inclusion of the first set into the union induces an isomorphism in homology

homcelmp - computes the homomorphism induced in homology by a given cubical multivalued map defined on cubical cells instead of full cubes

maphomol - computes the homomorphism induced in homology by a given combinatorial cubical multivalued map

simbetti - computes the Betti numbers of a simplicial complex or a pair of simplicial complexes over Z or Zp (compare this program with celbetti and cubbetti)

simreduc - collapses a simplicial complex or a pair of simplicial complexes and saves the result so that one can use homsimpl -d to compute the homology (compare this program with celreduc)


Visualization software

showcubes - displays 3-dimensional sets of cubes using OpenGL; note: this program must be compiled with the wxWidgets library