Theorem 3.1, proof — a rank-one perturbation of norm 1 attains ‖Ax − b‖ + √(‖x‖² + 1) (sign corrected)
ProvedRobustLS.Unstructured.rank_one_worst_case_perturbationLet , , , and let be a unit vector with whenever . Define the rank-one perturbation
Then (Frobenius norm and largest singular value), and
Together with the upper bound (16) this shows that the bound is attained, for both the Frobenius and the largest-singular-value perturbation balls.
Correction of the printed statement. The paper prints in place of . With the printed sign the residual becomes , which does not attain the bound: for , , one gets , , and residual , while . The corrected sign is the one the paper's claimed equality requires.
Formalization Note The augmented matrix is indexed by Fin m ⊕ Unit; the norms are the explicit Euclidean, Frobenius and operator-norm definitions of the mission's definition module.
import Mathlib import Definitions.Def_RobustLS_Unstructured_Core open Matrix
namespace RobustLS.Unstructured
/-- El Ghaoui & Lebret (1997), Theorem 3.1, proof, p. 1040 (PDF p. 6): the rank-one worst-case
perturbation `Δ = u/√(‖x‖² + 1) · [xᵀ −1]`, where `u = (Ax − b)/‖Ax − b‖` if `Ax ≠ b` and
`u` is any unit vector otherwise, satisfies `‖Δ‖_F = ‖Δ‖ = 1` and
`‖(A + ΔA)x − (b + Δb)‖ = ‖Ax − b‖ + √(‖x‖² + 1)`.
**Correction of a printed sign:** the paper prints `[xᵀ 1]`; with that choice the residual is
`Ax − b + u(‖x‖² − 1)/√(‖x‖² + 1)`, which does not attain the bound (e.g. `A = 0`, `x = 0`,
`b = e₁`: residual `0` instead of `2`). The last column must be `−u/√(‖x‖² + 1)`. -/
theorem rank_one_worst_case_perturbation {n m : ℕ} (A : Matrix (Fin n) (Fin m) ℝ)
(b : Fin n → ℝ) (x : Fin m → ℝ) (u : Fin n → ℝ) (hu : eucNorm u = 1)
(hu_dir : A *ᵥ x ≠ b → u = (eucNorm (A *ᵥ x - b))⁻¹ • (A *ᵥ x - b)) :
let c : ℝ := (Real.sqrt (eucNorm x ^ 2 + 1))⁻¹
let ΔA : Matrix (Fin n) (Fin m) ℝ := c • Matrix.vecMulVec u x
let Δb : Fin n → ℝ := (-c) • u
frobNorm (augment ΔA Δb) = 1 ∧ specNorm (augment ΔA Δb) = 1 ∧
perturbedResidual A b ΔA Δb x = eucNorm (A *ᵥ x - b) + Real.sqrt (eucNorm x ^ 2 + 1) := by sorry
end RobustLS.Unstructured
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.