Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

(A.8) — with R = C⁻¹, c = y and (A.7) is the dfp update

Proved
VarStorageQN.LeastChange.dfp_update

by mikedeng1 · Oct 8, 2026 · Mathlib 0df444a (Lean v4.33.1)

dfpleast-changep2o-batch-pfp2bp2o-gran-per-chapterp2o-plan-paperp2o-v1quasi-newtonsecant-update

Let H\mathcal HH be a real Hilbert space, B=B∗B=B^*B=B∗ a self-adjoint bounded operator, and y,s∈Hy,s\in\mathcal Hy,s∈H with ⟨y,s⟩>0\langle y,s\rangle>0⟨y,s⟩>0. Let CCC be a bijective bounded operator with y=C∗Csy=C^*Csy=C∗Cs (one exists by Proposition A.3) and take R=C−1R=C^{-1}R=C−1. Then the weight vector is c=R−∗R−1s=yc=R^{-*}R^{-1}s=yc=R−∗R−1s=y, and the unique solution of

min⁡P∈ΠS∥R∗PR∥HS,ΠS={P∈L2(H):P=P∗, (B+P)s=y},\min_{P\in\Pi_S}\|R^*PR\|_{\mathrm{HS}},\qquad \Pi_S=\{P\in L_2(\mathcal H):P=P^*,\ (B+P)s=y\},P∈ΠS​min​∥R∗PR∥HS​,ΠS​={P∈L2​(H):P=P∗, (B+P)s=y},

is P=Bdfp−BP=B_{\mathrm{dfp}}-BP=Bdfp​−B, where

Bdfp=B+[y−Bs,y]+[y,y−Bs]⟨y,s⟩−⟨y−Bs,s⟩⟨y,s⟩2[y,y].(A.8)B_{\mathrm{dfp}}=B+\frac{[y-Bs,y]+[y,y-Bs]}{\langle y,s\rangle}-\frac{\langle y-Bs,s\rangle}{\langle y,s\rangle^2}[y,y].\tag{A.8}Bdfp​=B+⟨y,s⟩[y−Bs,y]+[y,y−Bs]​−⟨y,s⟩2⟨y−Bs,s⟩​[y,y].(A.8)

So the Davidon–Fletcher–Powell update is a weighted least-change self-adjoint secant update.

Formalization Note Both conjuncts of the paper's sentence are stated: c=yc=yc=y, and the unique-solution property (feasibility, minimality, equality of every feasible minimizer) of Bdfp−BB_{\mathrm{dfp}}-BBdfp​−B for (A.6) with R=C−1R=C^{-1}R=C−1. CCC is a continuous linear equivalence and RRR is its inverse C.symm. The Hilbert–Schmidt norm uses an arbitrary Hilbert basis; summability is part of ΠS\Pi_SΠS​.

Preamble
import Mathlib
import Definitions.Def_VarStorageQN_LeastChange_HilbertSchmidt
import Definitions.Def_VarStorageQN_LeastChange_Bracket
import Definitions.Def_VarStorageQN_LeastChange_SecantProblem
Formal statement
namespace VarStorageQN.LeastChange

open InnerProductSpace ContinuousLinearMap
open scoped InnerProductSpace

variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℝ H] [CompleteSpace H]

/-- (A.8), pp. 29–30: if `⟨y,s⟩ > 0` and `y = C*Cs` with `C` bijective, then for `R = C⁻¹`
the weight is `c = y`, and the unique solution of (A.6) is the dfp perturbation `B_dfp − B`. -/
theorem dfp_update {ι : Type*} (b : HilbertBasis ι ℝ H) (B : H →L[ℝ] H)
    (hB : IsSelfAdjoint B) (y s : H) (hys : 0 < ⟪y, s⟫_ℝ) (C : H ≃L[ℝ] H)
    (hC : y = adjoint (C : H →L[ℝ] H) (C s)) :
    let R : H ≃L[ℝ] H := C.symm
    let r := y - B s
    let Pc : H →L[ℝ] H :=
      (⟪y, s⟫_ℝ)⁻¹ • (bracket r y + bracket y r) - (⟪r, s⟫_ℝ / ⟪y, s⟫_ℝ ^ 2) • bracket y y
    let obj : (H →L[ℝ] H) → ℝ :=
      fun P => hsNorm b (adjoint (R : H →L[ℝ] H) ∘L P ∘L (R : H →L[ℝ] H))
    weight R s = y ∧
      Pc ∈ FeasSym b B y s ∧
      (∀ P ∈ FeasSym b B y s, obj Pc ≤ obj P) ∧
      (∀ P ∈ FeasSym b B y s, (∀ Q ∈ FeasSym b B y s, obj P ≤ obj Q) → P = Pc) := by sorry

end VarStorageQN.LeastChange
Source
Gilbert & Lemaréchal, Some numerical experiments with variable-storage quasi-Newton algorithms, IIASA Working Paper WP-88-121 (August 1988), pp. 29–30, Annex, sentence before (A.8) and (A.8)
Human review
  • Endorsed by Shuze Chen · Oct 8, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Oct 8, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me