The graph starts as a 3-node triangle. Each step it searches for a matching pattern — a directed path x → y → z through some shared node y — and rewrites it: the edge (y→z) is removed and replaced by two edges through a brand-new node w, giving (y→w) and (w→z). This is a small local rewriting rule in the spirit of the Wolfram model of "digital physics": no coordinates or metric are built in anywhere — space is not assumed, it is whatever structure the rewriting produces.
rule: {x→y, y→z} ⟶ {x→y, y→w, w→z} (w new)
A 3D layout is then computed purely from graph structure — a physics-style spring/repulsion relaxation, edges as springs and nodes as mutually repelling charges — so that graph distance becomes visual distance. Nodes are colored by their hop-distance from the root (white → violet → dark) so the growth front is easy to see.
The "dimension" readout treats the graph the way a manifold's ball volume works: in ordinary d-dimensional space the number of points within radius r of an origin grows like N(r) ∝ rd. Measuring N(r) by breadth-first search out of the root at two radii r₁ < r₂ gives an estimate:
d ≈ ln( N(r₂) / N(r₁) ) / ln( r₂ / r₁ )
This is exactly the technique researchers use to estimate the effective dimensionality of a causal graph or hypergraph with no built-in geometry — a discrete analogue of how physicists ask "how many dimensions does spacetime itself have?" without assuming the answer.
- Rewrite rate — how many rule applications run per second.
- Node cap — growth stops once the graph reaches this many nodes (kept small so the layout stays real-time).
- Play/Pause, Reset — freeze the evolution, or start over from the 3-node seed.