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.

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

- --help - displays brief information on the purpose of the program and its command-line syntax (also if invoked with no arguments)
- --quiet - suppresses output to the screen (makes the program run quietly)
- --log filename - saves all the output except for progress indicators to the given file

**homchain** - computes the homology groups over **Z**
or **Z**_{p} 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*

**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-perfectness*assumption
of the *chmap* program

**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

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

**celbetti** - computes the Betti numbers of a cubical complex
or a pair of cubical complexes over **Z** or **Z**_{p}
(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 **Z**_{p}
(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 **R**^{4}

**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 **Z**_{p}
(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*)

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