Newton quadratic-phase contraction
ProvedConvexOptimization.newton_quadratic_phase_contractionThe quadratically convergent phase: the scaled gradient norm squares at every step — inequality (9.33) of Boyd & Vandenberghe.
Let be twice differentiable and assume, for constants and ,
fix backtracking parameters , , and set . Let satisfy and let solve the Newton system . Then the unit step passes the Armijo test, so backtracking accepts , and the next iterate satisfies
Once the gradient drops below it never rises above it again, the method takes full Newton steps from then on, and the scaled quantity squares at each iteration — the number of correct digits doubles per step. This is the source of the term in the mission's goal theorem, and the precise reason Newton's method is qualitatively different from any first-order method.
Formalization Note The conclusion is a conjunction: acceptance of the unit step is stated as the Armijo inequality at rather than by invoking the backtracking predicate, since acceptance is exactly what has to be proved. Hessian bounds are in quadratic-form guise and the Lipschitz condition uses the operator norm. Source: B&V §9.5.3, pp. 488–491, eq. (9.33).
import Mathlib open scoped RealInnerProductSpace ENNReal open MeasureTheory
theorem ConvexOptimization.newton_quadratic_phase_contraction {n : ℕ} (m M L α β η : ℝ)
(hm : 0 < m) (hmM : m ≤ M) (hL : 0 < L)
(hα0 : 0 < α) (hα : α < 1 / 2) (hβ0 : 0 < β) (hβ1 : β < 1)
(hη : η = min 1 (3 * (1 - 2 * α)) * m ^ 2 / L)
(f : EuclideanSpace ℝ (Fin n) → ℝ)
(g : EuclideanSpace ℝ (Fin n) → EuclideanSpace ℝ (Fin n))
(hg : ∀ x, HasGradientAt f (g x) x)
(H : EuclideanSpace ℝ (Fin n) →
EuclideanSpace ℝ (Fin n) →L[ℝ] EuclideanSpace ℝ (Fin n))
(hH : ∀ x, HasFDerivAt g (H x) x)
(hHm : ∀ x v, m * ‖v‖ ^ 2 ≤ ⟪H x v, v⟫)
(hHM : ∀ x v, ⟪H x v, v⟫ ≤ M * ‖v‖ ^ 2)
(hHL : ∀ x y, ‖H x - H y‖ ≤ L * ‖x - y‖)
(x Δ : EuclideanSpace ℝ (Fin n))
(hΔ : H x Δ = -g x) (hgx : ‖g x‖ < η) :
(f (x + Δ) ≤ f x + α * ⟪g x, Δ⟫) ∧
L / (2 * m ^ 2) * ‖g (x + Δ)‖ ≤ (L / (2 * m ^ 2) * ‖g x‖) ^ 2 := by
sorry