Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Eqs. (28) and (23), pp. 785–786 — the worst-case cost of a stationary policy solves the robust evaluation equation

Proved
RobustMDP.Discounted.worstCase_policy_eval

by mikedeng1 · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

dynamic-programmingmarkov-decision-processp2o-batch-p100bp2o-gran-per-chapterp2o-plan-paperp2o-v1robust-optimization

Fix an initial state i0i_0i0​ and a stationary control policy π=(a,a,… )\pi = (\mathbf a, \mathbf a, \dots)π=(a,a,…). The equation

vπ(i)=c(i,a(i))+ν σPia(i)(vπ),i∈X,(23)v^\pi(i) = c(i, \mathbf a(i)) + \nu\, \sigma_{\mathcal P_i^{\mathbf a(i)}}(v^\pi), \qquad i \in \mathcal X, \tag{23}vπ(i)=c(i,a(i))+νσPia(i)​​(vπ),i∈X,(23)

has exactly one solution vπ∈Rnv^\pi \in \mathbb R^nvπ∈Rn, and the worst-case discounted cost of π\piπ over stationary policies of nature is

ϕ∞(π,Ts)=sup⁡τ∈TsC∞(π,τ)=vπ(i0).\phi_\infty(\pi, \mathcal T_s) = \sup_{\tau \in \mathcal T_s} C_\infty(\pi, \tau) = v^\pi(i_0).ϕ∞​(π,Ts​)=τ∈Ts​sup​C∞​(π,τ)=vπ(i0​).

In the paper this value is the optimum of the nonlinear program (28), obtained from (26) by letting nature's matrices become variables; (23) is its characterization.

Formalization Note The paper writes max⁡τ∈Ts\max_{\tau \in \mathcal T_s}maxτ∈Ts​​. The row sets need not be closed, so the supremum need not be attained, and it is stated as a least upper bound (IsLUB) of the set of costs C∞(π,τ)C_\infty(\pi, \tau)C∞​(π,τ), τ∈Ts\tau \in \mathcal T_sτ∈Ts​.

Preamble
import Mathlib
import Definitions.Def_RobustMDP_Discounted_Model
import Definitions.Def_RobustMDP_Shared_supportFunction
import Definitions.Def_RobustMDP_Discounted_discountedCost
import Definitions.Def_RobustMDP_Discounted_bellmanOps
Formal statement
namespace RobustMDP.Discounted

/-- Problem (28) and equation (23) (Nilim–El Ghaoui 2005, pp. 785–786). For every stationary
controller policy `π = (𝐚, 𝐚, …)`, the equation (23)
`v^π(i) = c(i, 𝐚(i)) + ν σ_{𝒫_i^{𝐚(i)}}(v^π)`, `i ∈ 𝒳`, has exactly one solution `v^π ∈ ℝⁿ`,
and the worst-case discounted cost `φ_∞(π, 𝒯_s) = sup_{P ∈ 𝒯_s} C_∞(π, P)` from the initial
state `i₀` equals `v^π(i₀)`. The supremum over the (generally infinite) set `𝒯_s` is stated as a
least upper bound, since it need not be attained. -/
theorem worstCase_policy_eval {n : ℕ} {A : Type} (M : Model n A) (i₀ : Fin n)
    (π : StationaryPolicy n A) :
    ∃ vπ : Fin n → ℝ,
      M.policyOp π vπ = vπ ∧ (∀ w, M.policyOp π w = w → w = vπ) ∧
      IsLUB (Set.range fun P : M.StationaryNature => M.discountedCost i₀ π P) (vπ i₀) := by sorry

end RobustMDP.Discounted
Source
Nilim and El Ghaoui, Robust Control of Markov Decision Processes with Uncertain Transition Matrices, Oper. Res. 53 (2005), p. 786, Eq. (28); p. 785, Theorem 3, Eq. (23)
Read-back

What the Lean code literally says, in plain math · claude-opus-5-5

The inputs are any model MMM (with AAA arbitrary, not required to be finite), an initial state i0i_0i0​, and a stationary policy π\piπ. The statement asserts that there exists vπ∈Rnv^\pi \in \mathbb{R}^nvπ∈Rn with three properties:

  1. vπ=gπ(vπ)v^\pi = g_\pi(v^\pi)vπ=gπ​(vπ). Written out:
vπ(i)=c(i,π(i))+ν σPiπ(i)(vπ)for all i,v^\pi(i) = c\big(i,\pi(i)\big) + \nu\,\sigma_{\mathcal{P}_i^{\pi(i)}}(v^\pi) \quad \text{for all } i,vπ(i)=c(i,π(i))+νσPiπ(i)​​(vπ)for all i,

where σ\sigmaσ is an externally defined quantity not shown here. 2. Every www with gπ(w)=wg_\pi(w) = wgπ​(w)=w equals vπv^\pivπ. 3. vπ(i0)v^\pi(i_0)vπ(i0​) is the least upper bound of {C∞(π,P):P a stationary nature policy of M}\{ C_\infty(\pi,P) : P \text{ a stationary nature policy of } M\}{C∞​(π,P):P a stationary nature policy of M}.

Here C∞C_\inftyC∞​ is the discounted cost from i0i_0i0​. Property 3 means two things:

  • C∞(π,P)≤vπ(i0)C_\infty(\pi,P) \le v^\pi(i_0)C∞​(π,P)≤vπ(i0​) for every nature policy PPP;
  • no smaller number is an upper bound.

It does not assert that some PPP attains the value. The set of nature policies is nonempty because every row set is nonempty.

Degenerate cases:

  • n=0n = 0n=0: no i0i_0i0​ exists, so the statement is vacuous.
  • ν=0\nu = 0ν=0: the claim becomes vπ(i)=c(i,π(i))v^\pi(i) = c(i,\pi(i))vπ(i)=c(i,π(i)), and the supremum of the constant c(i0,π(i0))c(i_0,\pi(i_0))c(i0​,π(i0​)) equals it.
Human review
  • Endorsed by Shuze Chen · Sep 28, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Sep 28, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me