Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Corollary 4 (corrected) — worst-case VaR for a diagonal covariance bound

Proved
DRCVRP.Covariance.worstCaseVaR_diagonal

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

convex-optimizationdistributionally-robust-optimizationp2o-batch-p200bp2o-gran-per-chapterp2o-plan-paperp2o-v1value-at-risk

Let P\mathcal PP be the covariance ambiguity set (16) with box [q‾,q‾][\underline{\boldsymbol q},\overline{\boldsymbol q}][q​,q​], q‾≥0\underline{\boldsymbol q}\ge\mathbf 0q​≥0, mean μ\boldsymbol\muμ in the interior of the box, and diagonal covariance bound Σ=diag⁡(σ12,…,σn2)\Sigma=\operatorname{diag}(\sigma_1^2,\dots,\sigma_n^2)Σ=diag(σ12​,…,σn2​) with σi>0\sigma_i>0σi​>0. Let ϵ∈(0,1)\epsilon\in(0,1)ϵ∈(0,1), r=1−ϵϵr=\frac{1-\epsilon}{\epsilon}r=ϵ1−ϵ​, qu=min⁡{1−ϵϵ(μ−q‾),q‾−μ}\boldsymbol q^u=\min\{\frac{1-\epsilon}{\epsilon}(\boldsymbol\mu-\underline{\boldsymbol q}),\overline{\boldsymbol q}-\boldsymbol\mu\}qu=min{ϵ1−ϵ​(μ−q​),q​−μ} componentwise, and for θ≥0\theta\ge0θ≥0 let S(θ)={i∈S:σi2>θ qiu}S(\theta)=\{i\in S:\sigma_i^2>\theta\,q^u_i\}S(θ)={i∈S:σi2​>θqiu​} and s(θ)=r−∑i∈S(θ)(qiu/σi)2s(\theta)=r-\sum_{i\in S(\theta)}(q^u_i/\sigma_i)^2s(θ)=r−∑i∈S(θ)​(qiu​/σi​)2. Then for every customer subset SSS

sup⁡P∈PP-VaR1−ϵ[∑i∈Sq~i]=sup⁡θ∈Θ {1S⊤μ+∑i∈S(θ)qiu+s(θ)∑i∈S∖S(θ)σi2},\sup_{\mathbb P\in\mathcal P}\mathbb P\text{-VaR}_{1-\epsilon}\Big[\sum_{i\in S}\tilde q_i\Big]=\sup_{\theta\in\Theta}\ \Big\{\mathbf 1_S^\top\boldsymbol\mu+\sum_{i\in S(\theta)}q^u_i+\sqrt{s(\theta)\sum_{i\in S\setminus S(\theta)}\sigma_i^2}\Big\},P∈Psup​P-VaR1−ϵ​[i∈S∑​q~​i​]=θ∈Θsup​ {1S⊤​μ+i∈S(θ)∑​qiu​+s(θ)i∈S∖S(θ)∑​σi2​​},

where Θ\ThetaΘ is the set of θ≥0\theta\ge0θ≥0 such that

  1. s(θ)≥0s(\theta)\ge0s(θ)≥0 (the paper's restriction of the feasible region), and
  2. σi2s(θ)≤qiu∑k∈S∖S(θ)σk2\sigma_i^2\sqrt{s(\theta)}\le q^u_i\sqrt{\sum_{k\in S\setminus S(\theta)}\sigma_k^2}σi2​s(θ)​≤qiu​∑k∈S∖S(θ)​σk2​​ for every i∈S∖S(θ)i\in S\setminus S(\theta)i∈S∖S(θ).

Condition 2 says that the solution of (17) induced by θ\thetaθ — qi=qiuq_i=q^u_iqi​=qiu​ on S(θ)S(\theta)S(θ), qi=σi2s(θ)/∑S∖S(θ)σk2q_i=\sigma_i^2\sqrt{s(\theta)}/\sqrt{\sum_{S\setminus S(\theta)}\sigma_k^2}qi​=σi2​s(θ)​/∑S∖S(θ)​σk2​​ on S∖S(θ)S\setminus S(\theta)S∖S(θ), qi=0q_i=0qi​=0 off SSS — respects the upper bound qu\boldsymbol q^uqu. The result turns the quadratically constrained program of Theorem 7 into a one-parameter search, which the paper uses to evaluate the worst-case value-at-risk in time linear in ∣S∣|S|∣S∣ once the ratios qiu/σi2q^u_i/\sigma_i^2qiu​/σi2​ are sorted.

This is a corrected statement. Corollary 4 as printed maximizes over all θ≥0\theta\ge0θ≥0 satisfying condition 1 only. That claim is false: for n=1n=1n=1, S={1}S=\{1\}S={1}, every large θ\thetaθ gives S(θ)=∅S(\theta)=\emptysetS(θ)=∅ and the value μ1+σ1r\mu_1+\sigma_1\sqrt rμ1​+σ1​r​, whereas the worst-case value-at-risk is μ1+min⁡{q1u,σ1r}\mu_1+\min\{q^u_1,\sigma_1\sqrt r\}μ1​+min{q1u​,σ1​r​} (Theorem 7), which is smaller whenever q1u<σ1rq^u_1<\sigma_1\sqrt rq1u​<σ1​r​; e.g. μ1=1\mu_1=1μ1​=1, q‾1=0\underline q_1=0q​1​=0, q‾1=1.2\overline q_1=1.2q​1​=1.2, σ1=1\sigma_1=1σ1​=1, ϵ=12\epsilon=\frac12ϵ=21​ gives 222 on the printed right-hand side, larger than q‾1\overline q_1q​1​, which bounds every value-at-risk. Condition 2 restores the equality: every θ∈Θ\theta\in\Thetaθ∈Θ induces a feasible point of (17), and the optimal solution of (17) is induced by some θ∈Θ\theta\in\Thetaθ∈Θ.

Formalization Note As in Theorem 7, the paper writes "P\mathbb PP-VaR" without the level; the level 1−ϵ1-\epsilon1−ϵ used everywhere else in the paper is read in. Condition 2 is written without division so that it is meaningful when S∖S(θ)=∅S\setminus S(\theta)=\emptysetS∖S(θ)=∅ (then it is vacuous). The worst-case VaR and the program use the definitions covarianceSet, worstCaseVaR, qUpper, capSet, capSlack, diagObjective.

Preamble
import Mathlib
import Definitions.Def_MultistageStochastic_RiskFunctional
import Definitions.Def_DRCVRP_Covariance_AmbiguitySet
import Definitions.Def_DRCVRP_Covariance_DiagonalProgram

open MeasureTheory
Formal statement
namespace DRCVRP.Covariance

/-- Corollary 4 (p. 727), **corrected**. For the diagonal bound `Σ = diag(σ₁², …, σₙ²)`,
`σ_i > 0`, the worst-case value-at-risk equals the supremum of the objective of (18),
`1_Sᵀμ + ∑_{i ∈ S(θ)} q^u_i + √([(1-ε)/ε - ∑_{i ∈ S(θ)} (q^u_i/σ_i)²][∑_{i ∈ S∖S(θ)} σ_i²])`,
over the `θ ≥ 0` for which (a) the first factor under the root is nonnegative (the paper's
restriction) and (b) the induced deviations `σ_i² τ(θ)` of the customers `i ∈ S ∖ S(θ)`, where
`τ(θ) = √(slack) / √(∑_{S∖S(θ)} σ_k²)`, do not exceed `q^u_i`; (b) is written without division.
Condition (b) is the correction: as printed, without it, the claim fails already for `n = 1`,
where the supremum would be `μ₁ + σ₁√((1-ε)/ε)` even when this exceeds `q̄₁`. -/
theorem worstCaseVaR_diagonal {n : ℕ} (qlo qhi μ σ : Fin n → ℝ) (ε : ℝ) (S : Finset (Fin n))
    (hqlo : ∀ j, 0 ≤ qlo j) (hμ : ∀ j, qlo j < μ j ∧ μ j < qhi j) (hσ : ∀ i, 0 < σ i)
    (hε0 : 0 < ε) (hε1 : ε < 1) :
    worstCaseVaR (covarianceSet qlo qhi μ (Matrix.diagonal fun i => σ i ^ 2)) ε S =
      sSup ((fun θ : ℝ => ∑ j ∈ S, μ j +
          diagObjective (qUpper qlo qhi μ ε) σ S ((1 - ε) / ε) θ) ''
        {θ | 0 ≤ θ ∧ 0 ≤ capSlack (qUpper qlo qhi μ ε) σ S ((1 - ε) / ε) θ ∧
          ∀ i ∈ S \ capSet (qUpper qlo qhi μ ε) σ S θ,
            σ i ^ 2 * Real.sqrt (capSlack (qUpper qlo qhi μ ε) σ S ((1 - ε) / ε) θ) ≤
              qUpper qlo qhi μ ε i *
                Real.sqrt (∑ k ∈ S \ capSet (qUpper qlo qhi μ ε) σ S θ, σ k ^ 2)}) := by sorry

end DRCVRP.Covariance
Source
Ghosal and Wiesemann, The Distributionally Robust Chance-Constrained Vehicle Routing Problem, Oper. Res. 68(3) (2020) 716–732, §5.2, p. 727, Corollary 4, Eq. (18) (corrected; the printed claim is false, see the statement)
Human review
  • Endorsed by Shuze Chen · Oct 1, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Oct 1, 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