Samplinglib
Lean gate not recorded for this source state main · 9bb7a7394ab0

Bench / optimisation

sogb-019 · public-dev · editorial and formal status separate

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
  1. 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.

  2. 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\|\).

  3. 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.

  4. 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

Download runnable reference

Assessment rubric · 4 points
  1. Uses the globally admissible point \(y=x+g\) to obtain the exact squared-norm lower bound without assuming subgradient existence. (1 point)
  2. Applies global Lipschitz growth to bound the same increment by G times the norm. (1 point)
  3. Separates the zero case before dividing, retaining only the stated inner-product-space hypotheses. (1 point)
  4. 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.

Download task template

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

Download runnable reference

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_mul
  • real_inner_self_eq_norm_sq
  • norm_nonneg
  • le_abs_self

Binding SHA-256: b12bf7bd53d4c8c85dd4e1658b22f05ea7752e13bfa48a3bbfba72f620c3d52f