Weak duality for the finite covering/packing pair
ProvedPrimalDualOnline.LP.weak_dualityTheorem 2.1 of the source. For every primal-feasible and every dual-feasible ,
Any feasible dual solution is therefore a certified lower bound on the cost of any feasible primal solution. No sign condition is placed on the data , or ; the nonnegativity that the argument uses is that of the variables and , which is part of feasibility. The proof is the standard two-step chain through the doubly-weighted sum , which the three mechanical milestones of this mission isolate.
import Definitions.Def_PrimalDualOnline_FiniteLP import Mathlib.Tactic
open PrimalDualOnline.LP
theorem PrimalDualOnline.LP.weak_duality
{I J : Type*} [Fintype I] [Fintype J]
(A : I → J → ℝ) (b : J → ℝ) (c : I → ℝ) (x : I → ℝ) (y : J → ℝ)
(hp : PrimalFeasible A b x) (hd : DualFeasible A c y) :
dualObjective b y ≤ primalObjective c x := by sorryRead-back
What the Lean code literally says, in plain math · claude-opus-5
Setting common to all three statements
All three statements are parameterized by two types and (arbitrary, in arbitrary universes) each carrying a finiteness assumption (a Fintype instance). Finiteness is what makes the sums below well-defined; nothing asserts that or is nonempty, so both are allowed to be empty, in which case sums indexed by them are .
The data are four real-valued functions and one real matrix, all otherwise arbitrary (no sign, boundedness, or nondegeneracy assumptions on any of them):
- , written ;
- , written ;
- , written ;
- , written ;
- , written .
Two quantities are named by the bundle's own definitions, and are expanded inline throughout:
Each of the three declarations is stated with its proof omitted, so each asserts its conclusion without supplying any justification.
Statement 1 — weak_duality
For every pair of finite index types , every real matrix , and every , , , , assume the two hypotheses
- (primal feasibility of ) both of
- (dual feasibility of ) both of
Then the conclusion is that the dual objective is at most the primal objective:
Note on the directions as written: the primal constraints are lower bounds (, one per column index ), the dual constraints are upper bounds (, one per row index ), and both and are required componentwise nonnegative. The inequality asserted runs from the - sum up to the - sum, with non-strict .
Degenerate readings. If is empty, the primal objective is and the dual-feasibility constraint is vacuous, while primal feasibility reduces to for all ('s nonnegativity clause is also vacuous); the conclusion reduces to . If is empty, the dual objective is and the primal constraint is vacuous, while dual feasibility reduces to for all ; the conclusion reduces to . If both are empty the conclusion is . No hypothesis here is unsatisfiable in general: , satisfy both feasibility conditions whenever and for all indices.
Confirmed by the mission captain (proposal self-audit).