The history space is the tuple:
h = (Γadm, ∂in, ∂out, A, C)
| Component | Definition |
|---|---|
| Γadm | The set (or groupoid) of admissible histories: sequences of steps through a guarded bulk, consistent with dynamics U, R and every applicable Hoare-style corridor |
| ∂in : Γadm → Σ* | Incoming boundary projection |
| ∂out : Γadm → Σ* | Outgoing boundary projection |
| A : Γadm → Q≥0 | Action functional (local costs summed along the history) |
| C | Cochain / topological data: exact / harmonic / residual decomposition, charge, current, potential |
The Lean symbolic side is already in Scattering.lean: History X Sym U E, WellFormed D γ, Admissible D g γ, inboundary γ, outboundary γ, action L γ with action_nil, action_cons, action_append.
The partition function over admissible histories with fixed boundary conditions:
Z(λ; bin, bout) = Σγ ∈ Γadm
exp(−λ · A(γ))
1[∂in γ = bin]
1[∂out γ = bout]
At λ = 1: the unnormalised scattering weight (already proven correct for the deterministic codec case). As a function of λ: a spectral object whose asymptotics encode entropy rate, whose poles encode phase transitions, and whose derivatives encode expected action.
When Γadm collapses to a single admissible path (a deterministic codec with fixed boundaries), Z is a single exp(−A). When guards allow branching — nondeterministic routing, stochastic corrections, MCTS lookahead — the sum has real content.
| Artefact | Chart on h | What it exposes |
|---|---|---|
| tlc_compressor.py | Single deterministic γ | Boundary coding of one history |
| dual_compressor.py | Same γ in Q[ε]/(ε²) | Multiplicative action form |
| casimir_compressor.py | Families of γ with different guard structure | ΔL as comparison of two charts |
| atlas_spectrum.py | Ladder of FiniteFamily + advantage curves | Measured projection of h onto rungs |
| hyperbolic_compressor.py | Local chart where branching is geometrically cheap | Hyperbolic coordinates |
| open_kernel.py | EncoderKernel / DecoderKernel | Same γ with swapped ports |
| scattering.py | Enumerator + Σ exp(−A) over finite slice of Γadm | Sum-over-histories directly |
| swarm_model.py | Measure on a local chart of Γadm | Bayesian filter over charts |
| guarded_mcts.py | PUCT exploration of a subtree of Γadm | Search within the history space |
| thermal_swarm.py | Z(λ) at various λ | Finite-temperature slices |
| quantum_swarm.py | Replace Σ exp with |Σ eiΦ|² | Born rule version of Z |
| solomonoff_swarm.py | 2−L prior over generators of histories | Universal-prior sum |
Stop asking "what is the next state?" and ask "how does the space of admissible histories count?" Four questions become well-posed:
| Concept | In the history space |
|---|---|
| Computation | Choice or sum over γ ∈ Γadm |
| Execution | Min-action γ ∈ Γadm |
| Generation | Sample from e−A / Z |
| Compression | Boundary coding of a selected γ |
| Physics-analogy | Interpretation of (Γadm, A) as open scattering |
| Training | Parameter tuning so data histories sit low in A |
| Search (MCTS, ...) | Partial enumeration of Γadm |
| Field dynamics | C evolving through the history, feeding back into A |
The smallest object that contains codec, scattering sum, MDL ladder, swarm models, open-kernel port-swap, hyperbolic chart, and Casimir spectrum as projections is the history space h. It is the only thing that is not a chart on something else. Every quantitative improvement comes from computing the sums over Γadm more cleanly. The natural unit of analysis is the boundary fibre: a compression ratio is the action of one γ normalised by the log-size of one fibre; an entropy rate is the log-growth of fibres.