Approximate complementary slackness: -slack feasible pairs are -close
ProvedPrimalDualOnline.LP.approx_complementary_slacknessTheorem 2.3 of the source. Let be primal feasible and dual feasible, and let . Suppose the pair satisfies approximate complementary slackness: whenever the -th dual constraint is tight up to , and whenever the -th primal constraint is tight up to . Then
Together with weak duality this sandwiches the primal cost between the dual value and times it, so is within of primal optimal whenever the dual optimum is attained. This is the result that converts a local, per-coordinate invariant maintained by an online algorithm into a global competitive ratio, and it is the goal of the mission.
The hypotheses are the source's, including the two-sided form of each slackness condition and . A companion item records the minimal hypotheses under which the same conclusion holds.
import Definitions.Def_PrimalDualOnline_FiniteLP import Mathlib.Tactic
open PrimalDualOnline.LP
theorem PrimalDualOnline.LP.approx_complementary_slackness
{I J : Type*} [Fintype I] [Fintype J]
(A : I → J → ℝ) (b : J → ℝ) (c : I → ℝ) (x : I → ℝ) (y : J → ℝ)
(α β : ℝ) (hα : 1 ≤ α) (hβ : 1 ≤ β)
(hp : PrimalFeasible A b x) (hd : DualFeasible A c y)
(hpcs : PrimalApproxCS α A c x y) (hdcs : DualApproxCS β A b x y) :
primalObjective c x ≤ α * β * dualObjective b y := 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 2 — approx_complementary_slackness
For every pair of finite index types , every real matrix and every as above, and additionally two real numbers , assume the six hypotheses
- ;
- ;
- (primal feasibility of ) , and ;
- (dual feasibility of ) , and ;
- (-approximate primal complementary slackness) for every with (strictly), both
- (-approximate dual complementary slackness) for every with (strictly), both
Then the conclusion is
i.e. the primal objective is at most the product times the dual objective (the product is formed first and then multiplied by the dual objective).
Points of literal detail. The two complementary-slackness hypotheses are conditioned on strict positivity: indices with and indices with are entirely unconstrained by them (and by nonnegativity, , cannot occur). Hypothesis 5 is stated with a division, ; since , the divisor is nonzero, so no division-by-zero convention is in play. The upper bound in hypothesis 5, , is already asserted for all by dual feasibility (hypothesis 4), and the lower bound in hypothesis 6, , is already asserted for all by primal feasibility (hypothesis 3); the two clauses therefore repeat, on the positive coordinates, conditions the feasibility hypotheses impose everywhere.
Degenerate readings. At the primal clause reads , i.e. exact equality for every with ; at the dual clause reads , i.e. for every with . At the conclusion reads , the reverse inequality of Statement 1's conclusion. If is empty, the primal objective is , hypotheses 4-first-clause and 5 are vacuous, primal feasibility reduces to for all , and the conclusion reduces to . If is empty, the dual objective is and the conclusion reduces to ; in that case hypothesis 5 says, for each with , that and , which together with forces . Nothing rules out or , so the products and may be negative and the scaled bounds are then weaker, not stronger, than the unscaled ones.
Confirmed by the mission captain (proposal self-audit).