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