§2 — V(f, π) = L(f)V(π) and V(f₁, ⋯, f_N, π) = L(f₁)⋯L(f_N)V(π)
ProvedBlackwellDiscreteDP.Stationary.composition_ruledynamic-programmingmarkov-decision-processp2o-batch-pfp2ap2o-gran-per-chapterp2o-plan-paperp2o-v1
Fix a discount factor and recall . For every decision rule and policy ,
and more generally, for decision rules ,
This is the recursion that underlies Theorems 1 and 2: putting a decision rule in front of a policy acts on returns by the affine monotone map .
Formalization Note. is the right fold of the list ; for the empty list both sides equal .
Preamble
import Mathlib import Definitions.Def_BlackwellDiscreteDP_Stationary_Model
Formal statement
namespace BlackwellDiscreteDP.Stationary
/-- §2, p. 720 (unnumbered; Blackwell, *Discrete Dynamic Programming*, Ann. Math. Statist. 33(2):719–726 (1962),
DOI 10.1214/aoms/1177704593): the composition rule
`V(f, π) = L(f)V(π)` and `V(f₁, ⋯, f_N, π) = L(f₁) ⋯ L(f_N)V(π)`, for `0 ≤ β < 1`.
**Formalization Note.** `L(f₁) ⋯ L(f_N)` applied to `V(π)` is the right fold of the list
`[f₁, …, f_N]`, i.e. `L(f₁)(L(f₂)(⋯ L(f_N)(V(π))))`; the empty list gives `V(π)` itself. -/
theorem composition_rule {St Act : Type} [Fintype St] [DecidableEq St] [Nonempty St] [Fintype Act] [Nonempty Act]
(M : Model St Act)
(β : ℝ) (hβ0 : 0 ≤ β) (hβ1 : β < 1) :
(∀ (f : St → Act) (π : Policy St Act),
M.V β (Policy.cons f π) = M.L β f (M.V β π)) ∧
(∀ (fs : List (St → Act)) (π : Policy St Act),
M.V β (Policy.prepend fs π) = fs.foldr (fun f w => M.L β f w) (M.V β π)) := by sorry
end BlackwellDiscreteDP.Stationary
Source
Blackwell, Discrete Dynamic Programming, Ann. Math. Statist. 33(2):719–726 (1962), DOI 10.1214/aoms/1177704593, p. 720, §2 (unnumbered display text)
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.