Iteration bound for the primal path following algorithm
ProvedLinearOptimization.interior_point_path_following_iterations(Theorem 9.7, p. 426, GOAL — iteration bound for primal path following) Assume that the primal path following algorithm uses
where [formally ; see design_note], and starts with an initial primal and dual feasible solution , with , , that satisfies
Then, after
iterations, it finds a primal and dual feasible solution with duality gap
import Definitions.Def_LinearOptimization_PathFollowing open Matrix /-- **Bertsimas & Tsitsiklis, Theorem 9.7 (p. 426).** Primal path following reaches duality gap `≤ ε` — primal and dual feasibly — within `K = ⌈((√β + √n)/(√β − β)) log((s⁰)'x⁰(1+β)/(ε(1−β)))⌉` iterations, when run with `α = 1 − (√β − β)/(√β + √n)` from a `β`-close interior feasible start. -/
theorem LinearOptimization.interior_point_path_following_iterations {m n : ℕ}
(A : Matrix (Fin m) (Fin n) ℝ) (b : Fin m → ℝ) (c : Fin n → ℝ)
(hrank : LinearIndependent ℝ (fun i => A i))
(beta eps alpha : ℝ) (hbeta0 : 0 < beta) (hbeta1 : beta < 1)
(heps : 0 < eps)
(halpha : alpha = 1 -
(Real.sqrt beta - beta) / (Real.sqrt beta + Real.sqrt n))
(x : ℕ → Fin n → ℝ) (p : ℕ → Fin m → ℝ) (s : ℕ → Fin n → ℝ)
(mu : ℕ → ℝ) (hmu0 : 0 < mu 0)
(hxfeas0 : A.mulVec (x 0) = b) (hx0 : ∀ j, 0 < x 0 j)
(hsfeas0 : Aᵀ.mulVec (p 0) + s 0 = c) (hs0 : ∀ j, 0 < s 0 j)
(hprox0 : centralPathProximity (mu 0) (x 0) (s 0) ≤ beta)
(hrun : IsPathFollowingRun A c alpha x p s mu)
(K : ℕ)
(hK : K = ⌈(Real.sqrt beta + Real.sqrt n) / (Real.sqrt beta - beta) *
Real.log ((s 0 ⬝ᵥ x 0) * (1 + beta) / (eps * (1 - beta)))⌉₊) :
A.mulVec (x K) = b ∧ 0 ≤ x K ∧
Aᵀ.mulVec (p K) + s K = c ∧ 0 ≤ s K ∧
s K ⬝ᵥ x K ≤ eps := by
sorry
Read-back
What the Lean code literally says, in plain math · claude-fable-5
Fix a real system whose rows are linearly independent as vectors of ; reals (both bounds strict), , and defined by ; sequences , , with: ; with all coordinates of strictly positive; with strictly positive; the proximity ; and the sequences form a path-following run: for every , strictly, , and there is with , , , . Let
(natural ceiling, clamped at ). Conclusion, a five-fold conjunction about iterate only: ; componentwise (non-strict); ; ; and . Note the run definition itself does not mention ; primal feasibility of is part of the conclusion, derived from and -type steps.
Confirmed by the mission captain (proposal self-audit).