Lemma 1, p. 783 — a monotone recursion solves the linear program (11)
ProvedRobustMDP.FiniteHorizon.lemma_oneLet , , and let , , be componentwise nondecreasing: componentwise implies . Consider
with inequalities componentwise and fixed. Then the recursion , (12), started at , has a unique solution ; it is feasible for (11), and
the maximum being attained at .
The lemma turns every problem of the form (11) with monotone constraint maps into a backward recursion; the proof of Theorem 1 applies it to problems (14), (15) and (16).
Formalization Note Sequences are functions on Fin (N+1) with fixed. The paper writes the composition , an index slip for ; the Lean uses , the composition being the fold of the list onto . The maximum is stated with IsGreatest, so attainment is part of the claim.
import Mathlib
namespace RobustMDP.FiniteHorizon
/-- Lemma 1 (Nilim–El Ghaoui 2005, p. 783). Fix `v_N ∈ ℝⁿ`, `q ∈ ℝⁿ₊` and componentwise
nondecreasing maps `g_t : ℝⁿ → ℝⁿ`, `t ∈ T = {0, …, N-1}`. Consider problem (11): maximise
`qᵀ v_0` over `v_0, …, v_{N-1}` (with `v_N` fixed) subject to `v_t ≤ g_t(v_{t+1})` componentwise.
A vector sequence is encoded as `v : Fin (N+1) → Fin n → ℝ` with `v (Fin.last N) = v_N`.
Conclusions: the recursion (12) `v_t = g_t(v_{t+1})` with terminal value `v_N` has exactly one
solution `v*`; for it, `v*_0 = (g_0 ∘ ⋯ ∘ g_{N-1})(v_N)` (the list `[g_0, …, g_{N-1}]` folded
from the right onto `v_N`), `v*` is feasible, and `qᵀ v*_0` is the maximum of (11). The paper
writes the composition as `g_1 ∘ ⋯ ∘ g_N`, an index slip for `T = {0, …, N-1}`. -/
theorem lemma_one {n N : ℕ} (g : Fin N → (Fin n → ℝ) → (Fin n → ℝ))
(hg : ∀ t, Monotone (g t)) (q : Fin n → ℝ) (hq : 0 ≤ q) (vN : Fin n → ℝ) :
(∃! vstar : Fin (N + 1) → Fin n → ℝ,
vstar (Fin.last N) = vN ∧ ∀ t : Fin N, vstar t.castSucc = g t (vstar t.succ)) ∧
∀ vstar : Fin (N + 1) → Fin n → ℝ,
vstar (Fin.last N) = vN → (∀ t : Fin N, vstar t.castSucc = g t (vstar t.succ)) →
vstar 0 = (List.ofFn g).foldr (fun f x => f x) vN ∧
IsGreatest
((fun v : Fin (N + 1) → Fin n → ℝ => ∑ i, q i * v 0 i) ''
{v | v (Fin.last N) = vN ∧ ∀ t : Fin N, v t.castSucc ≤ g t (v t.succ)})
(∑ i, q i * vstar 0 i) := by sorry
end RobustMDP.FiniteHorizon
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Hypotheses. Fix natural numbers and maps . Each is monotone for the componentwise order: in every coordinate implies in every coordinate. Nothing else is assumed: no continuity and no linearity. Fix also a vector with for all , and a vector . A sequence means vectors .
Conclusion 1. There is exactly one sequence such that
Conclusion 2. Every sequence with these two properties satisfies two further statements.
- It is the composition of the applied to :
- The number is the greatest element of the set
In other words, it belongs to this set (by feasibility) and is at least every member of it.
Degenerate cases.
- : the only sequence is , the composition is empty, and the feasible set is .
- : every vector is empty and every value is .
- : the feasible set is and the conclusion is trivial.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.