Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Theorem 3 (prescribed redistribution): D(J; q) ≤ Σ_{i∈J} p_i Σ_{j∉J} λ_j c(ω_i, ω_j), equality if #J = 1 and c satisfies the triangle inequality

Proved
ScenarioReduction.Redistribution.prescribed_redistribution

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

optimal-transportp2o-batch-p100ap2o-gran-per-chapterp2o-plan-paperp2o-v1scenario-reductionstochastic-programming

Under the standing assumptions of Section 3, fix J⊂{1,…,N}J\subset\{1,\dots,N\}J⊂{1,…,N} and redistribution weights λj≥0\lambda_j\ge0λj​≥0, j∉Jj\notin Jj∈/J, with ∑j∉Jλj=1\sum_{j\notin J}\lambda_j=1∑j∈/J​λj​=1. Redistribute the deleted mass pJ=∑i∈Jpip_J=\sum_{i\in J}p_ipJ​=∑i∈J​pi​ by the rule (12),

qj=pj+λjpJ(j∉J).q_j=p_j+\lambda_jp_J\qquad(j\notin J).qj​=pj​+λj​pJ​(j∈/J).

Then

D(J;q)≤∑i∈Jpi∑j∉Jλjc(ωi,ωj).D(J;q)\le\sum_{i\in J}p_i\sum_{j\notin J}\lambda_jc(\omega_i,\omega_j).D(J;q)≤i∈J∑​pi​j∈/J∑​λj​c(ωi​,ωj​).

Moreover, equality holds if #J=1\#J=1#J=1 and ccc satisfies the triangle inequality c(a,d)≤c(a,b)+c(b,d)c(a,d)\le c(a,b)+c(b,d)c(a,d)≤c(a,b)+c(b,d) for all a,b,d∈Ωa,b,d\in\Omegaa,b,d∈Ω.

The theorem bounds the distance when the reduced weights are prescribed (for instance, to keep a uniform distribution uniform) instead of optimized as in Theorem 2.

Formalization Note JJJ may be empty; ∑j∉Jλj=1\sum_{j\notin J}\lambda_j=1∑j∈/J​λj​=1 already forces at least one kept scenario. The triangle inequality is a hypothesis of the equality clause only, and is required on all of Ω\OmegaΩ as in the paper. Measurability, (C3) and (C4) are dropped as in the other items.

Preamble
import Mathlib
import Definitions.Def_ScenarioReduction_Redistribution_transportValue

open Finset
Formal statement
namespace ScenarioReduction.Redistribution

theorem prescribed_redistribution {Ω : Type*} {N : ℕ} (c : Ω → Ω → ℝ) (ω : Fin N → Ω) (p : Fin N → ℝ)
    (hc : ∀ a b : Ω, 0 ≤ c a b) (hc1 : ∀ a b : Ω, c a b = 0 ↔ a = b)
    (hc2 : ∀ a b : Ω, c a b = c b a)
    (hp : ∀ i, 0 < p i) (hp1 : ∑ i, p i = 1)
    (J : Finset (Fin N)) (lam : Fin N → ℝ) (hlam : ∀ j ∉ J, 0 ≤ lam j) (hlam1 : ∑ j ∈ Jᶜ, lam j = 1) :
    transportValue c ω p J (prescribedWeights p J lam) ≤ ∑ i ∈ J, p i * ∑ j ∈ Jᶜ, lam j * c (ω i) (ω j) ∧
      (J.card = 1 → (∀ a b d : Ω, c a d ≤ c a b + c b d) →
        transportValue c ω p J (prescribedWeights p J lam) = ∑ i ∈ J, p i * ∑ j ∈ Jᶜ, lam j * c (ω i) (ω j)) := by sorry

end ScenarioReduction.Redistribution
Source
Dupačová, Gröwe-Kuska, Römisch, Scenario reduction in stochastic programming, Math. Program. Ser. A 95 (2003), p. 501, Theorem 3 and eq. (12)
Read-back

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

The data are:

  • an arbitrary type Ω\OmegaΩ and N∈NN \in \mathbb{N}N∈N;
  • c:Ω×Ω→Rc : \Omega \times \Omega \to \mathbb{R}c:Ω×Ω→R;
  • ω:[N]→Ω\omega : [N] \to \Omegaω:[N]→Ω and p:[N]→Rp : [N] \to \mathbb{R}p:[N]→R;
  • J⊆[N]J \subseteq [N]J⊆[N];
  • λ:[N]→R\lambda : [N] \to \mathbb{R}λ:[N]→R.

The hypotheses are:

  • c≥0c \ge 0c≥0;
  • c(a,b)=0  ⟺  a=bc(a, b) = 0 \iff a = bc(a,b)=0⟺a=b;
  • ccc is symmetric;
  • pi>0p_i > 0pi​>0 for all iii, and ∑ipi=1\sum_i p_i = 1∑i​pi​=1;
  • λj≥0\lambda_j \ge 0λj​≥0 for every j∉Jj \notin Jj∈/J, and ∑j∉Jλj=1\sum_{j \notin J} \lambda_j = 1∑j∈/J​λj​=1. Nothing is required of λj\lambda_jλj​ for j∈Jj \in Jj∈J.

Define the prescribed weights

qjλ=pj+λj∑i∈Jpi.q^\lambda_j = p_j + \lambda_j \sum_{i \in J} p_i.qjλ​=pj​+λj​i∈J∑​pi​.

Here D(J;qλ)D(J; q^\lambda)D(J;qλ) is the infimum of ∑i∈[N]∑j∉Jc(ωi,ωj) ηij\sum_{i \in [N]} \sum_{j \notin J} c(\omega_i, \omega_j)\, \eta_{ij}∑i∈[N]​∑j∈/J​c(ωi​,ωj​)ηij​ over matrices η\etaη with:

  • ηij≥0\eta_{ij} \ge 0ηij​≥0 for j∉Jj \notin Jj∈/J;
  • ∑j∉Jηij=pi\sum_{j \notin J} \eta_{ij} = p_i∑j∈/J​ηij​=pi​ for every iii;
  • ∑iηij=qjλ\sum_i \eta_{ij} = q^\lambda_j∑i​ηij​=qjλ​ for j∉Jj \notin Jj∈/J.

It is 000 if no such η\etaη exists.

The theorem asserts:

  1. Upper bound.
D(J;qλ)  ≤  ∑i∈Jpi∑j∉Jλj c(ωi,ωj).D(J; q^\lambda) \;\le\; \sum_{i \in J} p_i \sum_{j \notin J} \lambda_j\, c(\omega_i, \omega_j).D(J;qλ)≤i∈J∑​pi​j∈/J∑​λj​c(ωi​,ωj​).
  1. Equality for one deleted index. If ∣J∣=1|J| = 1∣J∣=1 and ccc satisfies the triangle inequality c(a,d)≤c(a,b)+c(b,d)c(a, d) \le c(a, b) + c(b, d)c(a,d)≤c(a,b)+c(b,d) for all a,b,d∈Ωa, b, d \in \Omegaa,b,d∈Ω, then equality holds in (1).

Degenerate cases:

  • N=0N = 0N=0. The statement is vacuous.
  • J=[N]J = [N]J=[N]. The condition ∑j∉Jλj=1\sum_{j \notin J} \lambda_j = 1∑j∈/J​λj​=1 is an empty sum equal to 111, which is impossible, so the statement is vacuous.
  • J=∅J = \emptysetJ=∅. Then qλ=pq^\lambda = pqλ=p and part (1) reads D(∅;p)≤0D(\emptyset; p) \le 0D(∅;p)≤0. Part (2) is vacuous because ∣J∣=0≠1|J| = 0 \ne 1∣J∣=0=1.
  • Values on JJJ. The values λj\lambda_jλj​ for j∈Jj \in Jj∈J affect only qjλq^\lambda_jqjλ​ for j∈Jj \in Jj∈J, which does not enter DDD.
Human review
  • Endorsed by Shuze Chen · Sep 27, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Sep 27, 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