Add a payoff-free structural core for extensive-form games - #34
Merged
Conversation
lyw-ops
marked this pull request as ready for review
August 3, 2026 08:34
lyw-ops
force-pushed
the
codex/efg-minimal-core
branch
2 times, most recently
from
August 3, 2026 13:02
afde2c4 to
22fc606
Compare
Separate Arena and ControlledGame from payoff-aware compatibility, with canonical reachability, occurrence-sensitive histories, complete plays, and observed pure strategies. Keep terminal mover labels out of strategy coordinates, expose an unfolding endpoint projection, and enforce the narrow structural import boundary with regressions.
lyw-ops
force-pushed
the
codex/efg-minimal-core
branch
from
August 4, 2026 09:03
22fc606 to
4d4bce0
Compare
Collaborator
|
Looks good |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a narrow, payoff-free structural foundation for Arena-based extensive-form games:
Arena) from controlled dynamics (ControlledGame), while retainingExtensiveGame N Uas the existing state-payoff compatibility layer;isNonPlayerStateas the canonical structural name for a nonterminal state without a player mover, while retainingisChanceStateas a compatibility alias that supplies no probability law;Subgamemodule;Interface.StructuralCorefacade.Design boundary
The structural core deliberately assumes no finiteness, decidable equality, termination, probability law, objective, payoff semantics, recall condition, or equilibrium concept. Those properties can be supplied later as separate certificates and semantic layers. This keeps the same carriers usable for finite computation, infinite games, logical games, and analytic models.
Interface.StructuralCorehas the following exact EFG implementation closure:Structural.BasicStructural.ReachabilityStructural.HistoryExecution.CompletePlayObserved.ControlledThe facade is opt-in in this pre-stability PR;
EconCSLib.leanis intentionally unchanged.Compatibility
Execution.ReachabilityandExecution.Historyremain compatibility imports of their canonicalStructural.*owners.Subgame.leanimports the extracted reachability module and removes only the declarations moved there. Its existingPlayimport is retained so current downstream modules do not lose their historical transitive dependency. The existingStrategy,Play,Subgame,BehaviorStrategy, and finite Arena modules all build against the newExtensiveGame extends ControlledGamerepresentation.Regression coverage
HistoryDiamondimportsStructural.Historydirectly and proves that two distinct action occurrences remain distinct histories even when they reach the same endpoint state.TerminalMoverIgnoredverifies that a mover label on a terminal state creates no decision-information coordinate.StructuralCoreImportBoundarychecks the intended public structural declarations from the narrow facade, including the canonical and compatibility non-player-state names, and guards against payoff-aware declarations leaking through the facade.Verification
lake buildlake build EconCSLib.Examplespython3 scripts/check_lean_placeholders.py EconCSLibgit diff --checkAll checks pass on a clean branch based on current upstream
main.