Faithful, runnable implementations of 15 classic artificial-life systems — from Conway's Game of Life to self-replicating Langton's Loops, Tierra, Avida, and Brainfuck program soups — measured with a single, cross-system battery of emergent-complexity metrics.
This repository is two things at once:
- A catalogue — one clean, audited implementation of each system behind a shared
BaseSimulationinterface (step()/get_state()), so any system can be run, snapshotted, and measured the same way. - A measurement study — a five-family battery of complexity measures applied uniformly across the suite, and a 28-page monograph that reports the results.
The headline finding: complexity measures split into two kinds. Dynamics-based measures (damage spreading, activity) rank systems by behavior and are largely insensitive to how you serialize state; information/construction-based measures (entropy, assembly index, k-gram diversity) are dominated by the encoding. Lead cross-system claims with the former; reserve the latter for within-representation comparisons.
| Monograph (28 pp.) | docs/alife_encyclopedia.pdf — the full catalogue + framework |
| Survey paper | docs/measures_of_complexity.pdf — the five-family battery, focused |
| ALIFE 2026 abstract | docs/alife2026_measures_lba.pdf — the 2-page version |
Langton's Loops is implemented with the complete 219-rule transition table (876 rules under 4-fold rotational symmetry) and the canonical seed loop — which serializes to exactly 86 live cells, matching Langton (1984). Seeded with a single loop it genuinely reproduces: a construction arm extends, the genome is copied, and daughter loops bud and reproduce in turn.
(a) The dynamics plane (update activity vs. damage-spreading fraction) separates frozen systems from sensitive ones — a behavioral ordering that survives changes of measurement horizon and distance metric. (b) High-order entropy ranks systems almost entirely by serialization (byte-tape VMs at the top, binary grids near zero). The contrast between the two panels is the study's central point.
A slice of the 13-system × 5-family battery:
| System | Damage spreading | Update activity | High-order entropy |
|---|---|---|---|
| Stringmol | 0.45 ± 0.33 | 0.139 | −0.92 |
| Rule 30 | 0.22 ± 0.04 | 0.479 | −1.83 |
| Rule 110 | 0.06 ± 0.04 | 0.686 | −1.09 |
| Langton's Loops | 0.050 ± 0.007 | 0.013 | 0.054 |
| Genetic algorithm | 0.00 ± 0.00 | 0.413 | 0.06 |
| BFF (Brainfuck) | 0.002 | 0.062 | 5.20 |
Damage/activity are dynamics-based; high-order entropy (an entropy–compression residual, bits/symbol) is representation-sensitive. Full table in data/processed/complexity_measures/cross_system_measures.csv.
| Family | System | Fidelity |
|---|---|---|
| Discrete CA | Conway's Game of Life (2D / 3D) | ★★★★★ / ★★★★☆ |
| Discrete CA | Rule 30, Rule 110 | ★★★★★ |
| Discrete CA | Langton's Loops | ★★★★★ |
| Discrete CA | Wireworld | ★★★★★ |
| Continuous CA | Lenia | ★★★★☆ |
| Agent-based | Boids | ★★★★☆ |
| Evolutionary | Genetic algorithm | ★★★★☆ |
| Virtual machine | Tierra, Avida | ★★★★☆ |
| Artificial chemistry | Stringmol | ★★★☆☆ |
| Program soup | BFF (Brainfuck / Forth) | ★★★★★ |
| Morphological | Xenobots | ★☆☆☆☆ |
Fidelity is a separately audited five-star rating of how closely the code matches the source paper; it is reported with every entry because a faithfulness gap is a confound for any complexity number. See the monograph and docs/FAITHFULNESS_IMPROVEMENT_SUMMARY.md.
pip install -r requirements.txtRun any system through the shared interface:
from simulations.conway import Conway2D
sim = Conway2D(config={'width': 50, 'height': 50, 'density': 0.3})
sim.run(steps=100, collect_metrics=True)
print(sim.get_metrics_summary())from simulations.cellular_automata import LangtonLoops
sim = LangtonLoops(config={'width': 100, 'height': 100})
sim.run(steps=200) # seed loop buds daughter loopsReproduce the study's artifacts:
# The five-family battery across every system (writes CSV/JSON + figures)
python scripts/experiments/cross_system_measures.py
python scripts/experiments/plot_cross_system_measures.py
python scripts/experiments/plot_battery_heatmap.py
# Damage-spreading robustness sweep (horizon x distance metric)
python scripts/experiments/damage_robustness.py
# README hero assets (Langton GIF + system montage)
python scripts/experiments/make_readme_assets.pyalifeencylopedia/
├── simulations/ # One implementation per system (shared BaseSimulation interface)
│ ├── conway/ cellular_automata/ boids/ genetic_algorithms/ tierra/ symbiosis/ ...
├── analysis/
│ └── metrics/ # complexity_measures.py — the five-family battery
├── scripts/experiments/ # Battery runner, robustness sweep, figure + asset generators
├── docs/ # Monograph + papers (LaTeX + PDF), per-system verification notes
└── data/processed/ # Battery results (CSV/JSON) and figures behind the papers
- Simulation guide — how to use each system
- Citations — the source paper behind every implementation
- Faithfulness assessment — how the fidelity ratings were derived
- Metrics — the complexity measures in detail
If you use this repository, please cite it — see CITATION.cff (GitHub renders a "Cite this repository" button from it). For the original systems, see docs/citations.md.
Released under the MIT License.


