Nerve Workbench
A workbench for combinatorial topology: Sperner's lemma, nerves, homology and persistence written as short programs, drawn live with the theory beside them.
In early access for subscribers until 22 November 2026. Subscribe to run it now.
Subscribe →A workbench for combinatorial topology. Each preset is a short JavaScript program that builds a graph of complexes, labellings and nerves; the workbench draws it, writes the theory beside it, and recomputes only what a param change touches.
- Notes next to the picture: Markdown with typeset math, live values from the graph, inline controls you can drag, steps that set the params, and exercises that tick themselves when the drawing satisfies them. Hover a term and the marks it names light up.
- Labellings you can poke: tap a vertex to relabel it, drag sliders, reroll seeds, or write your own labelling rule as a lambda, and watch the count of fully labelled triangles stay odd.
- Sweeps: run a preset over one or two params as a sheet, a quilt or a heatmap; nodes that do not read the swept params are computed once and shared.
- See the program: the IR tab lists every node with its op, inputs, the params it read, runs and time; Explain shows what each param re-runs; Events logs builds and edits.
- Twelve palettes and a builder: heraldic hatching over tints or lines only, named palettes from Studio to Tinctures, or one built from a colour scheme; light and dark themes.
- Your own presets: edit the script, save it as your own preset in this browser, and save the script, the drawing as SVG, the params or the IR as files.
Fourteen presets come with it, most following Henle's A Combinatorial Introduction to Topology: Sperner's lemma, the index of a vector field, chains on a grating, surface words, a homology lab, nerves and persistence, finite spaces, a tracklet stitcher, a pose ring, Tucker's lemma, Sperner on a polygon, in 3D and on a torus, and a zoom into a fixed point. An agent panel that reads the reference and edits presets needs the hosted model; everything else runs in the page. Math is typeset with MathJax.