SimplicialHomology is a Wolfram language paclet (package) for constructing, manipulating, and analysing abstract simplicial complexes. It provides tools for computing simplicial homology, performing common topological constructions, and studying combinatorial invariants of finite simplicial complexes. So far, Mathematica lacked in-built or third party support for simplicial homology or discrete topology in general. Primarily, that motivated the development of this package. I have largely taken both inspiration and reference from the implementation of simplicial complexes in sagemath (Python).
Features include construction of simplicial complexes from facets or cells, computation of reduced and unreduced homology (or cohomology) groups over integers, rations, or finite rings, Euler characteristic and f-vectors, joins, cones, suspensions, stars, links, and access to a collection of standard and enumerated simplicial complexes for testing and experimentation. The paclet is designed for research, education, and computational topology workflows in the Wolfram language.
On arXiv: https://arxiv.org/abs/2608.14240v1
Wolfram paclet repository: https://resources.wolframcloud.com/PacletRepository/resources/Taggar/SimplicialHomology/
Easily install the package from Wolfram paclet repository using the following command:
PacletInstall["Taggar/SimplicialHomology"]Import the package by running
In[1]:= <<Taggar`SimplicialHomology`Create a simplicial complex using facets as follows:
In[2]:= S1 = SimplicialComplex[{{1, 2}, {2, 3}, {3, 1}}];or using one of the named objects:
In[3]:= torus = SimplicialComplex["Torus"];Calculate the homology groups of torus:
In[4]:= HomologyGroup[torus]
Out[4]= <|0 -> Integers, 1 -> Superscript[Integers, 2], 2 -> Integers|>or Betti numbers of S1:
In[5]:= BettiNumber[S1]
Out[5]= <|0 -> 1, 1 -> 1|>Reduced homology, homology over other rings such as rationals or finite rings, and cohomology can also be computed using the package. Calculate cone, suspension, or join of spaces:
In[6]:= SimplicialCone[torus]
In[7]:= SimplicialSuspension[S1]
In[8]:= SimplicialJoin[S1, torus]Check that two simplicial complexes are isomorphic to each other:
In[9]:= SimplicialIsomorphicQ[
SimplicialComplex[{{1, 2, 3}}],
SimplicialComplex[{{a, b, c}, {b, c}}]]
Out[9]= TrueFind the automorphism group of a simplicial complex:
In[10]:= SimplicialAutomorphismGroup[SimplicialComplex["RealProjectivePlane"]]
Out[10]= PermutationGroup[{Cycles[{{3, 5},{4, 6}}], Cycles[{{2, 3}, {5, 6}}], Cycles[{{1, 2}, {3, 5}}]}]Verify that it is isomorphic to the alternating group of degree 5:
In[11]:= ResourceFunction["FindGroupIsomorphism"][%, AlternatingGroup[5]]
Out[11]= {{1, 4, 14, 19, 27, 34, 42, 47, 57, 60, 12, 9, 50, 55, 37, 40, 20, 17, 35, 30, 23, 18, 54, 59, 5, 8, 28, 25, 46, 39, 32, 29, 45, 48, 10, 3, 58, 51, 16, 13, 43, 38, 22, 15, 33, 36, 53, 56, 7, 2, 52, 49, 31, 26, 44, 41, 24, 21, 11, 6}}Construct stars or links of simplices:
In[12]:= sc = SimplicialComplex[{{1, 2, 3}, {2, 3, 4}}];
In[13]:= SimplicialStar[sc, {1}]
In[14]:= SimplicialLink[sc,{2, 3}]For a full reference, visit the homepage at Wolfram paclet repository here.
- simplicial maps
- wedge products
- barycentric subdivisions
If you use this package for research or otherwise, please cite it as follows:
@misc{taggar2026sh,
title={SimplicialHomology: implementation of abstract simplicial complex in Mathematica},
author={Naman Taggar},
year={2026},
eprint={2608.14240},
archivePrefix={arXiv},
primaryClass={math.AT},
url={https://arxiv.org/abs/2608.14240},
}
Version 1.2.1, on 26 August, 2026 — random simplicial complexes added in examples. log
Version 1.2.0, on 23 August, 2026 — chain complexes are now formalised as an object, cohomology is thus also implemented; a test-suite is added. log
Version 1.1.1, on 8 August, 2026 — support for simplicial products and a bug fix. log
Version 1.1.0, on 1 August, 2026 — support for relative homology and stars & links. log
Version 1.0.0, on 10 July, 2026 — initial public release.
Version 0.0.1, on 08 July, 2026 — initial upload with homology, Betti numbers and joins.
Please feel free to give your feedback on the package, or to contribute with an issue or a PR! The test files are in Test/ directory and may be run to ensure everything functions correctly.
[1] Munkres, J. R. Elements of Algebraic Topology, Addison Wesley Publishing Company, 1984.
[2] Hatcher A., Algebraic Topology, Cambridge University Press, Cambridge, 2002. W. Kühnel and T. F. Banchoff, The 9-vertex complex projective plane, Math. Intelligencer 5 (1983), no. 3, 11-22. doi:10.1007/BF03026567
[3] M. Hachimori. http://infoshako.sk.tsukuba.ac.jp/~hachi/math/library/dunce_hat_eng.html.
[4] Anders Björner and Frank H. Lutz, Simplicial manifolds, bistellar flips and a 16-vertex triangulation of the Poincaré homology 3-sphere, Experiment. Math. 9 (2000), no. 2, 275-289.
[5] U. Brehm and W. Kuhnel, 15-vertex triangulations of an 8-manifold, Math. Annalen 294 (1992), no. 1, 167-193.
[6] M. E. Rudin. An unshellable triangulation of a tetrahedron. Bull. Amer. Math. Soc. 64 (1958), 90-91.
[7] Frank H. Lutz, Császár's Torus, Electronic Geometry Model No. 2001.02.069 (2002). http://www.eg-models.de/models/Classical_Models/2001.02.069/_direct_link.html.
[8] G. M. Ziegler. Shelling polyhedral 3-balls and 4-polytopes. Discrete Comput. Geom. 19 (1998), 159-174. doi:10.1007/PL00009339
[9] https://doc.sagemath.org/html/en/reference/topology/sage/topology/simplicial_complex.html
[10] https://doc.sagemath.org/html/en/reference/topology/sage/topology/simplicial_complex_examples.html
[11] https://doc.sagemath.org/html/en/reference/references/index.html
[12] https://resources.wolframcloud.com/FunctionRepository/resources/FindGroupIsomorphism/