EconCSLib.GameTheory.ExtensiveGame.BackwardInduction #
Backward induction on GameTree N U, producing a value function
value : GameTree N U → (N → U) together with the optimality lemmas
used by ExtensiveGame.SPE to prove Kuhn's theorem.
Minimal assumptions #
The payoff type U carries [TotalPreorder U] (reflexivity + transitivity +
totality; no antisymmetry) plus [DecidableLE U] so the argmax — and hence
value — is computable. ℚ (the Zermelo / examples track) supplies both.
Main definitions #
GameTree.value— the backward-induction value vector (computable).GameTree.valueList— mutually recursive helper: value on a list of trees.
Main results #
value_Leaf— value of a leaf is its payoffvalue_Node— value of a node equals the argmax-chosen child's valuevalue_Node_ge— the mover's coordinate dominates every child'svalue_Node_eq_some_child_value— a node's value is the value of some child
Value of a game tree: a payoff vector. At a Node, the mover selects
a child maximizing their own coordinate (argmax over the total preorder).
Computable — with a decidable comparison [DecidableLE U] the argmax
is a left fold, so value runs (#eval/decide) on concrete games.
Equations
- (GameTree.Leaf p).value = p
- (GameTree.Node m h t).value = List.argMaxOn (fun (v : N → U) => v m) h.value (GameTree.valueList t)
Instances For
Pointwise image of value over a list of game trees.
Structurally recursive on the list.
Equations
- GameTree.valueList [] = []
- GameTree.valueList (x_1 :: xs) = x_1.value :: GameTree.valueList xs
Instances For
Key optimality lemma: at a Node m h t, the mover m's coordinate
of the backward-induction value dominates every child's.
The value at a node is itself the value of some child (the argmax).
Specifically, argMaxOn ... ∈ value h :: valueList t, so it equals
value c for some c ∈ h :: t.