Theorem 3.2 (Direction-finding subproblem), p. 5 — Algorithm 1 outputs a feasible and ε-suboptimal solution to (7b)
ProvedWassKF.Bisect.theorem_3_2Let with , let , and , and let . Put with , let be the largest eigenvalue of and an eigenvector of with . The direction-finding subproblem (7b) is
with ; let be its feasible set. Run Algorithm 1 on : pass tries , starting from , and the loop exits after pass with output when and . Then:
- (Soundness.) At every pass at which the exit test holds,
- (Termination.) If does not vanish at any dyadic point with and , then the exit test holds at some pass .
Together these say that Algorithm 1 outputs a feasible and -suboptimal solution of (7b). This is the guarantee that makes Algorithm 1 a valid linear-minimization oracle inside the Frank–Wolfe method (Algorithm 2) for program (5).
Added hypotheses (corrections to the printed theorem). (i) The termination hypothesis in 2: the printed theorem implicitly claims that the loop terminates, which fails when a trial point (or ) is exactly the root of : the else-branch then sets , every later trial point lies below where , and the test never holds. Soundness needs no such hypothesis. (ii) : the page says only "an eigenvector", and is wrong for a rescaled one. (iii) , which makes (Lemmas A.1–A.3 assume ); for the algorithm can return .
Formalization Note is WassersteinDRO.Shrinkage.sdpFeasibleSet ρ Σ σ; is passed as with and an eigenvector, as lam1 with and . The algorithm is modelled as its sequence of passes (bisectState, bisectGamma, bisectOutput, bisectStops), so the output is at the first pass whose exit test holds, and soundness is stated for every such pass. -suboptimality is stated with a universal quantifier over , not with a supremum. Mathlib's inverse makes when is singular, as allowed by ; is then .
import Mathlib import Definitions.Def_WassersteinDRO_Shrinkage_sdpFeasibleSet import Definitions.Def_WassKF_Bisect_gradF import Definitions.Def_WassKF_Bisect_hFun import Definitions.Def_WassKF_Bisect_Lgamma import Definitions.Def_WassKF_Bisect_Delta import Definitions.Def_WassKF_Bisect_algorithm1 open Matrix
namespace WassKF.Bisect
/-- Theorem 3.2 (Direction-finding subproblem), p. 5: for `ρ, ε > 0`, `Σ ≻ 0` and `S ⪰ 0`,
Algorithm 1 run on `D = ∇f(S)` (`gradF S`), with `λ₁` the largest eigenvalue of `D` and `v₁` a
unit eigenvector for it, outputs a feasible and `ε`-suboptimal solution of (7b), whose feasible
set is `sdpFeasibleSet ρ Σ σ̲` with `σ̲ = λ_min(Σ)` passed as `σ`.
(1) Soundness: at every pass `k` at which the exit test `h(γ) > 0 ∧ Δ < ε` holds, the matrix `L`
of that pass is feasible and within `ε` of every feasible objective value `⟨L', D⟩ = Tr[L'ᵀD]`.
(2) Termination: the exit test holds at some pass, provided `h` has no root at a dyadic point
`γ_min + j(γ_max − γ_min)/2^k`, `0 < j ≤ 2^k` (added hypothesis: otherwise the loop can run forever).
Added: `0 < n` (so `D ≠ 0`) and `v₁ᵀv₁ = 1`. -/
theorem theorem_3_2 {n m : ℕ} (hn : 0 < n)
(Sigma S : Matrix (Fin n ⊕ Fin m) (Fin n ⊕ Fin m) ℝ) (ρ ε σ lam1 : ℝ)
(v₁ : Fin n ⊕ Fin m → ℝ)
(hρ : 0 < ρ) (hε : 0 < ε) (hSigma : Sigma.PosDef) (hS : S.PosSemidef)
(hσ : (Sigma - σ • (1 : Matrix (Fin n ⊕ Fin m) (Fin n ⊕ Fin m) ℝ)).PosSemidef)
(hσ_eig : ∃ v : Fin n ⊕ Fin m → ℝ, v ≠ 0 ∧ Sigma *ᵥ v = σ • v)
(hlam : (lam1 • (1 : Matrix (Fin n ⊕ Fin m) (Fin n ⊕ Fin m) ℝ) - gradF S).PosSemidef)
(hv : gradF S *ᵥ v₁ = lam1 • v₁) (hv1 : v₁ ⬝ᵥ v₁ = 1) :
(∀ k : ℕ, bisectStops Sigma (gradF S) ρ ε lam1 v₁ k →
bisectOutput Sigma (gradF S) ρ lam1 v₁ k ∈
WassersteinDRO.Shrinkage.sdpFeasibleSet ρ Sigma σ ∧
∀ L' ∈ WassersteinDRO.Shrinkage.sdpFeasibleSet ρ Sigma σ,
(L'ᵀ * gradF S).trace ≤
((bisectOutput Sigma (gradF S) ρ lam1 v₁ k)ᵀ * gradF S).trace + ε) ∧
((∀ k j : ℕ, 0 < j → j ≤ 2 ^ k →
hFun Sigma (gradF S) ρ
(gammaMin Sigma ρ lam1 v₁ +
(j : ℝ) * (gammaMax Sigma ρ lam1 - gammaMin Sigma ρ lam1 v₁) / 2 ^ k) ≠ 0) →
∃ k : ℕ, bisectStops Sigma (gradF S) ρ ε lam1 v₁ k) := by sorry
end WassKF.Bisect
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.