CB-RES-0009: extensive form is the lingua franca
Some checks failed
ci / check (push) Failing after 4s

Two questions from the maintainer — is there a game-theory mapping to
Ludii's language, and is that language formal enough to derive one from.
Yes, no, and the no does not matter.

The mapping is proven, not to be invented: "The Ludii Game Description
Language is Universal" shows the language can represent an equivalent game
for any finite, non-deterministic, imperfect-information game, extending
earlier work limited to finite deterministic fully-observable
extensive-form games. EFG is also OpenSpiel's object, so the same
formalism connects description to analysis: Ludii -> EFG <- OpenSpiel.

Ludii's syntax is formal and unusually so — a class grammar derived
automatically from its source. Its semantics are its Java: a ludeme means
what its class does, and Ludii effectively makes Java the game description
language. So there is no independent calculus to extract. The formality
lives in the universality RESULT, not in a definition of meaning. GDL has
the semantics and pays for it in speed — six times on Gomoku, twenty on
Amazons and Hex, over two hundred on Chess.

Conclusion: do not derive a language from Ludii; target the EFG directly.

And we are closer than the tracks assumed. The journal is the history,
Outcome is the payoff, legal_commands gives the actions — and
project(Viewer::Player(seat)) IS the information partition, built so a
player is not shown another's hand and unremarked as exactly the machinery
imperfect information needs.

Three gaps: chance is folded into a seed so a game is one realisation
rather than a game with chance nodes; perfect recall is unasserted, which
CFR and exploitability both assume; and commit/reveal is the standard EFG
encoding of simultaneity but is never stated as such. Perfect recall is
checkable from the journal today and is now Track B's first task — if it
fails, every equilibrium concept we might quote is unsound here.

Also re-vendored the catalog twice: ground-game added H2 — scoped problem
stress, applying End Stress by personal/bond/global scope instead of flat
to everyone, which is a direct response to our reading that H1's tax
scales with the Problems while its intended effect does not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-08 14:57:25 +02:00
parent 401b82bccc
commit 55a475b1a9
7 changed files with 301 additions and 15 deletions

View file

@ -0,0 +1,177 @@
---
id: CB-RES-0009
capability: analysis.gametheory
status: draft — survey only, no decision taken
tier: M
chaos: not rolled — this is a survey, not a pass that changes the loop
---
# CB-RES-0009 — extensive form is the lingua franca
Surveyed 2026-08-08. Answers two questions put by the maintainer:
**is there a good game-theory mapping to Ludii's game description
language**, and **is that language formal enough to derive one from?**
**Short answers: yes, and no — but the second does not matter, because
the first already gives us the object we want.**
---
## 1. The mapping exists, and it is the extensive-form game
*The Ludii Game Description Language is Universal* proves that Ludii's
language **can represent an equivalent game for any arbitrary finite,
non-deterministic, imperfect-information game**, extending earlier work
that covered only *"finite, deterministic, fully observable extensive-form
games"*. The paper is explicitly grounded in **extensive-form games**.
So the mapping is not something to invent. **It is the theorem.**
An extensive-form game (EFG) is the standard game-theoretic object:
| EFG component | what it is |
|---|---|
| **histories** | sequences of actions from the root |
| **information sets** | histories a player cannot tell apart — where imperfect information lives |
| **chance nodes** | nature's moves, with probabilities |
| **payoffs** | utilities at terminal histories |
**Simultaneous moves are already covered**: the standard EFG encoding
sequences them and hides the earlier move in an information set. GROUND's
commit/reveal *is* that encoding.
## 2. And it is the same object OpenSpiel uses
This is the part that makes it useful rather than merely true.
[OpenSpiel](../simulators/openspiel.md)'s API is an EFG interface, and
its algorithms — CFR, best-response, **exploitability** — operate on EFG
structure. It states support for simultaneous-move,
imperfect-information and cooperative games, which is all four of
GROUND's awkward properties.
> **Ludii → EFG ← OpenSpiel.** The extensive-form game is the interchange
> format between "describing a game" and "analysing it", and both
> neighbours already speak it.
## 3. Is Ludii's language formal? Syntax yes, semantics no
This is the sharp part of the answer.
**The syntax is formal, and unusually so.** Ludii uses a **class grammar**:
the grammar is *automatically derived from the source code*, so keywords
(ludemes) and their permitted argument types come from the class
hierarchy. A game is a quintuple of ludemes — Name, Players, Mode,
Equipment, Rules.
**The semantics are the implementation.** In the surveyed material's own
words, *"Ludii effectively makes its programming language (Java) the game
description language, and as a result, it can theoretically support any
rule, equipment or behaviour that can be programmed in Java."* A ludeme
means what its Java class does. Compilation yields a forward model —
legal moves, apply, copy.
So:
> **There is no independent mathematical semantics to extract.** The
> formality lives in the *universality result*, which is a statement about
> what the language can express, not in a calculus defining what a
> description means.
**Contrast with GDL**, which has a genuine logical semantics defined
independently of any interpreter — and pays for it in verbosity and
speed: Ludii is measured as **six times faster** on Gomoku 15×15, twenty
on Amazons and Hex, and **over two hundred** on Chess.
**That is the real trade, and it is not "Ludii vs GDL". It is:**
| you can have | you give up |
|---|---|
| semantics defined independently (GDL) | speed, concision, readability |
| speed and a machine-derived grammar (Ludii) | a definition of meaning that survives the implementation |
## 4. The conclusion for clay-borg
**Do not derive a description language from Ludii.** There is nothing
semantic to derive, and copying its approach would make *our* Rust the
definition of meaning — which is what we already have, unlabelled.
**Target the EFG directly.** It is the formal object, the universality
proof says it is expressive enough for anything we will model, and it is
what buys the game theory.
### 4.1 We are closer than the tracks assumed
clay-borg already has most of an EFG, under other names:
| EFG component | what we already have |
|---|---|
| histories | the **journal**`Applied { actor, command, events }` in order |
| legal actions | `bot::legal_commands(state, seat)` |
| **information sets** | **`state.project(Viewer::Player(seat))`** — the projection *is* the information partition |
| payoffs | `Outcome` / `score()` |
| terminal | `outcome.is_some()` |
**The projection is the find.** `Project`/`Viewer` was built so a player
is not shown another's hand ([INTENT](../INTENT.md) decision 7). It is,
unremarked, the machinery an EFG needs for imperfect information.
### 4.2 Three gaps, and one of them is checkable today
**Chance is folded, not explicit.** `setup` shuffles the deck, deals, and
draws the Lead from a seeded RNG; the mid-game reshuffle derives from seed
and round. So **a clay-borg game is one chance realisation, not a game
with chance nodes** — and our panels approximate the chance distribution
by sampling seeds. That is legitimate Monte Carlo, and it is *not* an EFG
with a chance player. CFR needs the latter.
**Perfect recall is unasserted.** CFR and exploitability assume **perfect
recall**: a player remembers their own past actions and observations.
Whether our per-seat projection sequence satisfies it is **a property of
this engine that nobody has checked**, and it is checkable —
reconstruct each seat's observation sequence from the journal and require
that no two histories in one information set disagree about that seat's
own past.
> **This is the concrete next step for Track B**, and it is small. If
> perfect recall fails, every equilibrium concept we might quote is
> unsound here, and that is worth knowing before adopting anything.
**Simultaneity is encoded but not stated.** Commit/reveal is the textbook
EFG encoding of simultaneous moves. Saying so costs nothing and removes a
question a reviewer would otherwise have to ask.
## 5. What this does to the tracks
- **Track A**: the description-language question narrows. The choice is
not "our language or Ludii's" but **"what is the cheapest thing that
emits an EFG"** — and Ludii is then a possible *front end*, not a rival.
- **Track B**: was "build a game-theory agent". It is now **close the
three gaps in §4.2, then adopt**. The first task is a checkable
property, not a design.
## 6. What was not checked
- **The universality paper's proof itself** — only its abstract and
framing were read. The theorem statement is quoted second-hand.
- **Whether OpenSpiel's exploitability is meaningful for a co-operative
game with a shared threshold.** Still open, still the question that
decides whether Track B adopts or only borrows vocabulary.
- **Ludii's licence**, and whether a front-end use is permitted.
- Whether Ludii can express a **binding multi-round state machine** like
DARVO concisely. Universality says it *can* be expressed; it says
nothing about whether the description stays readable, which is Ludii's
actual selling point.
## Sources
- *The Ludii Game Description Language is Universal*
(https://arxiv.org/abs/2205.00451)
- *An Overview of the Ludii General Game System*
(https://arxiv.org/pdf/1907.00240) and *Ludii Game Logic Guide*
— for the class grammar and Java-as-semantics point
- *Game Description Languages: the Good, the Bad, and the Ugly*, Björnsson
(https://ludii.games/TalksWorkshop/Bjornsson.pdf)
- OpenSpiel (https://github.com/google-deepmind/open_spiel)
- *A note on the empirical comparison of RBG and Ludii*
(https://arxiv.org/pdf/1910.00309) — the speed figures