Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Proposition 3 — rationing is optimal if Uˉ≥Uc\bar U\ge U_cUˉ≥Uc​; otherwise serve the whole market at the low price

Proved
LiuVanRyzin.optimal_stocking

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

p2o-batch-p100bp2o-gran-per-chapterp2o-plan-paperp2o-v1rationingrevenue-managementstrategic-customers

A monopolist sells to N>0N>0N>0 customers whose valuations are uniform on [0,Uˉ][0,\bar U][0,Uˉ], at prices p1p_1p1​ in period 1 and p2p_2p2​ in period 2 with α<p2<p1\alpha<p_2<p_1α<p2​<p1​, where α\alphaα is the unit cost. Customers have power utility u(x)=xγu(x)=x^\gammau(x)=xγ, 0<γ<10<\gamma<10<γ<1. Let v0>p1v^0>p_1v0>p1​ be the solution of the first-order condition (7),

(v0−p1v0−p2)γ(1+γ(p1−p2)v0−p1)=p1−αp2−α,\left(\frac{v^0-p_1}{v^0-p_2}\right)^\gamma\left(1+\frac{\gamma(p_1-p_2)}{v^0-p_1}\right)=\frac{p_1-\alpha}{p_2-\alpha},(v0−p2​v0−p1​​)γ(1+v0−p1​γ(p1​−p2​)​)=p2​−αp1​−α​,

and let

Uc=(p2+γ(p1−α))v0−p2(p1+γ(p2−α))v0−p1+γ(p1−p2).U_c=\frac{(p_2+\gamma(p_1-\alpha))v^0-p_2(p_1+\gamma(p_2-\alpha))}{v^0-p_1+\gamma(p_1-p_2)}.Uc​=v0−p1​+γ(p1​−p2​)(p2​+γ(p1​−α))v0−p2​(p1​+γ(p2​−α))​.

Let Π(v)\Pi(v)Π(v) be the segmented-market profit (6) and ΠNS=(p2−α)NUˉ(Uˉ−p2)\Pi^{NS}=(p_2-\alpha)\frac{N}{\bar U}(\bar U-p_2)ΠNS=(p2​−α)UˉN​(Uˉ−p2​) the profit of serving the entire market at the low price. Then:

  1. If Uˉ≥Uc\bar U\ge U_cUˉ≥Uc​, inducing segmentation by rationing is optimal: v0∈[p1,Uˉ]v^0\in[p_1,\bar U]v0∈[p1​,Uˉ], v0v^0v0 maximizes Π\PiΠ over [p1,Uˉ][p_1,\bar U][p1​,Uˉ], and Π(v0)≥ΠNS\Pi(v^0)\ge\Pi^{NS}Π(v0)≥ΠNS. The optimal solution is v∗=v0v^*=v^0v∗=v0, fill rate q∗=q0=((v0−p1)/(v0−p2))γq^*=q^0=((v^0-p_1)/(v^0-p_2))^\gammaq∗=q0=((v0−p1​)/(v0−p2​))γ and stocking quantity C∗=C0=NUˉ(Uˉ−v0+(v0−p2)q0)C^*=C^0=\frac N{\bar U}(\bar U-v^0+(v^0-p_2)q^0)C∗=C0=UˉN​(Uˉ−v0+(v0−p2​)q0).
  2. If Uˉ<Uc\bar U<U_cUˉ<Uc​, serving the entire market at the low price is optimal: Π(v)≤ΠNS\Pi(v)\le\Pi^{NS}Π(v)≤ΠNS for every v∈[p1,Uˉ]v\in[p_1,\bar U]v∈[p1​,Uˉ]. The optimal solution is v∗=Uˉv^*=\bar Uv∗=Uˉ, q∗=1q^*=1q∗=1, C∗=NUˉ(Uˉ−p2)C^*=\frac N{\bar U}(\bar U-p_2)C∗=UˉN​(Uˉ−p2​).

Here "optimal" is the paper's: the firm's optimal profit is the larger of the segmented optimum Π0=max⁡p1≤v≤UˉΠ(v)\Pi^0=\max_{p_1\le v\le\bar U}\Pi(v)Π0=maxp1​≤v≤Uˉ​Π(v) and ΠNS\Pi^{NS}ΠNS. The theorem says rationing pays exactly when there are enough high-value customers.

Formalization Note The paper uses 0≤p2<Uˉ0\le p_2<\bar U0≤p2​<Uˉ without stating it: the uniform law gives NFˉ(p2)=NUˉ(Uˉ−p2)N\bar F(p_2)=\frac N{\bar U}(\bar U-p_2)NFˉ(p2​)=UˉN​(Uˉ−p2​) only for p2∈[0,Uˉ]p_2\in[0,\bar U]p2​∈[0,Uˉ], and it makes Uˉ>0\bar U>0Uˉ>0. The optimal q0q^0q0 and C0C^0C0 are fillRate and capacity at v0v^0v0 (definition module), so they are not restated as conjuncts.

Preamble
import Mathlib
import Definitions.Def_LiuVanRyzin_PowerModel
Formal statement
namespace LiuVanRyzin

/-- Proposition 3 (Liu–van Ryzin 2008, p. 1122). Let `v⁰` be the root of (7) and `U_c` as in
(8). If `Ū ≥ U_c`, segmentation at `v⁰` is optimal: `v⁰` maximizes `Π` on `[p₁, Ū]` and
`Π(v⁰) ≥ Π^NS`. Otherwise serving the entire market at the low price is optimal:
`Π(v) ≤ Π^NS` for every `v ∈ [p₁, Ū]`. -/
theorem optimal_stocking (N Ubar p₁ p₂ α γ v₀ : ℝ) (hN : 0 < N) (hα : α < p₂)
    (hp : p₂ < p₁) (hγ0 : 0 < γ) (hγ1 : γ < 1) (hp₂ : 0 ≤ p₂) (hpU : p₂ < Ubar)
    (hv₀ : p₁ < v₀) (hroot : focLHS p₁ p₂ α γ v₀ = 0) :
    (criticalU p₁ p₂ α γ v₀ ≤ Ubar →
        v₀ ∈ Set.Icc p₁ Ubar ∧
          IsMaxOn (segProfit N Ubar p₁ p₂ α γ) (Set.Icc p₁ Ubar) v₀ ∧
          lowPriceProfit N Ubar p₂ α ≤ segProfit N Ubar p₁ p₂ α γ v₀) ∧
      (Ubar < criticalU p₁ p₂ α γ v₀ →
        ∀ v ∈ Set.Icc p₁ Ubar, segProfit N Ubar p₁ p₂ α γ v ≤ lowPriceProfit N Ubar p₂ α) := by sorry

end LiuVanRyzin
Source
Liu, van Ryzin, Strategic Capacity Rationing to Induce Early Purchases, Management Science 54(6):1115–1131 (2008), p. 1122, Proposition 3 (with Eqs. (6)–(8); optimality as max(Π⁰, Π^NS), p. 1121)
Read-back

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

This statement concerns seven real numbers N,Uˉ,p1,p2,α,γ,v0∈RN, \bar U, p_1, p_2, \alpha, \gamma, v_0 \in \mathbb{R}N,Uˉ,p1​,p2​,α,γ,v0​∈R. It uses four functions imported from the module Definitions.Def_LiuVanRyzin_PowerModel. Their definitions are not shown in the code provided, so this read-back treats them only by name and by the arguments they take:

  • F(p1,p2,α,γ,v)F(p_1, p_2, \alpha, \gamma, v)F(p1​,p2​,α,γ,v) — focLHS, a real-valued expression in p1,p2,α,γp_1, p_2, \alpha, \gammap1​,p2​,α,γ and a point vvv;
  • Uc(p1,p2,α,γ,v)U_c(p_1, p_2, \alpha, \gamma, v)Uc​(p1​,p2​,α,γ,v) — criticalU, a real-valued expression in the same arguments;
  • Πseg(v)=ΠsegN,Uˉ,p1,p2,α,γ(v)\Pi_{\mathrm{seg}}(v) = \Pi_{\mathrm{seg}}^{N, \bar U, p_1, p_2, \alpha, \gamma}(v)Πseg​(v)=ΠsegN,Uˉ,p1​,p2​,α,γ​(v) — segProfit, a real function of vvv that depends on all six parameters;
  • Πlow=Πlow(N,Uˉ,p2,α)\Pi_{\mathrm{low}} = \Pi_{\mathrm{low}}(N, \bar U, p_2, \alpha)Πlow​=Πlow​(N,Uˉ,p2​,α) — lowPriceProfit, a real number that depends only on N,Uˉ,p2,αN, \bar U, p_2, \alphaN,Uˉ,p2​,α (it does not take p1p_1p1​ or γ\gammaγ).

The theorem assumes the following hypotheses:

0<N,α<p2,0≤p2<p1,0<γ<1,p2<Uˉ,p1<v0,F(p1,p2,α,γ,v0)=0.0 < N, \qquad \alpha < p_2, \qquad 0 \le p_2 < p_1, \qquad 0 < \gamma < 1, \qquad p_2 < \bar U, \qquad p_1 < v_0, \qquad F(p_1, p_2, \alpha, \gamma, v_0) = 0.0<N,α<p2​,0≤p2​<p1​,0<γ<1,p2​<Uˉ,p1​<v0​,F(p1​,p2​,α,γ,v0​)=0.

There is no lower bound on α\alphaα, so it may be negative. There is also no hypothesis relating Uˉ\bar UUˉ to p1p_1p1​ or to v0v_0v0​.

Under these hypotheses, the theorem asserts both of the following. Write Uc:=Uc(p1,p2,α,γ,v0)U_c := U_c(p_1, p_2, \alpha, \gamma, v_0)Uc​:=Uc​(p1​,p2​,α,γ,v0​).

  1. If Uc≤UˉU_c \le \bar UUc​≤Uˉ, then all three of these hold:
    • v0∈[p1,Uˉ]v_0 \in [p_1, \bar U]v0​∈[p1​,Uˉ]. Since p1<v0p_1 < v_0p1​<v0​ is assumed, the new content is v0≤Uˉv_0 \le \bar Uv0​≤Uˉ.
    • v0v_0v0​ is a maximizer of Πseg\Pi_{\mathrm{seg}}Πseg​ on the closed interval [p1,Uˉ][p_1, \bar U][p1​,Uˉ]:
Πseg(v)≤Πseg(v0)for every v with p1≤v≤Uˉ.\Pi_{\mathrm{seg}}(v) \le \Pi_{\mathrm{seg}}(v_0) \quad \text{for every } v \text{ with } p_1 \le v \le \bar U.Πseg​(v)≤Πseg​(v0​)for every v with p1​≤v≤Uˉ.
  • Πlow(N,Uˉ,p2,α)≤Πseg(v0)\Pi_{\mathrm{low}}(N, \bar U, p_2, \alpha) \le \Pi_{\mathrm{seg}}(v_0)Πlow​(N,Uˉ,p2​,α)≤Πseg​(v0​).
  1. If Uˉ<Uc\bar U < U_cUˉ<Uc​, then
Πseg(v)≤Πlow(N,Uˉ,p2,α)for every v with p1≤v≤Uˉ.\Pi_{\mathrm{seg}}(v) \le \Pi_{\mathrm{low}}(N, \bar U, p_2, \alpha) \quad \text{for every } v \text{ with } p_1 \le v \le \bar U.Πseg​(v)≤Πlow​(N,Uˉ,p2​,α)for every v with p1​≤v≤Uˉ.

The two cases are complementary, since exactly one of Uc≤UˉU_c \le \bar UUc​≤Uˉ and Uˉ<Uc\bar U < U_cUˉ<Uc​ holds. The theorem does not assert that a v0v_0v0​ satisfying F=0F = 0F=0 exists or is unique. It is a statement about any v0>p1v_0 > p_1v0​>p1​ that happens to be a root. Because FFF is not visible here, this read-back cannot determine whether the root hypothesis can be satisfied together with the other hypotheses. If it cannot, the theorem is vacuous.

Degenerate cases. The hypotheses force N>0N > 0N>0, γ∈(0,1)\gamma \in (0,1)γ∈(0,1) and 0≤p2<p1<v00 \le p_2 < p_1 < v_00≤p2​<p1​<v0​, so none of these can be zero or collapse. However, Uˉ\bar UUˉ is only required to exceed p2p_2p2​, which permits p2<Uˉ<p1p_2 < \bar U < p_1p2​<Uˉ<p1​ or p1≤Uˉ<v0p_1 \le \bar U < v_0p1​≤Uˉ<v0​.

  • When Uˉ<p1\bar U < p_1Uˉ<p1​, the interval [p1,Uˉ][p_1, \bar U][p1​,Uˉ] is empty. Part 2 then holds vacuously, as does the maximizer clause of part 1. But the membership clause v0∈[p1,Uˉ]v_0 \in [p_1, \bar U]v0​∈[p1​,Uˉ] would be false. So in that situation the theorem in effect asserts that Uc≤UˉU_c \le \bar UUc​≤Uˉ cannot occur.
  • More generally, part 1 asserts, as a conclusion rather than an assumption, that Uc≤UˉU_c \le \bar UUc​≤Uˉ implies v0≤Uˉv_0 \le \bar Uv0​≤Uˉ.
  • When Uˉ=p1\bar U = p_1Uˉ=p1​, the interval is the single point {p1}\{p_1\}{p1​}. Part 2 then compares only Πseg(p1)\Pi_{\mathrm{seg}}(p_1)Πseg​(p1​) with Πlow\Pi_{\mathrm{low}}Πlow​, and part 1 again requires v0≤p1v_0 \le p_1v0​≤p1​, which contradicts p1<v0p_1 < v_0p1​<v0​.
  • No division, natural-number subtraction, integral or supremum appears in the statement itself. Any such operations, and any default "junk" values they return (for instance a division by zero yielding 000), would sit inside the unseen definitions of FFF, UcU_cUc​, Πseg\Pi_{\mathrm{seg}}Πseg​ and Πlow\Pi_{\mathrm{low}}Πlow​. This read-back cannot say what those definitions produce at such arguments.
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