PO.ID.Partial.LP
The linear-programming representation of bound computations over finite outcome spaces.
ConicDuality 9 core · 2 supporting This file develops the conic linear-programming duality backbone for partial identification bounds. ★ farkas★ strong_duality_primal_attained★ strong_duality_zero_gap
Conic Duality
This file develops the conic linear-programming duality backbone for partial identification bounds. It treats sharp bounds as optimal values of linear programs over a cone in real Hilbert spaces and proves weak duality, a Farkas feasibility alternative, primal attainment under a closedness qualification, and zero duality gap under the same qualification.
The main structure ConicProgram packages the cone K, constraint operator
A, right-hand side b, and objective direction c. The predicates
PrimalFeasible and DualFeasible define the primal and dual feasible sets,
while primalValue and dualValue record the corresponding optimal values.
The theorem weak_duality gives the pointwise inequality, and
dualValue_le_primalValue lifts it to values.
The theorem farkas restates conic separation as a feasibility alternative.
The set augmentedImage is the closedness constraint qualification used by
strong_duality_primal_attained and strong_duality_zero_gap, which provide
primal attainment and no duality gap for feasible bounded-below programs.
The Hilbert-space formulation covers infinite-dimensional function spaces used by proxy and bridge problems. Measure-cone weak-star duality is intentionally left outside this module; the module note at the end explains the missing signed-measure and cone infrastructure.
Primal data of a conic linear program over real Hilbert spaces: minimize ⟪c, x⟫ subject to A x = b and x ∈ K.
Definition (Lean source)
A point is primal feasible when it satisfies the equality constraint and lies in the cone.
Definition (Lean source)
A dual multiplier is dual feasible when the reduced cost c - Aᵀ y lies in the dual cone K⋆ = innerDual K.
Definition (Lean source)
The primal optimal value inf { ⟪c, x⟫ : x primal feasible }.
Definition (Lean source)
The dual optimal value sup { ⟪b, y⟫ : y dual feasible }.
Definition (Lean source)
Farkas alternative / feasibility engine. For a target point b, b lies in the closed image cone A(K) if and only if every dual direction y whose pullback Aᵀ y lies in the dual cone of K pairs nonnegatively with b.
Formal statement
The augmented image cone { (A x, ⟪c, x⟫) : x ∈ K } in F × ℝ. Its closedness is the constraint qualification for primal attainment, and the geometry (a boundary point (b, primalValue)) is where the dual certificate is read off.
Strong duality I — primal attainment (closedness CQ). For a conic program that is primal feasible and whose feasible objective values are bounded below, if the augmented image cone {(Ax, ⟪c,x⟫) : x ∈ K} is closed — the constraint qualification separating attained optima from mere infima — then the primal optimum is attained: some primal-feasible point x achieves the objective value ⟪c,x⟫ = primalValue exactly. This is the "there is an extremal data-generating distribution" half of sharpness.
Formal statement
Proof (Lean source)
Strong duality II — zero gap (closedness CQ). For a conic program that is primal feasible and whose feasible objective values are bounded below, if the augmented image cone is closed — the same constraint qualification as primal attainment — then there is no duality gap: the primal optimal value equals the dual optimal value, primalValue = dualValue.
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
weak_dualitytheorem — Weak duality (pointwise). Any dual-feasible objective value lower-bounds any primal-feasible objective value.hypothesesx :Ey :Fhx :P.PrimalFeasible xhy :P.DualFeasible yconclusion⟪P.b, y⟫ ≤ ⟪P.c, x⟫Proof (Lean source)
theorem weak_duality {x : E} {y : F} (hx : P.PrimalFeasible x) (hy : P.DualFeasible y) : ⟪P.b, y⟫ ≤ ⟪P.c, x⟫ := by -- Dual feasibility says `0 ≤ ⟪x, c - Aᵀ y⟫` for `x ∈ K`. have h0 : 0 ≤ ⟪x, P.c - (adjoint P.A) y⟫ := ProperCone.mem_innerDual.mp hy hx.2 have e1 : ⟪x, P.c - (adjoint P.A) y⟫ = ⟪x, P.c⟫ - ⟪P.A x, y⟫ := by rw [inner_sub_right, ContinuousLinearMap.adjoint_inner_right] rw [e1, hx.1] at h0 -- h0 : 0 ≤ ⟪x, P.c⟫ - ⟪P.b, y⟫ have ec := real_inner_comm x P.c linarith -
dualValue_le_primalValuetheorem — Weak duality (value form). When both programs are feasible, dualValue ≤ primalValue. (Boundedness is not needed: the pointwise bound exhibits primalValue as an explicit upper bound for the dual values.)hypotheseshP :{x | P.PrimalFeasible x}.NonemptyhD :{y | P.DualFeasible y}.NonemptyconclusionP.dualValue ≤ P.primalValueProof (Lean source)
theorem dualValue_le_primalValue (hP : {x | P.PrimalFeasible x}.Nonempty) (hD : {y | P.DualFeasible y}.Nonempty) : P.dualValue ≤ P.primalValue := by rw [dualValue, primalValue] refine csSup_le (hD.image _) ?_ rintro _ ⟨y, hy, rfl⟩ refine le_csInf (hP.image _) ?_ rintro _ ⟨x, hx, rfl⟩ exact P.weak_duality hx hy