Blue bin
Click an empty square, or drag a checker from the bin.
Red bin
Move history
- No moves yet.
Browser edition
Pick a ruleset, place or move a checker, and let every adjacent checker pop away at the same time.
Click an empty square, or drag a checker from the bin.
Rules reference
Players alternate. Place a checker on an empty square, or make a permitted board move. After the checker lands, every occupied neighboring square tries to move one more square directly away from it. All successful pushes are calculated from the same snapshot and then applied together.
Lines are checked after the pop. Three matching checkers in a horizontal, vertical, or diagonal line win. If both colors form a line on the same turn, the result is a draw.
Reincarnation returns a fallen checker to its owner’s bin. Ringout removes it. Blocked prevents the fall. Torus wraps both directions. Klein wraps left/right normally and twists the column when crossing the top or bottom.
Movement may be disabled, enabled only after a player’s bin is empty, or always enabled. King, Rook, Bishop, Queen, and Anywhere movement are available. Movement itself does not wrap across an edge; the pop follows the selected edge surface.
A draw occurs when both players form lines together, no legal move remains, or a complete position repeats. Ringout can also produce a draw if both players are reduced to two surviving checkers at once.
The research engine is optimized for eight checkers, Torus edges, Continue, movement when the current player’s bin is empty, King movement, no zero move, and no jumps.
Proof architecture
Give the supported configuration a versioned identifier and make the C++, browser, certificate generator, and Lean model agree on every transition.
The fast C++ solver explores the reachable game graph and records, for each claimed winning state, a winning move and enough successor information for independent checking.
Lean reads compact certificate entries, recomputes legal moves and state transitions, and rejects malformed, missing, or contradictory entries.
Prove that whenever the checker accepts a complete certificate, the mathematical force-win predicate holds for every accepted state.
Split the large table by remaining placement rank and symmetry class so each Lean module checks a manageable block whose successors were already verified.
Record the ruleset ID, certificate hash, solver commit, Lean version, checker result, and final theorem about the initial position.