The ChainCon Software (Release 0.03)

Chain Contractions, Homology and Cohomology Software and Examples

This page contains the software and examples referred to in the paper Computation of cubical homology, cohomology, and (co)homological operations via chain contraction by Paweł Pilarczyk and Pedro Real, published in Adv. Comput. Math., Vol. 41, No. 1 (2015), 253-275, DOI: 10.1007/s10444-014-9356-1.

A preprint of this paper can be downloaded here: [ PDF ]

The initial relase 0.01 of the software was updated over time, and a few additional features were added in the new releases, such as computation of the Eilenberg-Zilber contraction and the Steenrod squares.


1. Software

The algorithms described in the paper have been implemented in the C++ programming language for optimal effectiveness and flexibility. Although a lot of effort was put into making this software capable of processing large data structures with reasonable effectiveness, it was primarily intended to serve as a model implementation of the algorithms and concepts introduced in the paper, and thus its versatility and readability of the code was the priority, not the speed or optimized memory usage.

The provided software package is self-contained, that is, in order to compile and use it one only needs a standard C++ compiler, and no other programming libraries are necessary beyond the standard C++ library. This software uses a small amount of code from the Computational Homology Project (CHomP) programming library, and thus the few necessary files from that library have been included in the software for the convenience of users; these are the files whose names start with chomp or which are located in the chomp subdirectory.

The software consists of a programming library and several sample programs. The library has a thoroughly documented interface. For maximal ease of use, convenient command-line tools are provided, which read data from human-readable text files and output results to the screen in a format that can be either read by a human or further processed by simple scripts. Thanks to the latter, one can easily (although not very efficiently) interface with the algorithms from high-level systems, including well-known mathematical software packages, by means of saving data to a file, running the relevant program, and then reading the results from a file or files created by that program.

Documentation of the source code of the software was generated using the Doxygen system. In order to make this documentation as comprehensive as possible, the source code has been included in the documentation, and every class and function has been covered.


2. Files for download

The most up-to-date version of the chaincon software is as follows (compressed in Linux, note that it may be necessary to convert the text files for other systems):

  • chaincon-src.zip – the source code of the software library and programs
  • chaincon-ex.zip – examples with scripts for cmd and sh, and a python GUI browser
  • chaincon-cp2.zip – the data files with the definition of a cubical approximation of the complex projective plane (provided separately due to the large file size)
  • chaincon-dox.zip – HTML documentation of the source code (for convenient off-line browsing)
  • chaincon-deb64.zip – the command-line programs contained in the package precompiled for the 64-bit Debian GNU/Linux platform (using the GNU C++ 4.9.2 compiler)
  • chaincon-win32.zip – the command-line programs contained in the package precompiled for the 32-bit Microsoft Windows platform (using the MinGW port of the GNU C++ 4.9.1 cross-compiler in GNU/Linux)
Selected earlier versions of this software may be available upon request.