Skip to content

Commit 1ce2796

Browse files
committed
chore(Analysis/Convex/Gauge): rename lemmas involving {x | prop (gauge s x)} (leanprover-community#40710)
Lemmas in `Mathlib.Analysis.Convex.Gauge` whose conclusions are of the form `{x | prop (gauge s x)}` are renamed to include `setOf_gauge` in the name rather than just `gauge` in line with recent work related to minkowski's second theorem. Deprecation aliases are added for all non-private renames. Two downstream callers (`AbsConvexOpen.lean`, `Bernstein.lean`) are updated to use the new names. Also moved `Balanced.starConvex` further up the import chain. AI Disclosure: Generated with claude code Co-authored-by: Kevin H Wilson <khwilson@gmail.com>
1 parent d6e37a2 commit 1ce2796

4 files changed

Lines changed: 46 additions & 25 deletions

File tree

Mathlib/Analysis/Convex/Gauge.lean

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ theorem gauge_def' : gauge s x = sInf {r ∈ Set.Ioi (0 : ℝ) | r⁻¹ • x
6767
congrm sInf {r | ?_}
6868
exact and_congr_right fun hr => mem_smul_set_iff_inv_smul_mem₀ hr.ne' _ _
6969

70-
private theorem gauge_set_bddBelow : BddBelow { r : ℝ | 0 < r ∧ x ∈ r • s } :=
70+
private theorem bddBelow_gauge_set : BddBelow { r : ℝ | 0 < r ∧ x ∈ r • s } :=
7171
0, fun _ hr => hr.1.le⟩
7272

7373
/-- If the given subset is `Absorbent` then the set we take an infimum over in `gauge` is nonempty,
@@ -79,7 +79,7 @@ theorem Absorbent.gauge_set_nonempty (absorbs : Absorbent ℝ s) :
7979

8080
theorem gauge_mono (hs : Absorbent ℝ s) (h : s ⊆ t) : gauge t ≤ gauge s := fun _ => by
8181
unfold gauge
82-
gcongr; exacts [gauge_set_bddBelow, hs.gauge_set_nonempty]
82+
gcongr; exacts [bddBelow_gauge_set, hs.gauge_set_nonempty]
8383

8484
theorem exists_lt_of_gauge_lt (absorbs : Absorbent ℝ s) (h : gauge s x < a) :
8585
∃ b, 0 < b ∧ b < a ∧ x ∈ b • s := by
@@ -131,10 +131,10 @@ theorem gauge_neg_set_eq_gauge_neg (x : E) : gauge (-s) x = gauge s (-x) := by
131131
theorem gauge_le_of_mem (ha : 0 ≤ a) (hx : x ∈ a • s) : gauge s x ≤ a := by
132132
obtain rfl | ha' := ha.eq_or_lt
133133
· rw [mem_singleton_iff.1 (zero_smul_set_subset _ hx), gauge_zero]
134-
· exact csInf_le gauge_set_bddBelow ⟨ha', hx⟩
134+
· exact csInf_le bddBelow_gauge_set ⟨ha', hx⟩
135135

136-
theorem gauge_le_eq (hs₁ : Convex ℝ s) (hs₀ : (0 : E) ∈ s) (hs₂ : Absorbent ℝ s) (ha : 0 ≤ a) :
137-
{ x | gauge s x ≤ a } = ⋂ (r : ℝ) (_ : a < r), r • s := by
136+
theorem setOf_gauge_le_eq (hs₁ : Convex ℝ s) (hs₀ : (0 : E) ∈ s) (hs₂ : Absorbent ℝ s)
137+
(ha : 0 ≤ a) : { x | gauge s x ≤ a } = ⋂ (r : ℝ) (_ : a < r), r • s := by
138138
ext x
139139
simp_rw [Set.mem_iInter, Set.mem_setOf_eq]
140140
refine ⟨fun h r hr => ?_, fun h => le_of_forall_pos_lt_add fun ε hε => ?_⟩
@@ -148,33 +148,42 @@ theorem gauge_le_eq (hs₁ : Convex ℝ s) (hs₀ : (0 : E) ∈ s) (hs₂ : Abso
148148
exact hδr.le
149149
· linarith [gauge_le_of_mem (by linarith) <| h (a + ε / 2) (by linarith)]
150150

151-
theorem gauge_lt_eq' (absorbs : Absorbent ℝ s) (a : ℝ) :
151+
@[deprecated (since := "2026-06-17")] alias gauge_le_eq := setOf_gauge_le_eq
152+
153+
theorem setOf_gauge_lt_eq' (absorbs : Absorbent ℝ s) (a : ℝ) :
152154
{ x | gauge s x < a } = ⋃ (r : ℝ) (_ : 0 < r) (_ : r < a), r • s := by
153155
ext
154156
simp_rw [mem_setOf, mem_iUnion, exists_prop]
155157
exact
156158
⟨exists_lt_of_gauge_lt absorbs, fun ⟨r, hr₀, hr₁, hx⟩ =>
157159
(gauge_le_of_mem hr₀.le hx).trans_lt hr₁⟩
158160

159-
theorem gauge_lt_eq (absorbs : Absorbent ℝ s) (a : ℝ) :
161+
@[deprecated (since := "2026-06-17")] alias gauge_lt_eq' := setOf_gauge_lt_eq'
162+
163+
theorem setOf_gauge_lt_eq (absorbs : Absorbent ℝ s) (a : ℝ) :
160164
{ x | gauge s x < a } = ⋃ r ∈ Set.Ioo 0 (a : ℝ), r • s := by
161165
ext
162166
simp_rw [mem_setOf, mem_iUnion, exists_prop, mem_Ioo, and_assoc]
163167
exact
164168
⟨exists_lt_of_gauge_lt absorbs, fun ⟨r, hr₀, hr₁, hx⟩ =>
165169
(gauge_le_of_mem hr₀.le hx).trans_lt hr₁⟩
166170

171+
@[deprecated (since := "2026-06-17")] alias gauge_lt_eq := setOf_gauge_lt_eq
172+
167173
theorem mem_openSegment_of_gauge_lt_one (absorbs : Absorbent ℝ s) (hgauge : gauge s x < 1) :
168174
∃ y ∈ s, x ∈ openSegment ℝ 0 y := by
169175
rcases exists_lt_of_gauge_lt absorbs hgauge with ⟨r, hr₀, hr₁, y, hy, rfl⟩
170176
refine ⟨y, hy, 1 - r, r, ?_⟩
171177
simp [*]
172178

173-
theorem gauge_lt_one_subset_self (hs : Convex ℝ s) (h₀ : (0 : E) ∈ s) (absorbs : Absorbent ℝ s) :
174-
{ x | gauge s x < 1 } ⊆ s := fun _x hx ↦
179+
theorem setOf_gauge_lt_one_subset_self (hs : Convex ℝ s) (h₀ : (0 : E) ∈ s)
180+
(absorbs : Absorbent ℝ s) : { x | gauge s x < 1 } ⊆ s := fun _x hx ↦
175181
let ⟨_y, hys, hx⟩ := mem_openSegment_of_gauge_lt_one absorbs hx
176182
hs.openSegment_subset h₀ hys hx
177183

184+
@[deprecated (since := "2026-06-17")]
185+
alias gauge_lt_one_subset_self := setOf_gauge_lt_one_subset_self
186+
178187
theorem gauge_le_one_of_mem {x : E} (hx : x ∈ s) : gauge s x ≤ 1 :=
179188
gauge_le_of_mem zero_le_one <| by rwa [one_smul]
180189

@@ -196,19 +205,20 @@ theorem gauge_sum_le {ι : Type*} (hs : Convex ℝ s) (absorbs : Absorbent ℝ s
196205
(f : ι → E) : gauge s (∑ i ∈ t, f i) ≤ ∑ i ∈ t, gauge s (f i) :=
197206
Finset.le_sum_of_subadditive _ gauge_zero.le (gauge_add_le hs absorbs) _ _
198207

199-
theorem self_subset_gauge_le_one : s ⊆ { x | gauge s x ≤ 1 } := fun _ => gauge_le_one_of_mem
208+
theorem self_subset_setOf_gauge_le_one : s ⊆ { x | gauge s x ≤ 1 } := fun _ => gauge_le_one_of_mem
200209

201-
theorem Convex.gauge_le (hs : Convex ℝ s) (h₀ : (0 : E) ∈ s) (absorbs : Absorbent ℝ s) (a : ℝ) :
202-
Convex ℝ { x | gauge s x ≤ a } := by
210+
@[deprecated (since := "2026-06-17")]
211+
alias self_subset_gauge_le_one := self_subset_setOf_gauge_le_one
212+
213+
theorem Convex.setOf_gauge_le (hs : Convex ℝ s) (h₀ : (0 : E) ∈ s) (absorbs : Absorbent ℝ s)
214+
(a : ℝ) : Convex ℝ { x | gauge s x ≤ a } := by
203215
by_cases ha : 0 ≤ a
204-
· rw [gauge_le_eq hs h₀ absorbs ha]
216+
· rw [setOf_gauge_le_eq hs h₀ absorbs ha]
205217
exact convex_iInter fun i => convex_iInter fun _ => hs.smul _
206218
· convert! convex_empty (𝕜 := ℝ)
207219
exact eq_empty_iff_forall_notMem.2 fun x hx => ha <| (gauge_nonneg _).trans hx
208220

209-
theorem Balanced.starConvex (hs : Balanced ℝ s) : StarConvex ℝ 0 s :=
210-
starConvex_zero_iff.2 fun _ hx a ha₀ ha₁ =>
211-
hs _ (by rwa [Real.norm_of_nonneg ha₀]) (smul_mem_smul_set hx)
221+
@[deprecated (since := "2026-06-17")] alias Convex.gauge_le := Convex.setOf_gauge_le
212222

213223
theorem le_gauge_of_notMem (hs₀ : StarConvex ℝ 0 s) (hs₂ : Absorbs ℝ s {x}) (hx : x ∉ a • s) :
214224
a ≤ gauge s x := by
@@ -357,12 +367,16 @@ theorem interior_subset_gauge_lt_one (s : Set E) : interior s ⊆ { x | gauge s
357367
rcases H₂.exists with ⟨r, hxr, hr₀, hr₁⟩
358368
exact (gauge_le_of_mem hr₀.le hxr).trans_lt hr₁
359369

360-
theorem gauge_lt_one_eq_self_of_isOpen (hs₁ : Convex ℝ s) (hs₀ : (0 : E) ∈ s) (hs₂ : IsOpen s) :
361-
{ x | gauge s x < 1 } = s := by
362-
refine (gauge_lt_one_subset_self hs₁ ‹_› <| absorbent_nhds_zero <| hs₂.mem_nhds hs₀).antisymm ?_
370+
theorem setOf_gauge_lt_one_eq_self_of_isOpen (hs₁ : Convex ℝ s) (hs₀ : (0 : E) ∈ s)
371+
(hs₂ : IsOpen s) : { x | gauge s x < 1 } = s := by
372+
refine (setOf_gauge_lt_one_subset_self hs₁ ‹_› <| absorbent_nhds_zero <|
373+
hs₂.mem_nhds hs₀).antisymm ?_
363374
convert! interior_subset_gauge_lt_one s
364375
exact hs₂.interior_eq.symm
365376

377+
@[deprecated (since := "2026-06-17")]
378+
alias gauge_lt_one_eq_self_of_isOpen := setOf_gauge_lt_one_eq_self_of_isOpen
379+
366380
theorem gauge_lt_one_of_mem_of_isOpen (hs₂ : IsOpen s) {x : E} (hx : x ∈ s) :
367381
gauge s x < 1 :=
368382
interior_subset_gauge_lt_one s <| by rwa [hs₂.interior_eq]
@@ -378,7 +392,7 @@ theorem mem_closure_of_gauge_le_one (hc : Convex ℝ s) (hs₀ : 0 ∈ s) (ha :
378392
(h : gauge s x ≤ 1) : x ∈ closure s := by
379393
have : ∀ᶠ r : ℝ in 𝓝[<] 1, r • x ∈ s := by
380394
filter_upwards [Ico_mem_nhdsLT one_pos] with r ⟨hr₀, hr₁⟩
381-
apply gauge_lt_one_subset_self hc hs₀ ha
395+
apply setOf_gauge_lt_one_subset_self hc hs₀ ha
382396
rw [mem_setOf_eq, gauge_smul_of_nonneg hr₀]
383397
exact mul_lt_one_of_nonneg_of_lt_one_left hr₀ hr₁ h
384398
refine mem_closure_of_tendsto ?_ this
@@ -446,15 +460,18 @@ is continuous. If the ambient space is a normed space, then `gauge s` is Lipschi
446460
theorem continuous_gauge (hc : Convex ℝ s) (hs₀ : s ∈ 𝓝 0) : Continuous (gauge s) :=
447461
continuous_iff_continuousAt.2 fun _ ↦ continuousAt_gauge hc hs₀
448462

449-
theorem gauge_lt_one_eq_interior (hc : Convex ℝ s) (hs₀ : s ∈ 𝓝 0) :
463+
theorem setOf_gauge_lt_one_eq_interior (hc : Convex ℝ s) (hs₀ : s ∈ 𝓝 0) :
450464
{ x | gauge s x < 1 } = interior s := by
451465
refine Subset.antisymm (fun x hx ↦ ?_) (interior_subset_gauge_lt_one s)
452466
rcases mem_openSegment_of_gauge_lt_one (absorbent_nhds_zero hs₀) hx with ⟨y, hys, hxy⟩
453467
exact hc.openSegment_interior_self_subset_interior (mem_interior_iff_mem_nhds.2 hs₀) hys hxy
454468

469+
@[deprecated (since := "2026-06-17")]
470+
alias gauge_lt_one_eq_interior := setOf_gauge_lt_one_eq_interior
471+
455472
theorem gauge_lt_one_iff_mem_interior (hc : Convex ℝ s) (hs₀ : s ∈ 𝓝 0) :
456473
gauge s x < 1 ↔ x ∈ interior s :=
457-
Set.ext_iff.1 (gauge_lt_one_eq_interior hc hs₀) _
474+
Set.ext_iff.1 (setOf_gauge_lt_one_eq_interior hc hs₀) _
458475

459476
theorem gauge_le_one_iff_mem_closure (hc : Convex ℝ s) (hs₀ : s ∈ 𝓝 0) :
460477
gauge s x ≤ 1 ↔ x ∈ closure s :=
@@ -487,7 +504,7 @@ theorem gaugeSeminorm_lt_one_of_isOpen (hs : IsOpen s) {x : E} (hx : x ∈ s) :
487504

488505
theorem gaugeSeminorm_ball_one (hs : IsOpen s) : (gaugeSeminorm hs₀ hs₁ hs₂).ball 0 1 = s := by
489506
rw [Seminorm.ball_zero_eq]
490-
exact gauge_lt_one_eq_self_of_isOpen hs₁ hs₂.zero_mem hs
507+
exact setOf_gauge_lt_one_eq_self_of_isOpen hs₁ hs₂.zero_mem hs
491508

492509
end RCLike
493510

Mathlib/Analysis/LocallyConvex/AbsConvexOpen.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ theorem gaugeSeminormFamily_ball (s : AbsConvexOpenSets 𝕜 E) :
100100
dsimp only [gaugeSeminormFamily]
101101
rw [Seminorm.ball_zero_eq]
102102
simp_rw [gaugeSeminorm_toFun]
103-
exact gauge_lt_one_eq_self_of_isOpen (s.coe_convex.lift ℝ) s.coe_zero_mem s.coe_isOpen
103+
exact setOf_gauge_lt_one_eq_self_of_isOpen (s.coe_convex.lift ℝ) s.coe_zero_mem s.coe_isOpen
104104

105105
variable [IsTopologicalAddGroup E] [ContinuousSMul 𝕜 E]
106106
variable [LocallyConvexSpace 𝕜 E]

Mathlib/Analysis/LocallyConvex/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,4 +305,8 @@ theorem balanced_iff_neg_mem (hs : Convex ℝ s) : Balanced ℝ s ↔ ∀ ⦃x
305305
exact hs (h hx) hx (div_nonneg (sub_nonneg_of_le ha.2) zero_le_two)
306306
(div_nonneg (sub_nonneg_of_le ha.1) zero_le_two) (by ring)
307307

308+
theorem Balanced.starConvex (hs : Balanced ℝ s) : StarConvex ℝ 0 s :=
309+
starConvex_zero_iff.2 fun _ hx a ha₀ ha₁ =>
310+
hs _ (by rwa [Real.norm_of_nonneg ha₀]) (smul_mem_smul_set hx)
311+
308312
end Real

Mathlib/Analysis/SpecialFunctions/Bernstein.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ theorem bernsteinApproximation_uniform [LocallyConvexSpace ℝ E] (f : C(I, E))
193193
|>.compactConvergenceUniformity_of_compact |> nhds_basis_uniformity |>.tendsto_right_iff]
194194
rintro U ⟨hU₀, hcU⟩
195195
filter_upwards [this U hU₀ hcU] with n hn x
196-
exact gauge_lt_one_subset_self hcU (mem_of_mem_nhds hU₀) (absorbent_nhds_zero hU₀) (hn x)
196+
exact setOf_gauge_lt_one_subset_self hcU (mem_of_mem_nhds hU₀) (absorbent_nhds_zero hU₀) (hn x)
197197
intro U hU₀ hUc
198198
/- Choose a constant `C` such that `‖f x - f y‖_U ≤ C` for all `x`, `y`.
199199
For a normed space, this would be twice the norm of `f`. -/

0 commit comments

Comments
 (0)