Skip to content

Commit f6f7af2

Browse files
committed
Covering/Vitali: add exists_disjoint_subfamily_covering_enlargement_ball
1 parent 4d6689a commit f6f7af2

1 file changed

Lines changed: 37 additions & 1 deletion

File tree

Mathlib/MeasureTheory/Covering/Vitali.lean

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel
55
-/
66
module
7-
87
public import Mathlib.MeasureTheory.Constructions.BorelSpace.Basic
98
public import Mathlib.MeasureTheory.Covering.VitaliFamily
109
public import Mathlib.Data.Set.Pairwise.Lattice
@@ -187,6 +186,43 @@ theorem exists_disjoint_subfamily_covering_enlargement_closedBall
187186
rcases A b ⟨rb.1, rb.2with ⟨c, cu, _⟩
188187
exact ⟨c, cu, by simp only [closedBall_eq_empty.2 h'a, empty_subset]⟩
189188

189+
/- Note: it seems easier to do the analogous proof again than to apply the previous one, because the
190+
interior of a closed ball may not equal the open ball. -/
191+
192+
/-- Vitali covering theorem, open balls version: given a family `t` of balls, one can
193+
extract a disjoint subfamily `u ⊆ t` so that all balls in `t` are covered by the τ-times
194+
dilations of balls in `u`, for some `τ > 3`. -/
195+
theorem exists_disjoint_subfamily_covering_enlargement_ball
196+
[PseudoMetricSpace α] (t : Set ι)
197+
(x : ι → α) (r : ι → ℝ) (R : ℝ) (hr : ∀ a ∈ t, r a ≤ R) (τ : ℝ) (hτ : 3 < τ) :
198+
∃ u ⊆ t,
199+
(u.PairwiseDisjoint fun a => ball (x a) (r a)) ∧
200+
∀ a ∈ t, ∃ b ∈ u, ball (x a) (r a) ⊆ ball (x b) (τ * r b) := by
201+
rcases eq_empty_or_nonempty t with (rfl | _)
202+
· exact ⟨∅, Subset.refl _, pairwiseDisjoint_empty, by simp⟩
203+
by_cases! ht : ∀ a ∈ t, r a ≤ 0
204+
· exact ⟨t, Subset.rfl, fun a ha b _ _ => by
205+
simp only [ball_eq_empty.2 (ht a ha), empty_disjoint, Function.onFun],
206+
fun a ha => ⟨a, ha, by simp only [ball_eq_empty.2 (ht a ha), empty_subset]⟩⟩
207+
let t' := { a ∈ t | 0 < r a }
208+
rcases exists_disjoint_subfamily_covering_enlargement (fun a => ball (x a) (r a)) t' r
209+
((τ - 1) / 2) (by linarith) (fun a ha => ha.2.le) R (fun a ha => hr a ha.1) fun a ha =>
210+
⟨x a, mem_ball_self ha.2with
211+
⟨u, ut', u_disj, hu⟩
212+
have A : ∀ a ∈ t', ∃ b ∈ u, ball (x a) (r a) ⊆ ball (x b) (τ * r b) := by
213+
intro a ha
214+
rcases hu a ha with ⟨b, bu, hb, rb⟩
215+
refine ⟨b, bu, ?_⟩
216+
have : dist (x a) (x b) < r a + r b := dist_lt_add_of_nonempty_ball_inter_ball hb
217+
apply ball_subset_ball'
218+
linarith
219+
refine ⟨u, ut'.trans fun a ha => ha.1, u_disj, fun a ha => ?_⟩
220+
rcases lt_or_ge 0 (r a) with (h'a | h'a)
221+
· exact A a ⟨ha, h'a⟩
222+
· rcases ht with ⟨b, rb⟩
223+
rcases A b ⟨rb.1, rb.2with ⟨c, cu, _⟩
224+
exact ⟨c, cu, by simp only [ball_eq_empty.2 h'a, empty_subset]⟩
225+
190226
/-- The measurable **Vitali covering theorem**.
191227
192228
Assume one is given a family `t` of closed sets with nonempty interior, such that each `a ∈ t` is

0 commit comments

Comments
 (0)