EconCSLib.Math.LinearProgramming.StrongDuality #
Formalises LP strong duality [MFoGT, Section 2.8, Exercise 9] over any linearly ordered field.
For the standard-form LP pair
Primal P: min ⟨c, x⟩ subject to A x ≥ b and x ≥ 0 Dual D: max ⟨u, b⟩ subject to uᵀA ≤ c and u ≥ 0
if the primal is feasible and bounded below by d ∈ 𝕜, there exists a
dual-feasible u with ⟨u, b⟩ ≥ d. Combined with weak duality this yields
equal primal/dual optima.
Proof strategy #
Apply Farkas (#69) to the augmented system that merges A x ≥ b with
the non-negativity constraints x ≥ 0. The augmented row index is
I ⊕ Fin n: the original I rows are unchanged, and each Fin n row is
the unit row x_{j'} ≥ 0. The primal lower-bound hypothesis becomes a
Farkas primal bound on the augmented system, and the Farkas certificate
decomposes into (u, v) where u : I → 𝕜 is the dual feasible point and
v : Fin n → 𝕜 is the slack on the non-negativity constraints (with
uᵀA + v = c, hence uᵀA ≤ c).
Blueprint #
docs/knowledge/nodes/core/linear_programming.strong_duality.md
Standard-form primal / dual predicates #
Augmented system for strong duality #
To reduce LP strong duality to Farkas, augment the primal A x ≥ b with
unit rows x_{j'} ≥ 0. The augmented row index is I ⊕ Fin n.
Augmented row index for the LP-Farkas reduction.
Equations
- EconCSLib.LinearProgramming.DualAugRow I n = (I ⊕ Fin n)
Instances For
Augmented matrix combining A rows with x ≥ 0 unit rows.
Equations
- EconCSLib.LinearProgramming.dualAugA A (Sum.inl i) x✝ = A i x✝
- EconCSLib.LinearProgramming.dualAugA A (Sum.inr j') x✝ = if x✝ = j' then 1 else 0
Instances For
Augmented RHS.
Equations
- EconCSLib.LinearProgramming.dualAugB b (Sum.inl i) = b i
- EconCSLib.LinearProgramming.dualAugB b (Sum.inr val) = 0
Instances For
Augmented feasibility is the primal feasibility (with x ≥ 0).
Strong duality #
LP Strong Duality [MFoGT, Section 2.8, Exercise 9]: if the primal LP
min ⟨c, x⟩ s.t. A x ≥ b, x ≥ 0 is feasible and bounded below by d, then
there exists a dual-feasible u with ⟨u, b⟩ ≥ d.