A Haskell rewrite of Kenzo, a collection of algorithms for 'effective algebraic topology'. The algorithms and implementations in Kenzo were created by Francis Sergeraert, Julio Rubio Garcia, Xavier Dousson, Ana Romero and many collaborators.
Writing it from scratch myself is the only chance I have of understanding it!
See the examples/
folder.
...
> let x = totalSpace s3 (Wbar kz1) fibration
> putStr "π₄ S³ is: "
> print (homology x !! 4)
π₄ S³ is: ℤ/2
> homology (Wbar (WbarDiscrete (Zmod 3)))
[ℤ,0,ℤ/3,0,ℤ/3,0,ℤ/(3^2),ℤ/3,ℤ/3,ℤ/3,ℤ/3 ⊕ ℤ/3,^C
A simplicial set X
is described by a type a
, containing whatever
data is required to specify X
, and a type GeomSimplex a
, whose
elements correspond to non-degenerate simplices (in Kenzo called
'geometric simplices'). Like Kenzo we also allow a predicate on
GeomSimplex a
specifying when an element actually describes a
geometric simplex and when it is 'spurious'.
An actual simplex of X
is a geometric simplex together with a
'formal degeneracy operator', which is a list of degeneracy operators
in a normal form. Face maps are implemented as functions from
geometric simplices to (possibly degenerate) simplices, and the
extension of these face maps to all simplices is forced by the
simplicial identities.
A simplicial set is of finite type if there is a finite number of
geometric simplices for each dimension, and there is a function giving
a list of these simplices for any dimension n
. It is not required
that there are finitely many geometric simplices overall.
The normalised chain complex N(X)
of X
has each N(X)_n
given
by the free abelian group on the set of nondegenerate n
-simplices of
X
, with the boundary of a simplex calculated similar to usual (the
alternating sum of face maps), but ignoring any degenerate faces.
If C(X)
is the ordinary chain complex of simplicial chains of X
,
the quotient map C(X) -> N(X)
is a quasi-isomorphism, and so if X
is of finite type, then the homology of X
can be computed via
N(X)
.
But many unavoidable simplicial sets (like K(ℤ,n)
and loop spaces
ΩX
) are not of finite type, and so we need some other way to
calculate their homology. This is where 'effective homology' comes in.
A reduction between chain complexes C
and D
is a strong
deformation retract of chain complexes. The data of a reduction
unwinds to a triple (f : C -> D
, g : D -> C
, h : C -> C
) where
f
and g
are degree 0, the homotopy operator h
is degree 1, and
certain equations involving these hold. A (strong chain)
equivalence between two chain complexes C
and D
is a span of
reductions l : E -> C
and r : E -> D
.
An effective homology structure on C
is an equivalence between C
and a chain complex F
of finite type.
A simplicial set with effective homology is a simplicial set X
equipped with an effective homology structure on N(X)
.
The point of Kenzo is that although constructions on simplicial sets sometimes do not preserve levelwise finiteness, they do extend to effective homology structures. And so if we begin with a finite simplicial complex and perform some constructions using it, then we can often compute the homology of the result even if the actual simplicial sets are now far too complicated to get a handle on.
- Definitions
- Chain Complex
- Bicomplex
- Tot
- Reduction
- Perturbation
- Strong Equivalence
- Composition via span
- Constructions
- Tensor (of chain complex)
- Functoriality
- Hom (of chain complex)
- 'Bicone' (specialised pushout for surjections)
- Bar
- Commutative algebra structure
- Functoriality
- Cobar
- Of 1-reduced
- Of 0-reduced
- Functoriality
- Tensor (of chain complex)
- Definitions
- Simplicial Set
- Simplicial Morphism
- Simplicial Group
- Kan Structure
- SSet With Effective Homology
- Principal Fibrations
- Discrete Vector Fields
- Coalgebra Structure on Chains
- Algebra Structure on Chains of Groups
- Kan Structure on Chains of Groups
- Finite Examples
- Spheres
- Treat
S¹
separately (not 1-reduced)
- Treat
- Moore Spaces
- Projective Spaces
- Lens Spaces
- Spheres
- Eilenberg-MacLane Spaces
-
K(ℤ,1)
-
K(ℤ/2,1)
(Can be made particularly efficient) -
K(ℤ/p,1)
-
- Constructions
- Products
- Group structure
- Total Space of Principal Fibration
- Loop Space
- Of 1-reduced
- Of 0-reduced
- Group structure
- Canonical twisting function
X -> GX
- Classifying Space
- For 0-reduced group
- For non-reduced group
- Special case for discrete groups
- Group Structure
- Canonical twisting function
WG -> G
- Suspension
- 0-reduced
- General Kan suspension
- Pushouts (of 1-reduced sSets)
- Other Finite Homotopy Colimits
- 'Nerve' taking a ChainComplex back to a sAb?
- Products
- Classifying Spaces
- Direct Reduction of
K(ℤ,1)
toS¹
- Of 0-reduced Abelian sGrps
- Of General sGrps
- Direct Reduction of
- Products
- Eilenberg-Zilber reduction
- Use specialised contraction maps for efficiency
- Fibrations
- Total Space from Base and Fibre ('Serre' problem)
- Fibre from Base and Total Space ('Eilenberg-Moore' problem)
- Loop Space
- Colimits
- Discrete Vector Fields
- Induced Reduction
- Products
- Fibrations
-
K(ℤ,1)
-
K(ℤ/n,1)
? - Classifying Spaces for 0-reduced sAb
- Homotopy Groups
- Cohomology Operations
- Fix space leaks, jeez
- Pretty-printing for everything (unicode sub/superscripts in output?)
- Docs for everything
- Move this list to Github issues
- Consolidate some files? Eg. Sum, Shift into ChainComplex
- Use bit operations eg from bits-extra for degeneracy operators.
- Short-circuits: e.g. composing with zero/id for morphism/reduction/equivalence
- Make sure things are being aggressively inlined
- Make homology calculation do less work: should just need SNF of one matrix and the rank of another.
- Improve Smith normal form code, would be better to call out to some existing library instead of rolling our own. The options appear to be LinBox or FLINT. The former appears to support sparse matrices better
- Check homology of
K(G,n)
calculations against known results - Add methods to produce representatives of homology classes
- Rewrite
Bar
to be a perturbedTensorCoalgebra
? - Rename
basepoint
togeomBasepoint
say
- I have switched a little terminology: I believe Kenzo uses 'effective' for finite-type things and 'locally effective' for what I am calling effective things, but I find this a bit confusing.
- In Kenzo, every sSet is conflated with its chain complex of normalised chains, here I have kept the two separate.
- Avoid over-engineering the Haskell as much as possible.
- That being said, the use of
Constrained.Category
is a bit of a mess. - There may be a way to unify some of the algorithms via bicomplexes and the 'generalised Eilenberg-Zilber theorem' relating the diagonal and total complexes. But the EZ-theorem only gives a strong deformation retract in special cases, in general it is just a chain homotopy equivalence.
- The classifying space functor
Wbar
factors through the 'total bisimplicial set' functor. But it would be difficult to describe the total functor on bisimplicial spaces algorithmically, because its definition involves the equaliser of certain face maps. So it only makes sense to implement bicomplexes and not bisimplicial sets. - Auto-formatting the code:
fourmolu -o -XTypeApplications -i $(find . -name '*.hs')
- Running Kenzo with SBCL:
etc.
> rlwrap sbcl (require :asdf) (load "kenzo.asd") (asdf:load-system "kenzo") (in-package :kenzo) (finite-ss-table '(a b 1 c (b a)))
- classes.lisp in Kenzo contains the meaning of some of the 4 letter
abbreviations
- ABSM = ABstract SiMplex
- GMSM = GeoMetric SiMplex
- CMBN = CoMBinatioN
- CFFC = CoeFFiCient
- GNRT = GeNeRaTor
- CMPR = CoMPaRison
- CMPRF = CoMPaRison Function
- ICMBN = Internal-CoMBiNation
- STRT = STRaTegy
- bsgn = BaSe GeNerator
- dffr = DiFFeRential
- grmd = GRound MoDule
- efhm = EFfective HoMology
- idnm = IDentification NuMber
- orgn = ORiGiN
- vctr = VeCToR
- intr-mrph = INTeRnal-MoRPHism (the class of actual functions implementing a morphism of simplicial sets or chain complexes)
- sbtr = SuBTRact
- crpr = CarRtesian PRoduct
- BRGN = BaR GeNerator
- TNPR = TeNsor PRoduct
- Unguessable CL functions
- (ash x n) = bit shift x left by n
- (add x y) and (sbtr x y) can sometimes actually be a use of the perturbation lemma(!!), depending on the types of the arguments.
- Kenzo homepage
- Kenzo documentation, likely out of date with the code in places
- 'Official' Kenzo mirror on GitHub, there are three different versions of the code here, I am not clear on what is gained/lost between them. There are online Jypter notebooks that let you play with Kenzo (I believe Kenzo-9) without having to figure out how to install and operate a Common Lisp environment
- Fork by Ana Romero + collaborators, has some added features over the mirror above, worth looking at resolutions.lisp and homotopy.lisp, but is missing all the discrete vector field code
- Modules written by Ana Romero, mostly to do with spectral sequences
Everything even remotely relevant to effective algebraic topology that I can find (not all of which is relevant for implementation). Some of the documents have multiple versions; I have tried to link to the most recent in each case. Some material is repeated in different references.
[1] Medina-Mardones, A.M. 2022. An axiomatic characterization of Steenrod’s cup-i products.
[2] Medina-Mardones, A.M. 2022. New formulas for cup-i products and fast computation of Steenrod squares.
[3] Franz, M. 2021. Szczarba’s twisting cochain and the Eilenberg-Zilber maps. Collectanea Mathematica. 72, 3 (2021), 569–586.
[4] Guidolin, A. and Romero, A. 2021. Computing higher Leray-Serre spectral sequences of towers of fibrations. Foundations of Computational Mathematics. 21, 4 (2021), 1023–1074.
[5] Kaufmann, R.M. and Medina-Mardones, A.M. 2021. Cochain level May-Steenrod operations. Forum Math. 33, 6 (2021), 1507–1526.
[6] Chen, R. 2020. E∞-Rings and Modules in Kan Spectral Sheaves. University of Michigan.
[7] Romero, A., Rubio, J., Sergeraert, F. and Szymik, M. 2020. A new Kenzo module for computing the Eilenberg-Moore spectral sequence. ACM Communications in Computer Algebra. 54, 2 (2020), 57–60.
[8] Romero, A., Rubio, J. and Sergeraert, F. 2019. An implementation of effective homotopy of fibrations. Journal of Symbolic Computation. 94, (2019), 149–172.
[9] Romero, A. and Sergeraert, F. 2019. The Eilenberg-Zilber theorem via discrete vector fields.
[10] Zhechev, S. 2019. Algorithmic aspects of homotopy theory and embeddability. Institute of Science; Technology Austria.
[11] Sergeraert, F. 2018. The homological hexagonal lemma. Georgian Mathematical Journal. 25, 4 (2018), 603–622.
[12] Vejdemo-Johansson, M. 2018. Algorithms in A∞-algebras. Georgian Mathematical Journal. 25, 4 (2018), 629–635.
[13] Chen, R., Kriz, I. and Pultr, A. 2017. Kan’s combinatorial spectra and their sheaves revisited. Theory and Applications of Categories. 32, (2017), No. 39, 1363–1396.
[14] Romero, A. and Sergeraert, F. 2017. A Bousfield-Kan algorithm for computing the effective homotopy of a space. Foundations of Computational Mathematics. 17, 5 (2017), 1335–1366.
[15] Hess, K. 2016. The Hochschild complex of a twisting cochain. Journal of Algebra. 451, (2016), 302–356.
[16] Filakovský, M. 2015. Algorithmic construction of the postnikov tower for diagrams of simplicial sets. Masaryk University.
[17] Romero, A. and Sergeraert, F. 2015. A combinatorial tool for computing the effective homotopy of iterated loop spaces. Discrete & Computational Geometry. 53, 1 (2015), 1–15.
[18] Čadek, M., Krčál, M., Matoušek, J., Sergeraert, F., Vokřínek, L. and Wagner, U. 2014. Computing all maps into a sphere. Journal of the ACM. 61, 3 (2014), Art. 17, 44.
[19] Čadek, M., Krčál, M., Matoušek, J., Vokřínek, L. and Wagner, U. 2014. Polynomial-time computation of homotopy groups and Postnikov systems in fixed dimension. SIAM Journal on Computing. 43, 5 (2014), 1728–1780.
[20] Cohen, C. and Mörtberg, A. 2014. A coq formalization of finitely presented modules. Interactive theorem proving (2014), 193–208.
[21] Filakovský, M. 2014. Effective homology for homotopy colimit and cofibrant replacement. Universitatis Masarykianae Brunensis. Facultas Scientiarum Naturalium. Archivum Mathematicum. 50, 5 (2014), 273–286.
[22] Sergeraert, F. 2013. Discrete vector fields and fundamental algebraic topology.
[23] Krčál, M., Matoušek, J. and Sergeraert, F. 2013. Polynomial-time homology for simplicial Eilenberg-MacLane spaces. Foundations of Computational Mathematics. The Journal of the Society for the Foundations of Computational Mathematics. 13, 6 (2013), 935–963.
[24] Filakovský, M. 2012. Effective chain complexes for twisted products. Universitatis Masarykianae Brunensis. Facultas Scientiarum Naturalium. Archivum Mathematicum. 48, 5 (2012), 313–322.
[25] Romero, A. and Rubio, J. 2012. Computing the homology of groups: The geometric way. Journal of Symbolic Computation. 47, 7 (2012), 752–770.
[26] Romero, A. and Sergeraert, F. 2012. Discrete vector fields and fundamental algebraic topology.
[27] Romero, A. and Sergeraert, F. 2012. Effective homotopy of fibrations. Applicable Algebra in Engineering, Communication and Computing. 23, 1-2 (2012), 85–100.
[28] Rubio, J. and Sergeraert, F. 2012. Constructive homological algebra and applications.
[29] Stevenson, D. 2012. Décalage and Kan’s simplicial loop group functor. Theory and Applications of Categories. 26, (2012), No. 28, 768–787.
[30] Spiwack, A. 2011. Verified Computing in Homological Algebra. Ecole Polytechnique X.
[31] Heras, J. 2010. Pushout construction for the Kenzo systems.
[32] Álvarez, V., Armario, J.A., Frau, M.D. and Real, P. 2010. Cartan’s constructions and the twisted Eilenberg-Zilber theorem. Georgian Mathematical Journal. 17, 1 (2010), 13–23.
[33] Berciano Alcaraz, A., Rubio, J. and Sergeraert, F. 2010. A case study of A∞-structure. Georgian Mathematical Journal. 17, 1 (2010), 57–77.
[34] Heras, J. 2010. Effective homology of the pushout of simplicial sets. Proceedings of the XII encuentros de álgebra computacional y aplicaciones (2010), 152–156.
[35] Heras, J., Pascual, V., Romero, A. and Rubio, J. 2010. Integrating multiple sources to answer questions in algebraic topology. Proceedings of the 10th ASIC and 9th MKM international conference, and 17th calculemus conference on intelligent computer mathematics (Paris, France, 2010), 331–335.
[36] Hess, K. and Tonks, A. 2010. The loop group and the cobar construction. Proceedings of the American Mathematical Society. 138, 5 (2010), 1861–1876.
[37] Romero, A. 2010. Computing the first stages of the Bousfield-Kan spectral sequence. Applicable Algebra in Engineering, Communication and Computing. 21, 3 (2010), 227–248.
[38] Álvarez, V., Armario, J.A., Frau, M.D. and Real, P. 2009. Algebra structures on the comparison of the reduced bar construction and the reduced W-construction. Communications in Algebra. 37, 10 (2009), 3643–3665.
[39] Romero, A., Ellis, G. and Rubio, J. 2009. Interoperating between computer algebra systems: Computing homology of groups with Kenzo and GAP. ISSAC 2009—Proceedings of the 2009 International Symposium on Symbolic and Algebraic Computation (2009), 303–310.
[40] Sergeraert, F. 2009. Triangulations of complex projective spaces.
[41] Barakat, M. and Robertz, D. 2008. homalg
: A
meta-package for homological
algebra. J. Algebra Appl.
7, 3 (2008), 299–317.
[42] Thomas, S. 2008. The functors W̄ and Diag ∘ Nerve are simplicially homotopy equivalent. Journal of Homotopy and Related Structures. 3, 1 (2008), 359–378.
[43] Berciano, A., Jiménez, M.J. and Real, P. 2006. Reducing computational costs in the basic perturbation lemma. Computer algebra in scientific computing. V.G. Ganzha, E.W. Mayr, and E.V. Vorozhtsov, eds. Springer, Berlin. 33–48.
[44] Romero, A., Rubio, J. and Sergeraert, F. 2006. Computing spectral sequences. Journal of Symbolic Computation. 41, 10 (2006), 1059–1079.
[45] González-Díaz, R. and Real, P. 2003. Computation of cohomology operations of finite simplicial complexes. Homology Homotopy Appl. 83–93.
[46] Clément, A. 2002. Integral cohomology of finite Postnikov towers. Université de Lausanne.
[47] Díaz, R.G. 2000. Cohomology operations: A combinatorial approach. University of Seville.
[48] Real, P. 2000. Homological perturbation theory and associativity. Homology, Homotopy and Applications. 2, (2000), 51–88.
[49] Dousson, X. 1999. Homologie effective des classifiants et calculs de groupes d’homotopie. l’Université Joseph Fourier.
[50] Goerss, P.G. and Jardine, J.F. 1999. Simplicial homotopy theory. Birkhäuser Verlag, Basel.
[51] González-Díaz, R. and Real, P. 1999. A combinatorial method for computing Steenrod squares. J. Pure Appl. Algebra. 89–108.
[52] Hurado, P.R., Álvarez, V., Armario, J.A. and González-Díaz, R. 1999. Algorithms in algebraic topology and homological algebra: The problem of the complexity. Zapiski Nauchnykh Seminarov POMI. 258, (1999), 161–184, 358.
[53] Rubio Garcia, J., Sergeraert, F. and Siret, Y. 1999. Kenzo: A symbolic software for effective homology computation. Institut Fourier.
[54] Forman, R. 1998. Morse theory for cell complexes. Advances in Mathematics. 134, 1 (1998), 90–145.
[55] Kadeishvili, T. and Saneblidze, S. 1998. Iterating the bar construction. Georgian Mathematical Journal. 5, 5 (1998), 441–452.
[56] Real, P. 1996. An algorithm computing homotopy groups. Math. Comput. Simulation. 42, 4-6 (1996), 461–465.
[57] Real, P. 1996. On the computability of the Steenrod squares. Ann. Univ. Ferrara Sez. VII (N.S.). 42, (1996), 57–63 (1998).
[58] Morace, F. 1994. Cochaînes de brown et transformation d’Eilenberg-Mac Lane: Réécriture en dimension deux et homologie. Paris 7.
[59] Morace, F. and Prouté, A. 1994. Brown’s natural twisting cochain and the Eilenberg-Mac Lane transformation. J. Pure Appl. Algebra. 97, 1 (1994), 81–89.
[60] Real Jurado, P. 1993. Algoritmos de cálculo de homología efectiva de los espacios clasificantes. Universidad de Sevilla, Departamento de Geometría y Topología.
[61] Rubio, J. and Sergeraert, F. 1993. Locally effective objects and algebraic topology. Computational algebraic geometry (Nice, 1992). F. Eyssette and A. Galligo, eds. Birkhäuser Boston, Boston, MA. 235–251.
[62] Gugenheim, V.K.A.M., Lambe, L.A. and Stasheff, J.D. 1991. Perturbation theory in differential homological algebra. II. Illinois J. Math. 35, 3 (1991), 357–373.
[63] Huebschmann, J. and Kadeishvili, T. 1991. Small models for chain algebras. Math. Z. 207, 2 (1991), 245–280.
[64] Gugenheim, V.K.A.M. and Lambe, L.A. 1989. Perturbation theory in differential homological algebra. I. Illinois J. Math. 33, 4 (1989), 566–582.
[65] Lambe, L. and Stasheff, J. 1987. Applications of perturbation theory to iterated fibrations. Manuscripta Mathematica. 58, 3 (1987), 363–376.
[66] Sergeraert, F. 1987. Homologie effective. I. Comptes Rendus de l’Académie des Sciences - Series I - Mathematics. 304, 11 (1987), 279–282.
[67] Sergeraert, F. 1987. Homologie effective. II. Comptes Rendus de l’Académie des Sciences - Series I - Mathematics. 304, 12 (1987), 319–321.
[68] Eilenberg, S. and Mac Lane, S. 1954. On the groups H(Π,n). II. Methods of computation. Ann. of Math. (2). 60, (1954), 49–139.
[69] Eilenberg, S. and Mac Lane, S. 1953. On the groups H(Π,n). I. Ann. of Math. (2). 58, (1953), 55–106.