Skip to content

Commit c754acd

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

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

Mathlib/MeasureTheory/Covering/Vitali.lean

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,43 @@ theorem exists_disjoint_subfamily_covering_enlargement_closedBall
187187
rcases A b ⟨rb.1, rb.2with ⟨c, cu, _⟩
188188
exact ⟨c, cu, by simp only [closedBall_eq_empty.2 h'a, empty_subset]⟩
189189

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

0 commit comments

Comments
 (0)