Theorem 1 (Robust Dynamic Programming) — perfect duality and the robust Bellman recursion
ProvedRobustMDP.FiniteHorizon.robust_dynamic_programmingConsider a finite-horizon MDP with states , horizon , a finite nonempty action set , nonnegative stage costs , a terminal cost , an initial state , and rectangular uncertainty: nonempty sets of possible -th rows of the transition matrix under action (no other assumption). Let be the deterministic Markov controller policies, the admissible time-varying policies of nature, and the expected total cost (2). Let be given by the robust recursion (7) and, for , by recursion (10), both with terminal value . Then:
- Perfect duality holds, with value given by (7):
- For every , the worst-case cost is given by (10): .
- Every policy with for all (rule (8)) is optimal: .
- Every policy of nature whose rows satisfy for all (rule (9)) is a worst case: , and for every as in 3.
The theorem says that the robust control problem with time-varying rectangular uncertainty is solved by a dynamic programming recursion of the same form as the nominal one, with the expected continuation cost replaced by a support function, and that the order of play between controller and nature does not matter. Convexity of the uncertainty sets is not required.
Formalization Note is finite and nonempty, so minima over it are Lean's ⨅. The paper writes "max" over nature; the row sets need not be closed, so these are suprema ⨆ over the nonempty set , whose costs are bounded above because every row lies in . For the same reason the maxima in (9) need not be attained, and conclusion 4 is stated for nature policies that attain them. The argmin rule (8) is stated for every policy attaining the minimum, not a particular choice. The terminal value is implicit in the paper's proof and explicit on p. 785. The paper's "" in the sentence before (10) is read as .
import Mathlib import Definitions.Def_RobustMDP_Shared_supportFunction import Definitions.Def_RobustMDP_FiniteHorizon_Model import Definitions.Def_RobustMDP_FiniteHorizon_expectedCost import Definitions.Def_RobustMDP_FiniteHorizon_robustValue
namespace RobustMDP.FiniteHorizon
/-- Theorem 1 (Robust Dynamic Programming), Nilim–El Ghaoui 2005, pp. 782–783.
For a finite-horizon MDP with rectangular uncertainty (nonempty row sets `𝒫_i^a ⊆ Δ_n`, no other
assumption), initial state `i₀`, and `C_N(π, τ)` the expected total cost (2):
1. perfect duality holds, with value given by recursion (7):
`min_{π ∈ Π} sup_{τ ∈ 𝒯} C_N(π, τ) = v_0(i₀) = sup_{τ ∈ 𝒯} min_{π ∈ Π} C_N(π, τ)`;
2. for every policy `π`, the worst case `sup_{τ ∈ 𝒯} C_N(π, τ)` is `v_0^π(i₀)`, recursion (10);
3. every policy `π*` whose actions attain the minimum in (8),
`𝐚*_t(i) ∈ argmin_a {c_t(i, a) + σ_{𝒫_i^a}(v_{t+1})}`, is optimal:
`sup_{τ ∈ 𝒯} C_N(π*, τ) = v_0(i₀)`;
4. every nature policy `τ*` whose rows attain the maxima in (9),
`p_i^a(t) ∈ argmax {pᵀ v_{t+1} : p ∈ 𝒫_i^a}`, is a worst case:
`min_{π ∈ Π} C_N(π, τ*) = v_0(i₀)`, and `C_N(π*, τ*) = v_0(i₀)` for every `π*` as in 3.
`Π` is finite, so its minima are `⨅`; nature's maxima are `⨆` over the (possibly infinite) set
`𝒯`, which is nonempty and whose costs are bounded above. The row maxima of (9) need not be
attained, so conclusion 4 is stated for nature policies that attain them. -/
theorem robust_dynamic_programming {n N : ℕ} {A : Type} [Fintype A] [Nonempty A]
(M : Model n N A) (i₀ : Fin n) :
((⨅ π : ControlPolicy n N A, ⨆ τ : M.NaturePolicy, M.expectedCost i₀ π τ.1) =
M.robustValue 0 i₀ ∧
(⨆ τ : M.NaturePolicy, ⨅ π : ControlPolicy n N A, M.expectedCost i₀ π τ.1) =
M.robustValue 0 i₀) ∧
(∀ π : ControlPolicy n N A,
(⨆ τ : M.NaturePolicy, M.expectedCost i₀ π τ.1) = M.policyValue π 0 i₀) ∧
(∀ πstar : ControlPolicy n N A,
(∀ (t : Fin N) (i : Fin n) (a : A),
M.cost t i (πstar t i) + Shared.supportFunction (M.rows (πstar t i) i) (M.robustValue (t + 1)) ≤
M.cost t i a + Shared.supportFunction (M.rows a i) (M.robustValue (t + 1))) →
(⨆ τ : M.NaturePolicy, M.expectedCost i₀ πstar τ.1) = M.robustValue 0 i₀) ∧
(∀ τstar : M.NaturePolicy,
(∀ (t : Fin N) (a : A) (i : Fin n),
∑ j, τstar.1 t a i j * M.robustValue (t + 1) j =
Shared.supportFunction (M.rows a i) (M.robustValue (t + 1))) →
(⨅ π : ControlPolicy n N A, M.expectedCost i₀ π τstar.1) = M.robustValue 0 i₀ ∧
∀ πstar : ControlPolicy n N A,
(∀ (t : Fin N) (i : Fin n) (a : A),
M.cost t i (πstar t i) + Shared.supportFunction (M.rows (πstar t i) i) (M.robustValue (t + 1)) ≤
M.cost t i a + Shared.supportFunction (M.rows a i) (M.robustValue (t + 1))) →
M.expectedCost i₀ πstar τstar.1 = M.robustValue 0 i₀) := by sorry
end RobustMDP.FiniteHorizon
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Setting. The statement fixes the following:
- natural numbers (the number of states) and (the horizon);
- a type of actions, which must be finite and nonempty;
- a model of type "finite-horizon robust MDP with states, horizon and actions ";
- an initial state .
The code uses several named notions: 's stage costs, its uncertainty sets (called "rows"), its set of nature policies, the expected cost, the robust value, the policy value, and a support function. Their definitions are in imported files that are not part of the supplied code, so they cannot be unfolded here. Only the following can be read off from how they are used:
- Control policy . It assigns an action to each stage and state . The minima below range over the whole type of control policies.
- Nature policy . It is an element of a set defined by the model; the membership condition is hidden. Its underlying data is a number for each stage , action , state and next state .
- Stage cost. is a number.
- Uncertainty set. ('s "rows" at action , state ) is passed to a support function , which also takes a vector indexed by states.
- Values. The following appear:
- the expected cost , evaluated on the underlying data of ;
- the robust value at stage and state ;
- the policy value .
The theorem asserts the conjunction of four statements.
- Two dualities.
- Worst case of each policy. For every control policy :
- Greedy policies are optimal. Take any control policy such that, for every stage , every state and every action ,
Then
The condition must hold at all states, not only the ones reachable from .
- Attaining nature policies are worst cases. Take any nature policy such that, for every stage , every action and every state ,
Then both of the following hold:
- ;
- for every that satisfies the condition in item 3.
The condition is an equation between the -weighted sum of 's row and the support-function value. Whether that row lies in is not stated here; it holds only if the hidden membership condition of imposes it.
Fine print.
-
Stage index. In items 3 and 4, lies in and the next stage is written . The code does not show what type the robust value's stage argument has. If it is a natural number, is the ordinary successor, reaching at the last stage. If the addition happens in , then wraps around to when .
-
No explicit hypotheses on the model. Nothing in the statement says:
- that the uncertainty sets are nonempty or bounded;
- that is nonempty;
- that the costs are bounded above over .
Any such property would have to come from the hidden definition of the model. If the values are real numbers (the use of , and finite sums suggests so, but the type is not shown), then a supremum over an empty set, or over a set that is not bounded above, takes the conventional value . The same would apply to a support function taken over such a set. In those cases the equalities above compare such default values with or .
-
Infima over policies. These range over a type that is finite and nonempty whenever it consists of stage-and-state-indexed action choices, since is finite and nonempty. In that case each infimum is an attained minimum.
Degenerate cases.
- . There is no initial state , so the theorem is vacuous.
- . There are no stages, so the conditions in items 3 and 4 hold vacuously. Every control policy then counts as and every element of counts as . The theorem then asserts, for every and every :
with the supremum taking whatever default value applies if is empty.
- One action. If has a single element, the condition in item 3 holds trivially, so the unique policy is asserted to satisfy item 3's conclusion.
- Empty . Item 4 is vacuous. Item 1's second equality and items 2 and 3 then equate the empty supremum (its default value, e.g. in the reals) with and .
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.