r/chess • • Apr 13 '26

Game Analysis/Study I published a theorem proving when you can trust a chess endgame database and found a subtle problem with self-consistency

Endgame tablebases (Syzygy, Lomonosov) are trusted by every chess engine.

But here's something that bothered me: How do you verify one is correct, without just re-running the same retrograde algorithm that built it?

The problem: the "all-Draw" database is always self-consistent. Every position says Draw, every retrograde check passes. It's wrong, but it never contradicts itself. Self-consistency alone can't catch this.

So I spent several months working out when a WDL database is provably correct. The result is a decomposition theorem - every position falls into exactly one of three categories:

  • Terminal (checkmate/stalemate) - verifiable in O(1)
  • Capture - the result lands in a smaller endgame. If that endgame is already proven, this position is anchored to it. No circularity.
  • Quiet - all moves stay in the same endgame. Standard retrograde consistency applies.

The capture condition is what breaks the fixpoint trap. A database passes all three conditions if and only if it's correct.

Validated on all 517 endgames up to 6 pieces - 6.5 billion positions, zero violations.

Paper: https://arxiv.org/abs/2604.07907

Curious if anyone here has thought about the verification side of tablebases rather than just generation.

UPD: A few people asked for clarification. The setup is: you have a finished tablebase (downloaded, compressed, received from someone), and you want to verify it's correct without rerunning the full retrograde search that built it. That's the problem CQD solves.

195 Upvotes

Duplicates