Basic Applied Topology Subprograms

The Basic Applied Topology Subprograms (BATS) are a C++ header-only library for applied algebraic topology. It includes functionality for

  • Creation of simplicial, cubical, and cell complexes, as well as cellular maps

  • Implementation of chain and homology functors

  • Filtered complexes and persistent homology

  • Diagrams of spaces and maps, and computation of zigzag homology

  • Topological constructions such as Vietoris-Rips complexes, Witness complexes, Nerves of covers

  • Sparse linear algebra over (finite) fields

  • And more!

BATS attempts to balance performance with extensibility. The library uses template metaprogramming to make it easy to swap in and out different constructions while maintaining a consistent core functionality.


There are many very high-performance libraries for computing things like persistent homology that have been developed over the past decade. Unlike many of these libraries BATS is focused on functorality, and provides functionality to handle maps between topological spaces, chain maps, and induced maps on homology. The goal is to make it easier for researchers and practitioners to implement and explore the vast back catalog of algebraic topology while also providing applied functionality.

Indices and tables