Theorem: MeasureTheory.FiniteMeasure.tendsto_zero_testAgainstNN_of_tendsto_zero_mass
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: apply tendsto_iff_dist_tendsto_zero.mpr
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
⊢ Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 0)

tactic: have obs := fun i => (μs i).testAgainstNN_lipschitz_estimate f 0
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
⊢ Tendsto (fun b => dist (testAgainstNN (μs b) f) 0) F (𝓝 0)

tactic: simp_rw [testAgainstNN_zero, zero_add] at obs
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ testAgainstNN (μs i) 0 + nndist f 0 * mass (μs i)
⊢ Tendsto (fun b => dist (testAgainstNN (μs b) f) 0) F (𝓝 0)

tactic: simp_rw [show ∀ i, dist ((μs i).testAgainstNN f) 0 = (μs i).testAgainstNN f by
    simp only [dist_nndist, NNReal.nndist_zero_eq_val', eq_self_iff_true, imp_true_iff]]
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun b => dist (testAgainstNN (μs b) f) 0) F (𝓝 0)

tactic: refine' squeeze_zero (fun i => NNReal.coe_nonneg _) obs _
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun b => ↑(testAgainstNN (μs b) f)) F (𝓝 0)

tactic: simp_rw [NNReal.coe_mul]
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun t => (fun a => ↑a) (nndist f 0 * mass (μs t))) F (𝓝 0)

tactic: have lim_pair : Tendsto (fun i => (⟨nndist f 0, (μs i).mass⟩ : ℝ × ℝ)) F (𝓝 ⟨nndist f 0, 0⟩) := by
  refine' (Prod.tendsto_iff _ _).mpr ⟨tendsto_const_nhds, _⟩
  exact (NNReal.continuous_coe.tendsto 0).comp mass_lim
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun t => ↑(nndist f 0 * mass (μs t))) F (𝓝 0)

tactic: have key := tendsto_mul.comp lim_pair
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
lim_pair : Tendsto (fun i => (↑(nndist f 0), ↑(mass (μs i)))) F (𝓝 (↑(nndist f 0), 0))
⊢ Tendsto (fun t => ↑(nndist f 0 * mass (μs t))) F (𝓝 0)

tactic: rwa [MulZeroClass.mul_zero] at key
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
lim_pair : Tendsto (fun i => (↑(nndist f 0), ↑(mass (μs i)))) F (𝓝 (↑(nndist f 0), 0))
key : Tendsto ((fun p => p.fst * p.snd) ∘ fun i => (↑(nndist f 0), ↑(mass (μs i)))) F (𝓝 (↑(nndist f 0) * 0))
⊢ Tendsto (fun t => ↑(nndist f 0 * mass (μs t))) F (𝓝 0)

tactic: simp only [dist_nndist, NNReal.nndist_zero_eq_val', eq_self_iff_true, imp_true_iff]
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ ∀ (i : γ), dist (testAgainstNN (μs i) f) 0 = ↑(testAgainstNN (μs i) f)

tactic: refine' (Prod.tendsto_iff _ _).mpr ⟨tendsto_const_nhds, _⟩
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun i => (↑(nndist f 0), ↑(mass (μs i)))) F (𝓝 (↑(nndist f 0), 0))

tactic: exact (NNReal.continuous_coe.tendsto 0).comp mass_lim
state_before: Ω : Type u_2
inst✝⁶ : MeasurableSpace Ω
R : Type ?u.143739
inst✝⁵ : SMul R ℝ≥0
inst✝⁴ : SMul R ℝ≥0∞
inst✝³ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_1
F : Filter γ
μs : γ → FiniteMeasure Ω
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
f : Ω →ᵇ ℝ≥0
obs : ∀ (i : γ), testAgainstNN (μs i) f ≤ nndist f 0 * mass (μs i)
⊢ Tendsto (fun n => (↑(nndist f 0), ↑(mass (μs n))).snd) F (𝓝 (↑(nndist f 0), 0).snd)