The present is not
the whole state.
A reversible world. An incomplete view. How much of reality can an observer recover by watching longer?
Each row is one instant. Bottom row is the present.
Backward steps use the inverse rule—not saved playback. The display history is reconstructed from the current two-row state.
Trade a wider view
for a longer memory.
Here the world is only eight cells, with 16 bits in its complete two-row state. The observer sees 1, 2, 4, or 8 current-row cells at each instant. Each new snapshot rules out incompatible starting worlds.
The world and update rule are fixed. Only the observer’s view and the length of its record change. Observations are noiseless and include the initial instant.
A single snapshot leaves many different worlds looking identical.
Each tile is a full initial state: previous row above, current row below. Sites run left to right from 0 to 7. The actual world is outlined when shown.
Waiting has a limit.
I tested every complete state, not a sample. One fixed cell cannot distinguish all worlds, even with unlimited observation. Two adjacent cells can.
| Cells observed each instant | Minimum snapshots that distinguish every state | States ambiguous forever |
|---|---|---|
| 1 of 8 | No finite number suffices | 230 |
| 2 of 8 | 14 | 0 |
| 4 of 8 | 10 | 0 |
| 8 of 8 | 2 | 0 |
These are worst-case identification thresholds for this eight-cell periodic ring—not results for the 192-cell cinema. A particular starting world may be identified sooner. Watching one cell eventually identifies 65,306 states uniquely.
Sometimes you need more time.
Sometimes you need a different view.
The rule, and why it can run backward
For a row b, compute F30(b) by applying left XOR (center OR right) to every site. The ring wraps around. The complete state is a pair of rows, (a, b).
Forward: (a, b) → (b, a XOR F30(b)) Backward: (a, b) → (b XOR F30(a), a)
XORing a quantity with the same value twice restores it. That gives an exact inverse for any ring size. The construction is a standard second-order reversible cellular automaton; it is not ordinary Rule 30, and I am not claiming to have invented the construction.
With one full current-row snapshot, any of the 256 previous rows remains possible. Two consecutive full-row snapshots determine the complete starting state, and therefore its entire past and future under the known rule.
Background: Tommaso Toffoli and Norman H. Margolus, “Invertible cellular automata: A review”, Physica D 45 (1990), section 5.4, pages 238–240.
Why 14 snapshots are enough: a constructive explanation
The local equation can be solved for a missing cell to the left of two observed neighbors:
x[i−1,t] = x[i,t+1] XOR x[i,t−1] XOR (x[i,t] OR x[i+1,t])
Two neighboring time-records reveal one more cell, except at their first and last instants. Repeating this process reconstructs the missing cells, at a cost of two snapshots per added cell.
For an N-cell ring and a contiguous observed window of w cells, with 2 ≤ w ≤ N, 2(N − w) + 2 consecutive snapshots suffice to reconstruct two full rows, then reverse to the initial state. For N = 8 and w = 2, this gives 14 snapshots. For w = 4 it gives 10; for w = 8 it gives 2.
This is a general sufficient bound. The exhaustive eight-cell census proves that it is also the minimum for the three tested window widths. I am not claiming general minimality or literature novelty. The accompanying reconstruct.py implements the constructive recovery using only the observed bits.
How “forever” was checked without waiting forever
Two initial states are grouped together when they produce the same observed record. The groups can split as the record grows, but they can never merge. Once a refinement step no longer splits a group, the partition is a fixed point: further observations cannot help.
For one watched cell, the final partition is reached at 31 snapshots and certified by the unchanged 32-snapshot partition. I also checked that every group has a single observed output and that all its successors belong to one group. This certifies identical future output within each group.
The final groups are 65,306 singletons, 108 pairs, one group of four, and two groups of five. Thus 230 starting states remain ambiguous forever.
The five-world example in the demo is particularly concrete. Its starting states are 00FF, 2C99, 2CFF, C299, C2FF. Their joint state repeats after eight updates. At site 0, every one of them produces 1,0,1,0,1,0,1,0, repeated forever.
The two-cell result was independently checked by directly generating every 14-snapshot record: all 65,536 are different. At 13 snapshots, some still coincide.
What this does—and does not—say about time
The experiment separates the world’s information from an observer’s access to it. Ambiguity in a record does not imply that the world erased its own past. In this model, a longer record can compensate for a narrower view, but not always.
This is an exact result about observability in a small deterministic model. It does not derive the thermodynamic arrow of time, quantum uncertainty, consciousness, or the laws of our universe. No heat or physical entropy production is modeled. The uncertainty readout is log2(number of compatible states), assuming an initially uniform prior.
The 192-cell cinema uses the same reversible update rule, but the identification counts apply only to the eight-cell model. I have not established whether these particular numerical counts have appeared in prior work.
Reproduce the results
The accompanying Python program uses only the standard library. It checks the local truth table against an independent implementation, verifies both inverse identities for all 65,536 states, refines all observational partitions to stability, and independently confirms the 14-frame bound.
python experiment.py
The interactive lab performs its own candidate elimination in JavaScript. The static census comes from the exact Python run. Everything needed for the interactive page is embedded in this file; it makes no network requests.
Download the complete experiment, code, derivation, and test results