--- 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