dregg microsites 09 · Worlds

Automatafl · a game whose whole turn is a theorem

The cheat is
unsatisfiable.

Every multiplayer game enforces its rules the same way: a referee · human or software · watches the moves and objects. This page is about a board game where the referee is a proof system, and an illegal move doesn't get rejected. It fails to exist.

The game.

Automatafl is a turn-based board game where all players move at once. Each player secretly writes a rook-style move; the moves are revealed simultaneously, and if two players grabbed the same piece or aimed at the same square, that's a conflict · everyone involved must re-enter, and the fought-over coordinate is marked off-limits for the redo. Once the round is clean, the moves resolve together, and then the Automaton · a neutral piece with its own convoluted step rules · takes its step. You win by luring the Automaton into your corner.

Simultaneous secret moves, recursive conflict re-entry, and a rule-driven neutral actor: it is exactly the kind of game whose disputes are miserable to referee by hand · and exactly the kind of state machine a proof system can hold whole.

The theorem.

The deployed circuit doesn't merely check moves. The correspondence goes all the way up: a satisfying trace of the deployed descriptor at the real 11×11 board is the game's resolution step. The capstone theorem, turn_sat_imp_roundStep, composes the resolve leg and the automaton leg over a fold-enforced seam · so a proof that the circuit accepted your turn is a proof that the board evolved by the rules, cell for cell.

Conflicts included. The multi-round capstone, braid_sat_imp_runTurn, extends the theorem across conflict re-entry rounds · clash, re-enter, clash again, resolve · with termination proved (a turn ends within n² rounds), and the whole braid folds into one verifying STARK proof. The first full multi-round turn proved end to end took 1,663 seconds of prover time. A real number, from a real fold, at the deployed board size.

Seven wounds.

Proving that correspondence was not a formality, and that's the point of telling it. On the way to the capstone, the correspondence campaign surfaced seven distinct defects in how the circuit's board rewrite and the game's actual rules lined up · a two-cycle that behaved wrong in vacuum, an occupancy-blind swap, a flow-through on exclusive occlusion, four more. Each one was pinned with a machine-verified falsifier: a concrete board where the old circuit and the real game disagreed, checked by decide, flipping green when the fix landed. The audit for an eighth came back clean · identical-move handling was sound as written.

Earlier still, an executable differential between the Lean rules and the original running prototype found four real bugs in the prototype. The spec didn't just describe the game. It debugged it.

The deletion.

Once the proven descriptor held the whole turn, the scaffolding came down · and the commit log says it plainly:

automatafl SHIP: DELETE the hand-written Rust AIR · the proven Lean descriptor is now the SOLE authority

automatafl: DELETE the Rust game oracle · the proven Lean IS the oracle now, with NO Rust fallback of any kind

There is no second implementation to drift from the first. The house law behind those deletions is standing policy across the whole project: rule systems are authored in the proof assistant and emitted; nothing hand-written survives beside the proven object as a "fallback," because a fallback is a future disagreement.

What a cheat looks like now.

Remember the conflict rule: after a clash, the fought-over coordinate is marked, and playing it again in the redo round is illegal. In the shipped circuit that rule is not an if statement. It is a gate over the committed marks:

play a marked coordinate in the redo round:
  the legality gate over the accumulated marks cannot be satisfied
  → no witness exists → no proof exists → the turn never happened

forge the middle board between rounds:
  the fold's board-window seam binds each round to the last
  → the forged-mid canary bites · the substitution refuses

The commit that shipped it: "the marked-move cheat is now UNSAT at the deployed prover." That's the whole design in one line. A cheat isn't caught, reported, or punished. It is a statement with no witness · the dishonest game is a board state that cannot be constructed.

The room this lives in.

Automatafl is the sharpest example of a wider room: games as verified state machines. On a live game platform built with a collaborator, seven further playable games consume exact Lean-emitted rule tables · the browser renders and the player plays, but nothing client-side ever scores. Judged play settles as a finalized turn on the same substrate the theorems govern. Places whose laws are theorems · and whose cheats, therefore, are unsatisfiable.