PDT Chess

Can you beat PDT?

A chess engine inspired by Phase Differential Theory. Explore the approach, then put it to the test.

Preview of the starting position. Not an interactive game.

The PDT approach

From PDT ideas to chess decisions

PDT motivates an approach centred on relationships, coherence and persistence. In chess, these ideas suggest examining how pieces support one another, how plans withstand opposing replies, and how competing moves are compared.

Coherence

How well do the pieces support a shared plan?

Persistence

Does that plan remain viable after the opponent responds?

Selection

Which candidate move remains strongest after the alternatives are examined?

These are conceptual connections. The conditional selection derivation below supplies an explicit chess model; the inspected engine uses its own evaluation and search, not this loss-time construction.

Explore the mathematics

From PDT foundations to chess selection

1. The foundation

In the R01 formulation, C(s)C(s) is a finite family of candidates still admissible at episode parameter ss. Later stages cannot restore excluded candidates:

C(s2)⊆C(s1)for s2≥s1.C(s_2)\subseteq C(s_1)\quad\text{for }s_2\ge s_1.

The first singleton stage, if its minimum is attained before the family becomes empty, is

s∗=min⁡{s:∣C(s)∣=1}.s^*=\min\{s:|C(s)|=1\}.

This structural selection statement needs a model-supplied admissibility law. Read A6 on the mathematics page, R01: Core axioms and consistency and R03: The last-survivor criterion.

2. A chess model, not an axiom

Let BB be a board position, M(B)M(B) its finite set of legal moves and C0=M(B)C_0=M(B). At stage kk, supply a binary admissibility test Ak(m;B)∈{0,1}A_k(m;B)\in\{0,1\} for move mm:

Ck+1={m∈Ck:Ak(m;B)=1}⊆Ck.C_{k+1}=\{m\in C_k:A_k(m;B)=1\}\subseteq C_k.

Nesting follows by construction because the test only keeps members already in CkC_k. The test, including what counts as an acceptable move, must be supplied by a chess model. PDT structure alone determines neither evaluation weights, search depth nor the best move. Excluding a move here does not prove it loses.

3. When a last survivor exists

For n≥2n\ge2 initially available moves, assign each move mm a positive finite model-supplied loss time TmT_m. For s≥0s\ge0, define

C(s)={m:s<Tm},T(1)≤⋯≤T(n).C(s)=\{m:s<T_m\},\qquad T_{(1)}\le\cdots\le T_{(n)}.

If T(n)>T(n−1)T_{(n)}>T_{(n-1)}, the largest time is unique. Before T(n−1)T_{(n-1)}, at least the two longest-lasting moves remain; from that stage until the largest time, every other move has left and only the last remains:

T(n−1)≤s<T(n)⟹∣C(s)∣=1,s∗=T(n−1).T_{(n-1)}\le s<T_{(n)}\quad\Longrightarrow\quad |C(s)|=1,\qquad s^*=T_{(n-1)}.

If the largest loss time is tied, those moves disappear together and this construction never yields a singleton. If only one move is initially available, it is already a singleton at s=0s=0. If there are no legal moves, chess game rules determine the terminal position instead.

Illustrative selection

Model-supplied values: TA=2,;TB=1,;TC=3T_A=2,;T_B=1,;T_C=3. These are not engine measurements or proof of a winning chess move.

s=0s=0Remaining:ABC

All three candidates are present.

Stage 1 of 3

For the underlying finite-set result, see last-survivor selection on the mathematics page and R03, Theorem R03.1.

4. What the inspected engine actually does

The readable engine.js source was retrieved on 2 October 2026 (SHA-256 version fingerprint: 49eb052abbc4a5d17ae959f530a6f312d55a61384c425a868d124b077ed0e1c1). This describes that source snapshot, not a proof about every deployment.

  • features(pos, model) calculates a conventional base score from material and positional terms, plus a PDT-labelled term using king-ring pressure, coordinated attackers, support, escape squares and convergence. Its returned score is the rounded, bounded sum of the base and, for the pdt model, that extra term.
  • PDTStructuralAgent.choose scores each legal successor once with features, checks terminal and draw conditions, and selects the highest-scoring result without searching opponent replies.
  • WinEngine.negamax searches replies with alpha-beta bounds and a position evaluation; WinEngine.search iterates depth, scores and sorts root moves, then returns the best completed move subject to draw-claim handling. For the other objective, Engine.search ranks legal moves through its survival reply search and safetyEvaluation, returning its best completed result or a legal draw claim.

These are supplied evaluation rules and bounded conventional search, not explicit TmT_m loss-time elimination. The source does not establish that the full engine is derived from PDT axioms or that a selected move wins.

This derivation shows how PDT’s last-survivor structure can be instantiated as a chess selection process once an admissibility law is supplied. Playing strength depends on the quality of that law and its implementation. It must be established through reproducible games and comparisons.

Match evidence

Verification pending

Strength you can inspect

A win against a level-20 Stockfish website opponent has been reported. A reproducible comparison requires the exact engine version, settings, time controls and complete game record. One game does not establish overall superiority.

Published comparisons should report wins, draws and losses, colour allocation and thinking time, and provide downloadable game records so that others can check them.

Your move.

Explore the ideas. Challenge the engine. Judge the play.