The doubly-weighted sum is at most the primal objective
ProvedPrimalDualOnline.LP.weighted_le_primalOne of the two inequalities in the weak-duality chain. If is componentwise nonnegative and satisfies the dual constraints for every , then
Only these two hypotheses are needed: the dual nonnegativity and the primal constraints play no part. Stated separately so that the weak-duality proof reduces to composing this with the reindexing identity and its dual-side counterpart.
import Definitions.Def_PrimalDualOnline_FiniteLP import Mathlib.Tactic
open PrimalDualOnline.LP
theorem PrimalDualOnline.LP.weighted_le_primal
{I J : Type*} [Fintype I] [Fintype J]
(A : I → J → ℝ) (c : I → ℝ) (x : I → ℝ) (y : J → ℝ)
(hx : ∀ i : I, 0 ≤ x i) (hdc : ∀ i : I, ∑ j : J, A i j * y j ≤ c i) :
(∑ i : I, (∑ j : J, A i j * y j) * x i) ≤ primalObjective c x := by sorryRead-back
What the Lean code literally says, in plain math · claude-opus-5
Read-back 1 — weighted_le_primal
Data and binders. The statement quantifies over two types and (implicit arguments, living in arbitrary universes), each equipped with a finiteness structure (Fintype), i.e. each is a finite index set with a fixed enumeration. No further structure is assumed on or : no order, no nonemptiness, no decidable equality beyond what finiteness supplies. It then quantifies over four explicit pieces of real-valued data:
- , a real matrix whose rows are indexed by and whose columns are indexed by ; write for its entry;
- , one real number per row index;
- , one real number per row index;
- , one real number per column index.
Hypotheses. Two hypotheses are assumed, both universally quantified over their whole index type:
- — every component of is nonnegative.
- — for each row index , the sum over all column indices of is at most .
Conclusion. Unfolding the bundle's definition , the asserted conclusion is
On the left, the inner sum runs over , the second index of (a row of paired against ), and the outer sum runs over , the first index of ; the row-sum is multiplied on the right by . The inequality is non-strict and points in the direction: weighted quantity primal objective.
Sign conditions present and absent. Nonnegativity is assumed only for . There is no sign condition anywhere on , on the entries of , or on ; and may be negative, and may be negative provided hypothesis 2 still holds. Both stated hypotheses appear in the conclusion's data ( in hypothesis 1, and the row-sums and in hypothesis 2); neither is left dangling on data absent from the conclusion.
Degenerate cases. If is empty, both hypotheses are vacuously true and both sides of the conclusion are the empty sum , so the claim is . If is empty, every inner sum is , hypothesis 2 degenerates to for every , the left-hand side of the conclusion is , and the assertion becomes . If both are empty, the whole statement reduces to . Nothing rules out , , or .
Not asserted. The statement does not assert equality, nor a strict inequality. It does not assert that either side is nonnegative. It says nothing about any vector , about any dual objective, about feasibility of for constraints of the form or (no such hypothesis appears), or about optimality of or . It does not assert the converse inequality, nor that the left-hand side may be rewritten with the summation order reversed, nor any relation to the other two statements in this bundle. It is a single inequality between two finite sums, and nothing more. The declaration's body is a placeholder, so no proof is supplied by the code.
Confirmed by the mission captain (proposal self-audit).