Theorem: Besicovitch.tendsto_filterAt
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: intro s hs
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
⊢ Tendsto (fun r => closedBall x r) (𝓝[Ioi 0] 0) (VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x)

tactic: simp only [mem_map]
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
⊢ s ∈ map (fun r => closedBall x r) (𝓝[Ioi 0] 0)

tactic: obtain ⟨ε, εpos, hε⟩ :
  ∃ (ε : ℝ), ε > 0 ∧
    ∀ a : Set α, a ∈ (Besicovitch.vitaliFamily μ).setsAt x → a ⊆ closedBall x ε → a ∈ s :=
  (VitaliFamily.mem_filterAt_iff _).1 hs
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
⊢ (fun r => closedBall x r) ⁻¹' s ∈ 𝓝[Ioi 0] 0

tactic: have : Ioc (0 : ℝ) ε ∈ 𝓝[>] (0 : ℝ) := Ioc_mem_nhdsWithin_Ioi ⟨le_rfl, εpos⟩
state_before: case intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
ε : ℝ
εpos : ε > 0
hε : ∀ (a : Set α), a ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x → a ⊆ closedBall x ε → a ∈ s
⊢ (fun r => closedBall x r) ⁻¹' s ∈ 𝓝[Ioi 0] 0

tactic: filter_upwards [this] with _ hr
state_before: case intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
ε : ℝ
εpos : ε > 0
hε : ∀ (a : Set α), a ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x → a ⊆ closedBall x ε → a ∈ s
this : Ioc 0 ε ∈ 𝓝[Ioi 0] 0
⊢ (fun r => closedBall x r) ⁻¹' s ∈ 𝓝[Ioi 0] 0

tactic: apply hε
state_before: case h
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
ε : ℝ
εpos : ε > 0
hε : ∀ (a : Set α), a ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x → a ⊆ closedBall x ε → a ∈ s
this : Ioc 0 ε ∈ 𝓝[Ioi 0] 0
a✝ : ℝ
hr : a✝ ∈ Ioc 0 ε
⊢ a✝ ∈ (fun r => closedBall x r) ⁻¹' s

tactic: exact mem_image_of_mem _ hr.1
state_before: case h.a
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
ε : ℝ
εpos : ε > 0
hε : ∀ (a : Set α), a ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x → a ⊆ closedBall x ε → a ∈ s
this : Ioc 0 ε ∈ 𝓝[Ioi 0] 0
a✝ : ℝ
hr : a✝ ∈ Ioc 0 ε
⊢ (fun r => closedBall x r) a✝ ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x

tactic: exact closedBall_subset_closedBall hr.2
state_before: case h.a
α : Type u_1
inst✝⁵ : MetricSpace α
β : Type u
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : HasBesicovitchCovering α
μ : MeasureTheory.Measure α
inst✝ : SigmaFinite μ
x : α
s : Set (Set α)
hs : s ∈ VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x
ε : ℝ
εpos : ε > 0
hε : ∀ (a : Set α), a ∈ VitaliFamily.setsAt (Besicovitch.vitaliFamily μ) x → a ⊆ closedBall x ε → a ∈ s
this : Ioc 0 ε ∈ 𝓝[Ioi 0] 0
a✝ : ℝ
hr : a✝ ∈ Ioc 0 ε
⊢ (fun r => closedBall x r) a✝ ⊆ closedBall x ε