Skip to content

Commit 9c68aa5

Browse files
committed
feat: a lower bound for the volume of a cone on the unit sphere (leanprover-community#31960)
1 parent eed70c4 commit 9c68aa5

1 file changed

Lines changed: 95 additions & 0 deletions

File tree

Mathlib/MeasureTheory/Constructions/HaarToSphere.lean

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ and the Lebesgue measure on `(0, +∞)` taken with density `fun r ↦ r ^ n`.
2424
2525
One can think about this fact as a version of polar coordinate change formula
2626
for a general nontrivial normed space.
27+
28+
In this file we provide a way to rewrite integrals and integrability
29+
of functions that depend on the norm only in terms of integral over `(0, +∞)`.
30+
We also provide a positive lower estimate on the `(Measure.toSphere μ)`-measure
31+
of a ball of radius `ε > 0` on the unit sphere.
2732
-/
2833

2934
@[expose] public section
@@ -153,6 +158,96 @@ theorem measurePreserving_homeomorphUnitSphereProd :
153158
sub_add_cancel, mul_right_comm, ← ENNReal.ofReal_natCast, ← ENNReal.ofReal_mul, mul_div_cancel₀]
154159
exacts [(Nat.cast_pos.2 hpos).ne', Nat.cast_nonneg _]
155160

161+
/-- An auxiliary lemma for `toSphereBallBound_mul_measure_unitBall_le_toSphere_ball`.
162+
The estimate in this lemma is highly suboptimal.
163+
For a non-private lemma, we should aim for a more precise and a more general fact
164+
(e.g., an estimate on the radius of a ball centered at `t • x`
165+
that is guaranteed to be a subset of the cone. -/
166+
private lemma ball_subset_sector_of_small_epsilon
167+
{E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
168+
(x : E) (hx : ‖x‖ = 1) (ε : ℝ) (hε : 0 < ε) (hε2 : ε ≤ 2) :
169+
ball ((1 - ε / 4) • x) (ε / 4) ⊆
170+
Ioo (0 : ℝ) 1 • (ball x ε ∩ sphere (0 : E) 1) := by
171+
intro y hy
172+
rw [mem_ball] at hy
173+
have habs : |1 - ε / 4| = 1 - ε / 4 := abs_of_nonneg (by linarith)
174+
-- Note that $y ≠ 0$.
175+
have hy₀ : y ≠ 0 := by
176+
rintro rfl
177+
have : 1 - ε / 4 < ε / 4 := by simpa [norm_smul, habs, hx] using hy
178+
linarith
179+
have hy₁ : ‖y‖ < 1 := calc
180+
‖y‖ ≤ dist y ((1 - ε / 4) • x) + ‖(1 - ε / 4) • x‖ := by
181+
simpa using dist_triangle y ((1 - ε / 4) • x) 0
182+
_ < ε / 4 + ‖(1 - ε / 4) • x‖ := by gcongr
183+
_ = 1 := by simp [norm_smul, habs, hx]
184+
-- Let $u = y / \|y\|$. We show $\|u - x\| < \epsilon$.
185+
set u : E := ‖y‖⁻¹ • y
186+
have hu₁ : ‖u‖ = 1 := by simp [u, hy₀, norm_smul]
187+
refine ⟨‖y‖, ⟨by simpa, hy₁⟩, u, ⟨?_, by simpa⟩, by simp [u, hy₀]⟩
188+
rw [mem_ball]
189+
have hyx := calc
190+
dist y x ≤ dist y ((1 - ε / 4) • x) + dist ((1 - ε / 4) • x) x := dist_triangle ..
191+
_ < ε / 4 + dist ((1 - ε / 4) • x) x := by gcongr
192+
_ = ε / 4 + ε / 4 := by simp [sub_smul, norm_smul, hx, abs_of_pos hε]
193+
_ = ε / 2 := by ring
194+
have huy : dist u y ≤ dist x y := by
195+
have H : u - y = (1 - ‖y‖) • u := by simp [u, hy₀, sub_smul]
196+
simpa [dist_eq_norm_sub, H, norm_smul, abs_of_nonneg, hy₁.le, hu₁, hx]
197+
using dist_triangle x y 0
198+
linarith [dist_triangle u y x, dist_comm x y]
199+
200+
/-- Lower estimate on the measure of the `ε`-cone in an `n`-dimensional normed space
201+
divided by the measure of the ball. -/
202+
@[irreducible]
203+
noncomputable def toSphereBallBound (n : ℕ) (ε : ℝ) : ℝ≥0 :=
204+
if n ≠ 00 < ε then n * ((min (Real.toNNReal ε) 2) / 4) ^ n else 1
205+
206+
theorem toSphereBallBound_pos (n : ℕ) (ε : ℝ) : 0 < toSphereBallBound n ε := by
207+
unfold toSphereBallBound
208+
split_ifs with h
209+
· cases h
210+
positivity
211+
· positivity
212+
213+
/-- A ball of radius `ε` on the unit sphere in a real normed space
214+
has measure at least `toSphereBallBound n ε * μ (ball 0 1)`,
215+
where `n` is the dimension of the space,
216+
`toSphereBallBound n ε` is a lower estimate that depends only on the dimension and `ε`,
217+
which is positive for positive `n` and `ε`. -/
218+
theorem toSphereBallBound_mul_measure_unitBall_le_toSphere_ball {ε : ℝ}
219+
(hε : 0 < ε) (x : sphere (0 : E) 1) :
220+
toSphereBallBound (Module.finrank ℝ E) ε * μ (ball 0 1) ≤ μ.toSphere (ball x ε) := by
221+
have : Nontrivial E := ⟨⟨x, 0, ne_of_apply_ne Norm.norm (by simp)⟩⟩
222+
wlog hε₂ : ε ≤ 2 generalizing ε
223+
· trans μ.toSphere (ball x (min ε 2))
224+
· simpa [Real.toNNReal_monotone.map_min, toSphereBallBound]
225+
using this (ε := min ε 2) (by simp [hε]) (by simp)
226+
· gcongr
227+
simp
228+
rw [μ.toSphere_apply' measurableSet_ball, Subtype.image_ball, setOf_mem_eq]
229+
grw [← ball_subset_sector_of_small_epsilon] <;> try assumption
230+
· have hdim : Module.finrank ℝ E ≠ 0 := Module.finrank_pos.ne'
231+
have : min (ENNReal.ofReal ε) 2 = ENNReal.ofReal ε := by simpa
232+
simp (disch := positivity) [μ.addHaar_ball_of_pos (r := ε / 4), ENNReal.ofReal_div_of_pos,
233+
toSphereBallBound, mul_assoc, ENNReal.ofNNReal_toNNReal, this, hdim, hε]
234+
· simp
235+
236+
/-- A ball of radius `ε` on the unit sphere in a real normed space
237+
has measure at least `toSphereBallBound n ε * μ (ball 0 1)`,
238+
where `n` is the dimension of the space,
239+
`toSphereBallBound n ε` is a lower estimate that depends only on the dimension and `ε`,
240+
which is positive for positive `n` and `ε`.
241+
242+
This is a version stated in terms `MeasureTheory.Measure.real`. -/
243+
theorem toSphereBallBound_mul_measureReal_unitBall_le_toSphere_ball
244+
{ε : ℝ} (hε : 0 < ε) (x : sphere (0 : E) 1) :
245+
toSphereBallBound (Module.finrank ℝ E) ε * μ.real (ball 0 1) ≤
246+
μ.toSphere.real (ball x ε) := by
247+
grw [Measure.real, Measure.real, ← toSphereBallBound_mul_measure_unitBall_le_toSphere_ball μ hε,
248+
ENNReal.toReal_mul, ENNReal.coe_toReal]
249+
simp
250+
156251
end Measure
157252

158253
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]

0 commit comments

Comments
 (0)