Bench / optimisation
Why a global Lipschitz function bounds its supporting vectors
Optimisation · natural-language: L3 / lean: L2 (author-assigned; calibration pending)
Why this difficulty?
The formal norm estimate combines one global support test with Lipschitz growth and a zero/nonzero case split (L2). The prose task additionally audits the global-domain requirement by constructing a constrained-support counterexample (L3). Neither level is experimentally calibrated.
Editorial review and exact formal-coverage boundary
AI editorial review accepted after a separately reviewed correction. This is not canonical theorem publication, full Lean coverage or empirical difficulty calibration.
- The constrained-support counterexample and diagnosis are prose claims, not additional conclusions of the unchanged Lean norm-bound task.
- Acceptance is an exact mathematical/rubric review, not a compiler execution receipt, empirical calibration, model-evaluation result or theorem-publication certificate.
Content-bound review status and evidence hashes · Independent reports and frozen inputs. Historical rejected wording is audit material, not training gold.
Assumptions and conventions
- E is a real inner-product space, not necessarily complete or finite dimensional. The function \(f:E\to \mathbb{R}\) is globally G-Lipschitz, where \(G\ge 0\).
- A supplied vector g supports f at x globally: \[f(x)+\langle g,y-x\rangle\le f(y)\qquad\text{for every }y\in E.\] Existence of supporting vectors, convexity of f and differentiability are not additional premises.
Natural-language question
Prove \(\|g\|\le G\), making the test point and zero case explicit. Is the same conclusion valid if the support inequality holds only for y in a constraint set C containing x? Give a counterexample with a globally Lipschitz function and explain exactly which step no longer applies.
Reference mathematical proof
Because the support relation is global, its test point may be \(y=x+g\). Thus \[\|g\|^2=\langle g,g\rangle\le f(x+g)-f(x).\] This tests the supplied relation; it does not use a theorem constructing subgradients.
Global Lipschitz growth and the absolute-value bound give \[f(x+g)-f(x)\le|f(x+g)-f(x)|\le G\|g\|.\] Combining the inequalities yields \(\|g\|^2\le G\|g\|\).
If \(g=0\) the conclusion is immediate from \(G\ge 0\). Otherwise \(\|g\|>0\), so division by this strictly positive number gives \(\|g\|\le G\). No completeness, differentiability or finite-dimensional compactness is used.
For constrained support take \(E=\mathbb{R}\), f≡0, \(G=0\), C=[0,∞), \(x=0\) and \(g=-1\). Then \[f(0)+g(y-0)=-y\le0=f(y)\qquad(y\in C),\] but \(\|g\|=1>0=G\). The chosen point \(x+g=-1\) is outside C. This refutes the constrained variant, not the globally quantified theorem.
How the Lean proof follows these steps
The reference tests hs at x+g, rewrites the inner product with itself as a squared norm, and obtains the upper increment bound with hf.dist_le_mul. It splits on a zero norm before the final ordered-field inference. SupportsAt is the existing global relation from ConvexSubgradient, not a new predicate. The source module is not imported into the task, and its norm theorem is not supplied as a premise. The Lean conclusion covers the norm bound only; the constrained counterexample is the separate prose audit.
/- SamplingOptimisationGeometryBench public-dev reference.
Reuses the existing project proof; retain LICENSE and NOTICE. -/
import AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
import Mathlib.Topology.MetricSpace.Lipschitz
import Mathlib.Data.Finset.Max
import Mathlib.Algebra.Order.BigOperators.Group.Finset
import Mathlib.Tactic.Linarith
import Mathlib.Tactic.Positivity
import Mathlib.Tactic.Ring
/- Copyright (c) 2024 Hongjia Chen, Chenyi Li, Wanyi He, Zaiwen Wen.
Released under Apache 2.0; retain LICENSE and NOTICE.
Upstream Optlib 5da27c5f95aa6a8a45b8c14b968ade4c13ff18c3,
Optlib/Algorithm/SubgradientMethod.lean:80–118,137–232.
Modified for Samplinglib: native Lean 4.33.0, global SupportsAt and unbundled inputs. -/
open AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
open scoped NNReal RealInnerProductSpace
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E]
example {f : E → ℝ} {G : ℝ≥0} {x g : E}
(hf : LipschitzWith G f) (hs : SupportsAt f x g) : ‖g‖ ≤ (G : ℝ) := by
have hs' := hs (x + g)
change f x + inner ℝ g (x + g - x) ≤ f (x + g) at hs'
rw [add_sub_cancel_left, real_inner_self_eq_norm_sq] at hs'
have hl : f (x + g) - f x ≤ (G : ℝ) * ‖g‖ := by
calc
f (x + g) - f x ≤ |f (x + g) - f x| := le_abs_self _
_ ≤ (G : ℝ) * ‖g‖ := by
simpa [Real.dist_eq, dist_eq_norm] using hf.dist_le_mul (x + g) x
by_cases hg : ‖g‖ = 0
· simp [hg]
· have hp : 0 < ‖g‖ := lt_of_le_of_ne (norm_nonneg _) (Ne.symm hg)
nlinarith
Assessment rubric · 4 points
- Uses the globally admissible point \(y=x+g\) to obtain the exact squared-norm lower bound without assuming subgradient existence. (1 point)
- Applies global Lipschitz growth to bound the same increment by G times the norm. (1 point)
- Separates the zero case before dividing, retaining only the stated inner-product-space hypotheses. (1 point)
- Gives any valid constrained-support counterexample with globally Lipschitz f, checks its support and failed norm bound, and explains the unavailable global test point; the reference half-line example is sufficient, not required. (1 point)
Lean question
Keep the target and context fixed; replace the comment slot with your proof. Ancestor libraries are allowed, but the target module is not imported directly.
Show fixed Lean task
/- SamplingOptimisationGeometryBench public-dev reference.
Reuses the existing project proof; retain LICENSE and NOTICE. -/
import AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
import Mathlib.Topology.MetricSpace.Lipschitz
import Mathlib.Data.Finset.Max
import Mathlib.Algebra.Order.BigOperators.Group.Finset
import Mathlib.Tactic.Linarith
import Mathlib.Tactic.Positivity
import Mathlib.Tactic.Ring
/- Copyright (c) 2024 Hongjia Chen, Chenyi Li, Wanyi He, Zaiwen Wen.
Released under Apache 2.0; retain LICENSE and NOTICE.
Upstream Optlib 5da27c5f95aa6a8a45b8c14b968ade4c13ff18c3,
Optlib/Algorithm/SubgradientMethod.lean:80–118,137–232.
Modified for Samplinglib: native Lean 4.33.0, global SupportsAt and unbundled inputs. -/
open AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
open scoped NNReal RealInnerProductSpace
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E]
example {f : E → ℝ} {G : ℝ≥0} {x g : E}
(hf : LipschitzWith G f) (hs : SupportsAt f x g) : ‖g‖ ≤ (G : ℝ) := by
-- Replace this comment with your proof.
Reference Lean and explanation
The reference tests hs at x+g, rewrites the inner product with itself as a squared norm, and obtains the upper increment bound with hf.dist_le_mul. It splits on a zero norm before the final ordered-field inference. SupportsAt is the existing global relation from ConvexSubgradient, not a new predicate. The source module is not imported into the task, and its norm theorem is not supplied as a premise. The Lean conclusion covers the norm bound only; the constrained counterexample is the separate prose audit.
/- SamplingOptimisationGeometryBench public-dev reference.
Reuses the existing project proof; retain LICENSE and NOTICE. -/
import AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
import Mathlib.Topology.MetricSpace.Lipschitz
import Mathlib.Data.Finset.Max
import Mathlib.Algebra.Order.BigOperators.Group.Finset
import Mathlib.Tactic.Linarith
import Mathlib.Tactic.Positivity
import Mathlib.Tactic.Ring
/- Copyright (c) 2024 Hongjia Chen, Chenyi Li, Wanyi He, Zaiwen Wen.
Released under Apache 2.0; retain LICENSE and NOTICE.
Upstream Optlib 5da27c5f95aa6a8a45b8c14b968ade4c13ff18c3,
Optlib/Algorithm/SubgradientMethod.lean:80–118,137–232.
Modified for Samplinglib: native Lean 4.33.0, global SupportsAt and unbundled inputs. -/
open AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient
open scoped NNReal RealInnerProductSpace
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E]
example {f : E → ℝ} {G : ℝ≥0} {x g : E}
(hf : LipschitzWith G f) (hs : SupportsAt f x g) : ‖g‖ ≤ (G : ℝ) := by
have hs' := hs (x + g)
change f x + inner ℝ g (x + g - x) ≤ f (x + g) at hs'
rw [add_sub_cancel_left, real_inner_self_eq_norm_sq] at hs'
have hl : f (x + g) - f x ≤ (G : ℝ) * ‖g‖ := by
calc
f (x + g) - f x ≤ |f (x + g) - f x| := le_abs_self _
_ ≤ (G : ℝ) * ‖g‖ := by
simpa [Real.dist_eq, dist_eq_norm] using hf.dist_le_mul (x + g) x
by_cases hg : ‖g‖ = 0
· simp [hg]
· have hp : 0 < ‖g‖ := lt_of_le_of_ne (norm_nonneg _) (Ne.symm hg)
nlinarith
No current trusted-reference compiler receipt recorded in this build.
What this does—and does not—verify
This bounds each supplied global supporting vector. It constructs neither a subgradient nor a measurable/random oracle, gives no constrained-normal bound, and proves no optimization rate by itself. The existing sum_weighted_gap_le theorem consumes this estimate; Bench examples add no Registry credit.
Existing library mathematics reused; no new mathematical leaf or paper-completion credit. The editorial panel records the exact current review scope and remaining unformalized explanation.
Sources, graph location and dependencies
Original QA and half-line counterexample over the Samplinglib-native Apache-2.0 port of Optlib. Upstream authors: Hongjia Chen, Chenyi Li, Wanyi He, Zaiwen Wen; pinned commit 5da27c5f95aa6a8a45b8c14b968ade4c13ff18c3, Optlib/Algorithm/SubgradientMethod.lean:80–118,137–232. The extracted reference retains the copyright, source and modification notice. The actual local norm bound is consumed by SubgradientMethod.sum_weighted_gap_le. No textbook passage or restricted dataset is copied.
Exact local source and full context · Locate the existing Lean declaration
AutoSamplingTheory.TechnicalLemmas.Analysis.SubgradientMethod.norm_le_of_supportsAt
ASTIS definitions / proof calls
AutoSamplingTheory.TechnicalLemmas.Analysis.ConvexSubgradient.SupportsAt
Mathlib facts / definitions
LipschitzWith.dist_le_mulreal_inner_self_eq_norm_sqnorm_nonnegle_abs_self
Binding SHA-256: b12bf7bd53d4c8c85dd4e1658b22f05ea7752e13bfa48a3bbfba72f620c3d52f