Theorem: VitaliFamily.measure_limRatioMeas_top
File: Mathlib/MeasureTheory/Covering/Differentiation.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
⊢ μ {x | v.limRatioMeas hρ x = ⊤} = 0
state_after: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
tactic: refine measure_null_of_locally_null _ fun x _ => ?_
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
tactic: obtain ⟨o, xo, o_open, μo⟩ : ∃ o : Set α, x ∈ o ∧ IsOpen o ∧ ρ o < ∞ :=
    Measure.exists_isOpen_measure_lt_top ρ x
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
tactic: let s := {x : α | v.limRatioMeas hρ x = ∞} ∩ o
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = ⊤}] x, μ u = 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
⊢ μ s ≤ 0
tactic: refine ⟨s, inter_mem_nhdsWithin _ (o_open.mem_nhds xo), le_antisymm ?_ bot_le⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
⊢ μ s ≤ 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
⊢ μ s ≤ 0
tactic: have ρs : ρ s ≠ ∞ := ((measure_mono inter_subset_right).trans_lt μo).ne
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
⊢ μ s ≤ 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 (⊤⁻¹ * ρ s))
⊢ μ s ≤ 0
tactic: have B : Tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞)⁻¹ * ρ s) atTop (𝓝 (∞⁻¹ * ρ s)) := by
    apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
    exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 (⊤⁻¹ * ρ s))
⊢ μ s ≤ 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 0)
⊢ μ s ≤ 0
tactic: simp only [zero_mul, ENNReal.inv_top] at B
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 0)
⊢ μ s ≤ 0
state_after: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 0)
⊢ ∀ᶠ (c : ℝ≥0) in atTop, μ s ≤ (↑c)⁻¹ * ρ s
tactic: apply ge_of_tendsto B
state_before: case intro.intro.intro
α : Type u_1
inst✝⁵ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
ρ : Measure α
inst✝ : IsLocallyFiniteMeasure ρ
hρ : ρ ≪ μ
x : α
x✝ : x ∈ {x | v.limRatioMeas hρ x = ⊤}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : ρ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = ⊤} ∩ o
ρs : ρ s ≠ ⊤
A : ∀ (q : ℝ≥0), 1 ≤ q → μ s ≤ (↑q)⁻¹ * ρ s
B : Tendsto (fun q => (↑q)⁻¹ * ρ s) atTop (𝓝 0)
⊢ ∀ᶠ (c : ℝ≥0) in atTop, μ s ≤ (↑c)⁻¹ * ρ s
state_after: no goals
tactic: exact eventually_atTop.2 ⟨1, A⟩