Theorem: MeasureTheory.Measure.tendsto_add_haar_inter_smul_zero_of_density_zero
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: refine' tendsto_order.2 ⟨fun a' ha' => (ENNReal.not_lt_zero ha').elim, fun ε (εpos : 0 < ε) => _⟩
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
⊢ Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)

tactic: rcases eq_or_ne (μ t) 0 with (h't | h't)
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε

tactic: obtain ⟨n, npos, hn⟩ : ∃ n : ℕ, 0 < n ∧ μ (t \ closedBall 0 n) < ε / 2 * μ t := by
  have A :
    Tendsto (fun n : ℕ => μ (t \ closedBall 0 n)) atTop
      (𝓝 (μ (⋂ n : ℕ, t \ closedBall 0 n))) := by
    have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ :=
      ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
    refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
    exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
  have : (⋂ n : ℕ, t \ closedBall 0 n) = ∅ := by
    simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl,
      iUnion_closedBall_nat, compl_univ, inter_empty]
  simp only [this, measure_empty] at A
  have I : 0 < ε / 2 * μ t := ENNReal.mul_pos (ENNReal.half_pos εpos.ne').ne' h't
  exact (Eventually.and (Ioi_mem_atTop 0) ((tendsto_order.1 A).2 _ I)).exists
state_before: case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε

tactic: have L :
  Tendsto (fun r : ℝ => μ (s ∩ ({x} + r • (t ∩ closedBall 0 n))) / μ ({x} + r • t)) (𝓝[>] 0)
    (𝓝 0) :=
  tendsto_add_haar_inter_smul_zero_of_density_zero_aux2 μ s x h _ t h't n (Nat.cast_pos.2 npos)
    (inter_subset_right _ _)
state_before: case inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε

tactic: filter_upwards [(tendsto_order.1 L).2 _ (ENNReal.half_pos εpos.ne'), self_mem_nhdsWithin]
state_before: case inr.intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε

tactic: rintro r hr (rpos : 0 < r)
state_before: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
⊢ ∀ (a : ℝ),
    ↑↑μ (s ∩ ({x} + a • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + a • t) < ε / 2 →
      a ∈ Ioi 0 → ↑↑μ (s ∩ ({x} + a • t)) / ↑↑μ ({x} + a • t) < ε

tactic: have I :
  μ (s ∩ ({x} + r • t)) ≤
    μ (s ∩ ({x} + r • (t ∩ closedBall 0 n))) + μ ({x} + r • (t \ closedBall 0 n)) :=
  calc
    μ (s ∩ ({x} + r • t)) =
        μ (s ∩ ({x} + r • (t ∩ closedBall 0 n)) ∪ s ∩ ({x} + r • (t \ closedBall 0 n))) :=
      by rw [← inter_union_distrib_left, ← add_union, ← smul_set_union, inter_union_diff]
    _ ≤ μ (s ∩ ({x} + r • (t ∩ closedBall 0 n))) + μ (s ∩ ({x} + r • (t \ closedBall 0 n))) :=
      (measure_union_le _ _)
    _ ≤ μ (s ∩ ({x} + r • (t ∩ closedBall 0 n))) + μ ({x} + r • (t \ closedBall 0 n)) :=
      add_le_add le_rfl (measure_mono (inter_subset_right _ _))
state_before: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε

tactic: calc
  μ (s ∩ ({x} + r • t)) / μ ({x} + r • t) ≤
      (μ (s ∩ ({x} + r • (t ∩ closedBall 0 n))) + μ ({x} + r • (t \ closedBall 0 n))) /
        μ ({x} + r • t) :=
    mul_le_mul_right' I _
  _ < ε / 2 + ε / 2 := by
    rw [ENNReal.add_div]
    apply ENNReal.add_lt_add hr _
    rwa [add_haar_singleton_add_smul_div_singleton_add_smul μ rpos.ne',
      ENNReal.div_lt_iff (Or.inl h't) (Or.inl h''t)]
  _ = ε := ENNReal.add_halves _
state_before: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε

tactic: apply eventually_of_forall fun r => ?_
state_before: case inl
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
⊢ ∀ᶠ (b : ℝ) in 𝓝[Ioi 0] 0, ↑↑μ (s ∩ ({x} + b • t)) / ↑↑μ ({x} + b • t) < ε

tactic: suffices H : μ (s ∩ ({x} + r • t)) = 0
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε

tactic: apply le_antisymm _ (zero_le _)
state_before: case H
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) = 0

tactic: calc
  μ (s ∩ ({x} + r • t)) ≤ μ ({x} + r • t) := measure_mono (inter_subset_right _ _)
  _ = 0 := by
    simp only [h't, add_haar_smul, image_add_left, measure_preimage_add, singleton_add,
      mul_zero]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ (s ∩ ({x} + r • t)) ≤ 0

tactic: rw [H]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
H : ↑↑μ (s ∩ ({x} + r • t)) = 0
⊢ ↑↑μ (s ∩ ({x} + r • t)) / ↑↑μ ({x} + r • t) < ε

tactic: simpa only [ENNReal.zero_div] using εpos
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
H : ↑↑μ (s ∩ ({x} + r • t)) = 0
⊢ 0 / ↑↑μ ({x} + r • t) < ε

tactic: simp only [h't, add_haar_smul, image_add_left, measure_preimage_add, singleton_add,
  mul_zero]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t = 0
r : ℝ
⊢ ↑↑μ ({x} + r • t) = 0

tactic: have A :
  Tendsto (fun n : ℕ => μ (t \ closedBall 0 n)) atTop
    (𝓝 (μ (⋂ n : ℕ, t \ closedBall 0 n))) := by
  have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ :=
    ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
  refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
  exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t

tactic: have : (⋂ n : ℕ, t \ closedBall 0 n) = ∅ := by
  simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl,
    iUnion_closedBall_nat, compl_univ, inter_empty]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t

tactic: simp only [this, measure_empty] at A
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
this : (⋂ (n : ℕ), t \ closedBall 0 ↑n) = ∅
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t

tactic: have I : 0 < ε / 2 * μ t := ENNReal.mul_pos (ENNReal.half_pos εpos.ne').ne' h't
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
this : (⋂ (n : ℕ), t \ closedBall 0 ↑n) = ∅
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 0)
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t

tactic: exact (Eventually.and (Ioi_mem_atTop 0) ((tendsto_order.1 A).2 _ I)).exists
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
this : (⋂ (n : ℕ), t \ closedBall 0 ↑n) = ∅
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 0)
I : 0 < ε / 2 * ↑↑μ t
⊢ ∃ n, 0 < n ∧ ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t

tactic: have N : ∃ n : ℕ, μ (t \ closedBall 0 n) ≠ ∞ :=
  ⟨0, ((measure_mono (diff_subset t _)).trans_lt h''t.lt_top).ne⟩
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
⊢ Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))

tactic: refine' tendsto_measure_iInter (fun n ↦ ht.diff measurableSet_closedBall) (fun m n hmn ↦ _) N
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
N : ∃ n, ↑↑μ (t \ closedBall 0 ↑n) ≠ ⊤
⊢ Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))

tactic: exact diff_subset_diff Subset.rfl (closedBall_subset_closedBall (Nat.cast_le.2 hmn))
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
N : ∃ n, ↑↑μ (t \ closedBall 0 ↑n) ≠ ⊤
m n : ℕ
hmn : m ≤ n
⊢ t \ closedBall 0 ↑n ≤ t \ closedBall 0 ↑m

tactic: simp_rw [diff_eq, ← inter_iInter, iInter_eq_compl_iUnion_compl, compl_compl,
  iUnion_closedBall_nat, compl_univ, inter_empty]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
A : Tendsto (fun n => ↑↑μ (t \ closedBall 0 ↑n)) atTop (𝓝 (↑↑μ (⋂ (n : ℕ), t \ closedBall 0 ↑n)))
⊢ (⋂ (n : ℕ), t \ closedBall 0 ↑n) = ∅

tactic: rw [← inter_union_distrib_left, ← add_union, ← smul_set_union, inter_union_diff]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
⊢ ↑↑μ (s ∩ ({x} + r • t)) = ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n)) ∪ s ∩ ({x} + r • (t \ closedBall 0 ↑n)))

tactic: rw [ENNReal.add_div]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ (↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) <
    ε / 2 + ε / 2

tactic: apply ENNReal.add_lt_add hr _
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) +
      ↑↑μ ({x} + r • (t \ closedBall 0 ↑n)) / ↑↑μ ({x} + r • t) <
    ε / 2 + ε / 2

tactic: rwa [add_haar_singleton_add_smul_div_singleton_add_smul μ rpos.ne',
  ENNReal.div_lt_iff (Or.inl h't) (Or.inl h''t)]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2210166
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ s : Set E
x : E
h : Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 0)
t : Set E
ht : MeasurableSet t
h''t : ↑↑μ t ≠ ⊤
ε : ℝ≥0∞
εpos : 0 < ε
h't : ↑↑μ t ≠ 0
n : ℕ
npos : 0 < n
hn : ↑↑μ (t \ closedBall 0 ↑n) < ε / 2 * ↑↑μ t
L : Tendsto (fun r => ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t)) (𝓝[Ioi 0] 0) (𝓝 0)
r : ℝ
hr : ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) / ↑↑μ ({x} + r • t) < ε / 2
rpos : 0 < r
I : ↑↑μ (s ∩ ({x} + r • t)) ≤ ↑↑μ (s ∩ ({x} + r • (t ∩ closedBall 0 ↑n))) + ↑↑μ ({x} + r • (t \ closedBall 0 ↑n))
⊢ ↑↑μ ({x} + r • (t \ closedBall 0 ↑n)) / ↑↑μ ({x} + r • t) < ε / 2