PO.ID.Partial.LP
The linear-programming representation of bound computations over finite outcome spaces.
ConicDuality 9 core · 2 supporting This file develops general conic linear-programming duality over real Hilbert spaces. ★ farkas★ strong_duality_primal_attained★ strong_duality_zero_gap
Conic Duality
This file develops general conic linear-programming duality over real Hilbert spaces. It 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 declarations have no causal or partial-identification hypotheses and no consumer in this subtree. 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.
A conic linear program on real Hilbert decision and constraint spaces stores a proper constraint cone, a continuous linear constraint operator, its right-hand side, and an objective direction.
Definition (Lean source)
Primal feasibility for a conic program on real Hilbert decision and constraint spaces means that a candidate decision vector satisfies the linear equality constraint and belongs to the constraint cone.
Definition (Lean source)
Dual feasibility for a conic program on real Hilbert decision and constraint spaces means that a candidate dual multiplier leaves a reduced cost in the dual constraint cone.
Definition (Lean source)
The primal optimal value of a conic program on real Hilbert decision and constraint spaces is the infimum of its objective over all primal-feasible decision vectors.
Definition (Lean source)
The dual optimal value of a conic program on real Hilbert decision and constraint spaces is the supremum of the pairing between its right-hand side and all dual-feasible multipliers.
Definition (Lean source)
Farkas alternative. For a conic program on real Hilbert decision and constraint spaces, a target point lies in the closed image cone exactly when it pairs nonnegatively with every dual direction whose pullback lies in the dual constraint cone.
Formal statement
The augmented image of a conic program on real Hilbert decision and constraint spaces pairs each feasible cone vector's constraint image with its objective value.
Definition (Lean source)
Strong duality I — primal attainment. For a conic program on real Hilbert decision and constraint spaces, nonempty primal feasibility, a lower bound on feasible objective values, and closedness of the augmented image ensure that a primal-feasible point attains the primal optimal value.
Formal statement
Proof (Lean source)
Strong duality II — zero gap. For a conic program on real Hilbert decision and constraint spaces, nonempty primal feasibility, a lower bound on feasible objective values, and closedness of the augmented image imply equality of the primal and dual optimal values.
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
weak_dualitytheorem — Weak duality (pointwise). For a conic program on real Hilbert decision and constraint spaces, a primal-feasible decision vector and a dual-feasible multiplier satisfy the dual objective value being no larger than the primal objective value.hypothesesE :sharedType u_1F :sharedType u_2x :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). For a conic program on real Hilbert decision and constraint spaces, nonempty primal feasibility and nonempty dual feasibility imply that the dual optimal value is no larger than the primal optimal value. Boundedness is unnecessary because pointwise weak duality gives an explicit bound.hypothesesE :sharedType u_1F :sharedType u_2hP :{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