AWM
← All games‹ sb26sk48 ›

sc25

Steer a block and light large-panel cells to start machines; stepping into the socket clears the level.

6 levels · 18 rules · all levels replayed in Lean

What to notice: the sealed level. AWM's proof that no route wins with a budget of 18 is in the Sealed level section; the cheapest win, 19, is replayed on the engine on the home page.

Replay

The certified run that cleared every level, one action at a time. Beside each step: the rules of the model that explain it; they are also marked in the rule list below.

sc25, first frame of the certified run

Explained by

Press Play or step to load the run. Keys, while the player is on screen: ← → step, Space play / pause. A click is circled; cells that changed are outlined.

Sealed level

Explore both sealed tasks and the full run records →

Sealed sc25 level 4. AWM proves in Lean that the minimum winning cost under its learned model is 19, one unit above the budget of 18, and verifies a route at that cost; GPT-6 Astra claims 22 without a proof.

A variant of level 4 is sealed at a budget of 18. Exhaustive engine search shows that the cheapest win costs 19: the sealed level cannot be won, while one more unit permits a win. After each attempt, every agent is asked whether the level can be won. AWM proves in Lean that no legal sequence of actions wins within a budget of 18 under its learned model, and checks a winning route at 19. GPT-6 Astra finds a route costing 22 and assumes it is optimal without a proof.

The theorem

From one of AWM's runs: no action list wins with a budget of 18 or less; one more unit, and a route of cost 19 wins. This theorem is about the model built by one AWM run on the sealed level (run 2a3cc5), which tracks the budget. The model shown in the Model section below is the one learned on the public game, where the budget bar is read but its limit is not modelled.

theorem never_wins (B : Nat) (hB : B ≤ 18) (as : List Act) : (run B start as).won = false :=
  (run_J B hB as start (J_start B)).1

def route19 : List Act :=
  [.mv .D, .mv .D, .mv .L, .mv .L, .mv .L, .F 0, .mv .L, .mv .U, .F 3, .mv .R, .mv .R, .M6,
   .mv .R, .mv .R, .mv .R, .mv .R, .mv .R, .mv .R]

theorem route19_wins : (run 19 start route19).won = true := by decide +kernel
theorem route19_at18 : (run 18 start route19).won = false := by decide +kernel

Read Section 4 of the paper

Explore the sealed-level experiments and full run records: every question and answer, the model and Lean files at each attempt, and the raw sessions of AWM's six runs.

How it plays

The player controls a block, which has two sizes, large and small. The direction keys make it turn toward that side, and if the space ahead is walkable by a full body length it moves over. Below the screen is a large square-grid panel, with several small panel patterns hanging beside it. Light up cells on the large panel, and once they form the pattern of some small panel, the large panel goes entirely dark, and at the same time the corresponding machine starts: a diamond lets the block switch between large and small, a corner moves the block as a whole into the designated square frame, and a vertical line wipes one specimen colour off the field entirely (it has to face the frame holding the specimen). Roads that cannot be walked are opened up with these three machines, and stepping into the socket with a direction key clears the level. The vertical bar on the right is the budget, and fuel pressed onto the ground can refill some of it.

sc25, first frame of the certified run
Start
sc25, last frame of the certified run
After the winning move

Model

The final model: 5 object types and 18 rules. Each rule is a Python check against every recorded step; 11 of them are translated into Lean (the paper's per-game table). Code under a rule is the file of the same name in the agent's Lean project.

Object types

Rules

Code is shown with comments and the agent's notes removed; the files as written are in the archive under Check it yourself.

Proof

For every level, Lean starts from the level's first screen, applies the model's rules to the certified actions, and checks that every computed state agrees with the recorded frame on the components the model represents, and that the last one wins. Each theorem is closed by the Lean kernel and is a statement about the learned model.

Every level can be won

theorem L0_winnable : Winnable (board 0) L0_start ∧ isGoal (board 0) L0_start = false := …
theorem L1_winnable : Winnable (board 1) L1_start ∧ isGoal (board 1) L1_start = false := …
theorem L2_winnable : Winnable (board 2) L2_start ∧ isGoal (board 2) L2_start = false := …
theorem L3_winnable : Winnable (board 3) L3_start ∧ isGoal (board 3) L3_start = false := …
theorem L4_winnable : Winnable (board 4) L4_start ∧ isGoal (board 4) L4_start = false := …
theorem L5_winnable : Winnable (board 5) L5_start ∧ isGoal (board 5) L5_start = false := …

Statements only; the proofs and the full Lean project are in the archive, with the steps to re-run them, under Check it yourself.

Check it yourself

Everything on this page comes from files you can download and check. The archive holds the agent's files: the recorded run, the concept book, the concept sources, the Lean project and the sealed model file, plus the record of our kernel check.

Download sc25.zip 0.5 MB · 68 files

Re-run the proof

Before you start: our run of this check took 609 s and 10.4 GB of memory at its peak (2026-10-24).

  1. Download sc25.zip and unpack it. The model and its theorems are in archive/sc25-20260912/formal/Game.lean. Before changing it, check that its SHA-256 is
    b2689cfc605f9a4113dd5a7d8f32c2bfd83cb517de186baaae2bd11c486f65e6
  2. Install Lean with elan, then the version named in the archive's lean-toolchain:
    elan toolchain install leanprover/lean4:v4.34.0
  3. Copy the model file to Check.lean and append these two lines to the copy:
    #print axioms consistent
    #print axioms faithful
  4. In the folder that holds Check.lean, run:
    lean +leanprover/lean4:v4.34.0 -M60000 Check.lean
  5. Lean should finish without errors and print:
    'consistent' depends on axioms: [propext]
    'faithful' depends on axioms: [propext]

What a pass establishes

consistent: for every recorded transition, as read by the agent's parser and with duplicates removed, every rule whose condition holds also has its effect hold. faithful: the certified run, recomputed step by step from the first screen of each level, matches the record and ends in a win. Axioms used: propext, all among Lean's standard ones.

What it does not establish: that the parser reads the screens correctly (that step runs in Python, outside Lean), or that a rule whose condition never occurs in the record is right. The Python file that produced the readings inside the model file is in the archive at meta/repair-20260928/lib/sc25-20260912/_lib.py.