Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Theorem 2, pp. 494–495 — optimal dual-sourcing quantities region by region (corrected Ω₃–Ω₅ bounds)

Proved
MitigateSupplyRisk.DualSourcing.theorem_2

by mikedeng1 · Oct 7, 2026 · Mathlib 0df444a (Lean v4.33.1)

dual-sourcinginventoryp2o-batch-pfp2bp2o-gran-per-chapterp2o-plan-paperp2o-v1supply-risk

Consider the two-supplier random-capacity newsvendor at reliability indices a=(a1,a2)a = (a_1, a_2)a=(a1​,a2​) and suppose that

  1. demand is deterministic, equal to x≥0x \ge 0x≥0;
  2. there is no committed cost, η1=η2=0\eta_1 = \eta_2 = 0η1​=η2​=0, so ϕi=(r+p−ci)/(r+p−v)\phi_i = (r + p - c_i)/(r + p - v)ϕi​=(r+p−ci​)/(r+p−v);
  3. 0<ϕi<10 < \phi_i < 10<ϕi​<1 for i=1,2i = 1, 2i=1,2, that is, v<ci<r+pv < c_i < r + pv<ci​<r+p;
  4. each capacity-loss distribution Gi(⋅)=Gi(⋅,ai)G_i(\cdot) = G_i(\cdot, a_i)Gi​(⋅)=Gi​(⋅,ai​) is strictly increasing on its support [0,bi][0, b_i][0,bi​], with bi≤Kib_i \le K_ibi​≤Ki​, so that Gi(Ki)=1G_i(K_i) = 1Gi​(Ki​)=1;
  5. ϕ1G1(K1)≥ϕ2G2(K2)\phi_1 G_1(K_1) \ge \phi_2 G_2(K_2)ϕ1​G1​(K1​)≥ϕ2​G2​(K2​) (a labelling of the suppliers).

Write A1=G1−1(ϕ2)A_1 = G_1^{-1}(\phi_2)A1​=G1−1​(ϕ2​), A2=G2−1(ϕ1)A_2 = G_2^{-1}(\phi_1)A2​=G2−1​(ϕ1​), B=G1−1(ϕ2ϕ1G2(K2))B = G_1^{-1}\big(\tfrac{\phi_2}{\phi_1} G_2(K_2)\big)B=G1−1​(ϕ1​ϕ2​​G2​(K2​)) and S=K1+K2S = K_1 + K_2S=K1​+K2​. Then an optimal procurement vector q∗=(q1∗,q2∗)q^* = (q_1^*, q_2^*)q∗=(q1∗​,q2∗​), maximizing Π2(⋅ ;a)\Pi_2(\cdot\,; a)Π2​(⋅;a) over all q≥0q \ge 0q≥0, is given by

Ω1: 0≤x≤K1−Bq∗=(x, 0),Ω2: K1−B<x≤S−(A1+A2)q∗=(x−q2∗, q2∗),  ϕ1G1(K1−(x−q2∗))=ϕ2G2(K2−q2∗),Ω3: S−(A1+A2)<x≤S−max⁡(A1,A2)q∗=(x−(K2−A2), x−(K1−A1)),Ω4: S−max⁡(A1,A2)<x≤S−min⁡(A1,A2)q∗={(x−(K2−A2), K2)if A1≥A2,(K1, x−(K1−A1))if A1<A2,Ω5∪Ω6: x>S−min⁡(A1,A2)q∗=(K1, K2).\begin{aligned} &\Omega_1:\ 0 \le x \le K_1 - B && q^* = (x,\ 0),\\ &\Omega_2:\ K_1 - B < x \le S - (A_1 + A_2) && q^* = (x - q_2^*,\ q_2^*),\ \ \phi_1 G_1(K_1 - (x - q_2^*)) = \phi_2 G_2(K_2 - q_2^*),\\ &\Omega_3:\ S - (A_1 + A_2) < x \le S - \max(A_1, A_2) && q^* = (x - (K_2 - A_2),\ x - (K_1 - A_1)),\\ &\Omega_4:\ S - \max(A_1, A_2) < x \le S - \min(A_1, A_2) && q^* = \begin{cases}(x - (K_2 - A_2),\ K_2) & \text{if } A_1 \ge A_2,\\ (K_1,\ x - (K_1 - A_1)) & \text{if } A_1 < A_2,\end{cases}\\ &\Omega_5 \cup \Omega_6:\ x > S - \min(A_1, A_2) && q^* = (K_1,\ K_2). \end{aligned}​Ω1​: 0≤x≤K1​−BΩ2​: K1​−B<x≤S−(A1​+A2​)Ω3​: S−(A1​+A2​)<x≤S−max(A1​,A2​)Ω4​: S−max(A1​,A2​)<x≤S−min(A1​,A2​)Ω5​∪Ω6​: x>S−min(A1​,A2​)​​q∗=(x, 0),q∗=(x−q2∗​, q2∗​),  ϕ1​G1​(K1​−(x−q2∗​))=ϕ2​G2​(K2​−q2∗​),q∗=(x−(K2​−A2​), x−(K1​−A1​)),q∗={(x−(K2​−A2​), K2​)(K1​, x−(K1​−A1​))​if A1​≥A2​,if A1​<A2​,​q∗=(K1​, K2​).​

In Ω2\Omega_2Ω2​ the claim is that some q2∗∈[0,x]q_2^* \in [0, x]q2∗​∈[0,x] solves the displayed equation and makes (x−q2∗,q2∗)(x - q_2^*, q_2^*)(x−q2∗​,q2∗​) optimal.

The regions trace the firm's strategy as demand grows: single sourcing from the preferred supplier when capacity is ample (Ω1\Omega_1Ω1​), dual sourcing with total order equal to demand (Ω2\Omega_2Ω2​), dual sourcing with over-ordering, the quantity hedge (Ω3\Omega_3Ω3​, Ω4\Omega_4Ω4​, Ω5\Omega_5Ω5​), and finally ordering both full capacities (Ω6\Omega_6Ω6​, x>Sx > Sx>S).

Formalization Note. Three corrections to the printed theorem. (i) The printed bounds of Ω3,Ω4,Ω5\Omega_3, \Omega_4, \Omega_5Ω3​,Ω4​,Ω5​ use min⁡\minmin where max⁡\maxmax belongs and vice versa; as printed, Ω4\Omega_4Ω4​ is empty and Ω3\Omega_3Ω3​ overlaps Ω5\Omega_5Ω5​, and the printed Ω3\Omega_3Ω3​ formula can order more than K1K_1K1​ from supplier 1 (e.g. uniform losses on [0,60][0,60][0,60], [0,80][0,80][0,80], K=(100,100)K = (100,100)K=(100,100), ϕ=(0.9,0.85)\phi = (0.9, 0.85)ϕ=(0.9,0.85), x=140x = 140x=140 gives q1∗=112q_1^* = 112q1∗​=112). The bounds above are the corrected ones. (ii) Hypothesis 4 is added: without Gi(Ki)=1G_i(K_i) = 1Gi​(Ki​)=1 the Ω1\Omega_1Ω1​ claim is false (exponential losses with G(K)≈0.865G(K) \approx 0.865G(K)≈0.865 give a counterexample), and strict increase makes Gi−1G_i^{-1}Gi−1​ and the Ω2\Omega_2Ω2​ equation well posed; continuity of GiG_iGi​ is the paper's own assumption. (iii) Hypothesis 3 is added; it makes Gi−1(ϕj)G_i^{-1}(\phi_j)Gi−1​(ϕj​) and G1−1(ϕ2/ϕ1)G_1^{-1}(\phi_2/\phi_1)G1−1​(ϕ2​/ϕ1​) evaluate inside (0,1)(0, 1)(0,1). Gi−1G_i^{-1}Gi−1​ is the generalized inverse inf⁡{t≥0:Gi(t)≥u}\inf\{t \ge 0 : G_i(t) \ge u\}inf{t≥0:Gi​(t)≥u}, the ordinary inverse under hypothesis 4. Deterministic demand is the point mass δx\delta_xδx​. Optimal vectors need not be unique (in Ω6\Omega_6Ω6​ any q≥(K1,K2)q \ge (K_1, K_2)q≥(K1​,K2​) is optimal), so the theorem asserts that the displayed vector is an optimal one. In the Lean statement supplier 1 is index 0 and supplier 2 is index 1.

Preamble
import Mathlib
import Definitions.Def_MitigateSupplyRisk_DualSourcing_Model
import Definitions.Def_MitigateSupplyRisk_DualSourcing_Regions

open MeasureTheory ProbabilityTheory
Formal statement
namespace MitigateSupplyRisk.DualSourcing

/-- Theorem 2 (Wang, Gilland, Tomlin 2010, pp. 494–495), with the region bounds of `Ω₃, Ω₄, Ω₅`
corrected (the printed `min`/`max` are swapped) and the hypotheses the printed statement needs.
Demand is deterministic (`μ = δ_x`, `x ≥ 0`), `η = 0`, `0 < φ_i < 1`, each capacity-loss CDF
`G_i(·, a_i)` is strictly increasing on its support `[0, b_i]` with `b_i ≤ K_i` (so
`G_i(K_i, a_i) = 1`), and `φ₁ G₁(K₁) ≥ φ₂ G₂(K₂)`. With `A₁ = G₁^{-1}(φ₂)`, `A₂ = G₂^{-1}(φ₁)`,
`B = G₁^{-1}((φ₂/φ₁) G₂(K₂))` and `S = K₁ + K₂`, an optimal procurement vector is
* `Ω₁` (`x ≤ K₁ − B`): `(x, 0)`;
* `Ω₂` (`K₁ − B < x ≤ S − (A₁ + A₂)`): `(x − q₂, q₂)` for some `q₂ ∈ [0, x]` solving
  `φ₁ G₁(K₁ − (x − q₂)) = φ₂ G₂(K₂ − q₂)`;
* `Ω₃` (`S − (A₁ + A₂) < x ≤ S − max(A₁, A₂)`): `(x − (K₂ − A₂), x − (K₁ − A₁))`;
* `Ω₄` (`S − max(A₁, A₂) < x ≤ S − min(A₁, A₂)`): `(x − (K₂ − A₂), K₂)` if `A₁ ≥ A₂`, and
  `(K₁, x − (K₁ − A₁))` if `A₁ < A₂`;
* `Ω₅ ∪ Ω₆` (`x > S − min(A₁, A₂)`): `(K₁, K₂)`.
Supplier 1 of the paper is index `0`, supplier 2 is index `1`. -/
theorem theorem_2 (M : Model) (a : Fin 2 → ℝ) (x : ℝ) (hx : 0 ≤ x)
    (hη : ∀ i, M.η i = 0)
    (hφpos : ∀ i, 0 < M.phi i) (hφlt : ∀ i, M.phi i < 1)
    (hsupp : ∀ i, ∃ b : ℝ, 0 < b ∧ b ≤ M.K i ∧ M.G i b (a i) = 1 ∧
      StrictMonoOn (fun t => M.G i t (a i)) (Set.Icc 0 b))
    (hord : M.phi 1 * M.G 1 (M.K 1) (a 1) ≤ M.phi 0 * M.G 0 (M.K 0) (a 0)) :
    -- Ω₁
    (x ≤ M.K 0 - M.B a →
      M.IsOptimal (Measure.dirac x) a ![x, 0]) ∧
    -- Ω₂
    (M.K 0 - M.B a < x ∧ x ≤ M.K 0 + M.K 1 - (M.A1 a + M.A2 a) →
      ∃ q₂ : ℝ, 0 ≤ q₂ ∧ q₂ ≤ x ∧
        M.phi 0 * M.G 0 (M.K 0 - (x - q₂)) (a 0) = M.phi 1 * M.G 1 (M.K 1 - q₂) (a 1) ∧
        M.IsOptimal (Measure.dirac x) a ![x - q₂, q₂]) ∧
    -- Ω₃ (corrected upper bound)
    (M.K 0 + M.K 1 - (M.A1 a + M.A2 a) < x ∧ x ≤ M.K 0 + M.K 1 - max (M.A1 a) (M.A2 a) →
      M.IsOptimal (Measure.dirac x) a ![x - (M.K 1 - M.A2 a), x - (M.K 0 - M.A1 a)]) ∧
    -- Ω₄ (corrected bounds)
    (M.K 0 + M.K 1 - max (M.A1 a) (M.A2 a) < x ∧ x ≤ M.K 0 + M.K 1 - min (M.A1 a) (M.A2 a) →
      (M.A2 a ≤ M.A1 a → M.IsOptimal (Measure.dirac x) a ![x - (M.K 1 - M.A2 a), M.K 1]) ∧
      (M.A1 a < M.A2 a → M.IsOptimal (Measure.dirac x) a ![M.K 0, x - (M.K 0 - M.A1 a)])) ∧
    -- Ω₅ ∪ Ω₆ (corrected lower bound of Ω₅)
    ((M.K 0 + M.K 1 - min (M.A1 a) (M.A2 a) < x ∧ x ≤ M.K 0 + M.K 1) ∨ M.K 0 + M.K 1 < x →
      M.IsOptimal (Measure.dirac x) a ![M.K 0, M.K 1]) := by sorry

end MitigateSupplyRisk.DualSourcing
Source
Wang, Gilland, Tomlin, Mitigating Supply Risk: Dual Sourcing or Process Improvement?, Manufacturing & Service Operations Management 12(3):489–510 (2010), pp. 494–495 (PDF pp. 6–7), Theorem 2 (with the preamble on p. 494)
Human review
  • Endorsed by Shuze Chen · Oct 7, 2026

    Confirmed by the moderator at approval.

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