Theorem: VitaliFamily.measure_limRatioMeas_zero
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} = 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 = 0}
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] 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 = 0}
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] x, ρ u = 0
tactic: let s := {x : α | v.limRatioMeas hρ x = 0} ∩ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
⊢ ∃ u ∈ 𝓝[{x | v.limRatioMeas hρ x = 0}] 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
⊢ ρ s ≤ 0
tactic: have A : ∀ q : ℝ≥0, 0 < q → ρ s ≤ q * μ s := by
    intro q hq
    apply v.measure_le_mul_of_subset_limRatioMeas_lt hρ
    intro y hy
    have : v.limRatioMeas hρ y = 0 := hy.1
    simp only [this, mem_setOf_eq, hq, ENNReal.coe_pos]
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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 (↑0 * μ s))
⊢ ρ s ≤ 0
tactic: have B : Tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞) * μ s) (𝓝[>] (0 : ℝ≥0)) (𝓝 ((0 : ℝ≥0) * μ s)) := by
    apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
    rw [ENNReal.tendsto_coe]
    exact nhdsWithin_le_nhds
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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 (↑0 * μ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 0)
⊢ ρ s ≤ 0
tactic: simp only [zero_mul, ENNReal.coe_zero] 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 0)
⊢ ∀ᶠ (c : ℝ≥0) in 𝓝[>] 0, ρ 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 = 0}
o : Set α
xo : x ∈ o
o_open : IsOpen o
μo : μ o < ⊤
s : Set α := {x | v.limRatioMeas hρ x = 0} ∩ o
μs : μ s ≠ ⊤
A : ∀ (q : ℝ≥0), 0 < q → ρ s ≤ ↑q * μ s
B : Tendsto (fun q => ↑q * μ s) (𝓝[>] 0) (𝓝 0)
⊢ ∀ᶠ (c : ℝ≥0) in 𝓝[>] 0, ρ s ≤ ↑c * μ s
state_after: no goals
tactic: filter_upwards [self_mem_nhdsWithin] using A