[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
ν : ProbabilityMeasure Ω
⊢ (fun s => ENNReal.toNNReal (↑↑↑ν s)) univ ≠ 0
[PROOFSTEP]
simp only [coeFn_univ, Ne.def, one_ne_zero, not_false_iff]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
ν : ProbabilityMeasure Ω
s : Set Ω
⊢ ↑((fun s => ENNReal.toNNReal (↑↑↑ν s)) s) = ↑↑↑ν s
[PROOFSTEP]
rw [← coeFn_comp_toFiniteMeasure_eq_coeFn, FiniteMeasure.ennreal_coeFn_eq_coeFn_toMeasure,
  toMeasure_comp_toFiniteMeasure_eq_toMeasure]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s₁ s₂ : Set Ω
h : s₁ ⊆ s₂
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s₁ ≤ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s₂
[PROOFSTEP]
rw [← coeFn_comp_toFiniteMeasure_eq_coeFn]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s₁ s₂ : Set Ω
h : s₁ ⊆ s₂
⊢ (fun s => ENNReal.toNNReal (↑↑↑(toFiniteMeasure μ) s)) s₁ ≤ (fun s => ENNReal.toNNReal (↑↑↑(toFiniteMeasure μ) s)) s₂
[PROOFSTEP]
exact MeasureTheory.FiniteMeasure.apply_mono _ h
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
⊢ Nonempty Ω
[PROOFSTEP]
by_contra maybe_empty
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
maybe_empty : ¬Nonempty Ω
⊢ False
[PROOFSTEP]
have zero : (μ : Measure Ω) univ = 0 := by rw [univ_eq_empty_iff.mpr (not_nonempty_iff.mp maybe_empty), measure_empty]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
maybe_empty : ¬Nonempty Ω
⊢ ↑↑↑μ univ = 0
[PROOFSTEP]
rw [univ_eq_empty_iff.mpr (not_nonempty_iff.mp maybe_empty), measure_empty]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
maybe_empty : ¬Nonempty Ω
zero : ↑↑↑μ univ = 0
⊢ False
[PROOFSTEP]
rw [measure_univ] at zero
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
maybe_empty : ¬Nonempty Ω
zero : 1 = 0
⊢ False
[PROOFSTEP]
exact zero_ne_one zero.symm
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
⊢ μ = ν
[PROOFSTEP]
apply toMeasure_injective
[GOAL]
case a
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
⊢ ↑μ = ↑ν
[PROOFSTEP]
ext1 s s_mble
[GOAL]
case a.h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑↑↑μ s = ↑↑↑ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑↑↑μ s = ↑↑↑ν s
[PROOFSTEP]
exact h s s_mble
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = (fun s => ENNReal.toNNReal (↑↑↑ν s)) s
⊢ μ = ν
[PROOFSTEP]
ext1 s s_mble
[GOAL]
case h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = (fun s => ENNReal.toNNReal (↑↑↑ν s)) s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑↑↑μ s = ↑↑↑ν s
[PROOFSTEP]
simpa [ennreal_coeFn_eq_coeFn_toMeasure] using congr_arg ((↑) : ℝ≥0 → ℝ≥0∞) (h s s_mble)
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
⊢ toFiniteMeasure μ ≠ 0
[PROOFSTEP]
rw [← FiniteMeasure.mass_nonzero_iff, μ.mass_toFiniteMeasure]
[GOAL]
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
⊢ 1 ≠ 0
[PROOFSTEP]
exact one_ne_zero
[GOAL]
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → ProbabilityMeasure Ω
μ : ProbabilityMeasure Ω
⊢ Tendsto μs F (𝓝 μ) ↔ ∀ (f : Ω →ᵇ ℝ≥0), Tendsto (fun i => ∫⁻ (ω : Ω), ↑(↑f ω) ∂↑(μs i)) F (𝓝 (∫⁻ (ω : Ω), ↑(↑f ω) ∂↑μ))
[PROOFSTEP]
rw [tendsto_nhds_iff_toFiniteMeasure_tendsto_nhds]
[GOAL]
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → ProbabilityMeasure Ω
μ : ProbabilityMeasure Ω
⊢ Tendsto (toFiniteMeasure ∘ μs) F (𝓝 (toFiniteMeasure μ)) ↔
    ∀ (f : Ω →ᵇ ℝ≥0), Tendsto (fun i => ∫⁻ (ω : Ω), ↑(↑f ω) ∂↑(μs i)) F (𝓝 (∫⁻ (ω : Ω), ↑(↑f ω) ∂↑μ))
[PROOFSTEP]
exact FiniteMeasure.tendsto_iff_forall_lintegral_tendsto
[GOAL]
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → ProbabilityMeasure Ω
μ : ProbabilityMeasure Ω
⊢ Tendsto μs F (𝓝 μ) ↔ ∀ (f : Ω →ᵇ ℝ), Tendsto (fun i => ∫ (ω : Ω), ↑f ω ∂↑(μs i)) F (𝓝 (∫ (ω : Ω), ↑f ω ∂↑μ))
[PROOFSTEP]
rw [tendsto_nhds_iff_toFiniteMeasure_tendsto_nhds]
[GOAL]
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → ProbabilityMeasure Ω
μ : ProbabilityMeasure Ω
⊢ Tendsto (toFiniteMeasure ∘ μs) F (𝓝 (toFiniteMeasure μ)) ↔
    ∀ (f : Ω →ᵇ ℝ), Tendsto (fun i => ∫ (ω : Ω), ↑f ω ∂↑(μs i)) F (𝓝 (∫ (ω : Ω), ↑f ω ∂↑μ))
[PROOFSTEP]
rw [FiniteMeasure.tendsto_iff_forall_integral_tendsto]
[GOAL]
Ω : Type u_1
inst✝² : MeasurableSpace Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → ProbabilityMeasure Ω
μ : ProbabilityMeasure Ω
⊢ (∀ (f : Ω →ᵇ ℝ),
      Tendsto (fun i => ∫ (x : Ω), ↑f x ∂↑((toFiniteMeasure ∘ μs) i)) F (𝓝 (∫ (x : Ω), ↑f x ∂↑(toFiniteMeasure μ)))) ↔
    ∀ (f : Ω →ᵇ ℝ), Tendsto (fun i => ∫ (ω : Ω), ↑f ω ∂↑(μs i)) F (𝓝 (∫ (ω : Ω), ↑f ω ∂↑μ))
[PROOFSTEP]
rfl
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
zero : ¬mass μ = 0
⊢ IsProbabilityMeasure ↑((mass μ)⁻¹ • μ)
[PROOFSTEP]
refine'
  ⟨_⟩
    -- porting note: paying the price that this isn't `simp` lemma now.
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
zero : ¬mass μ = 0
⊢ ↑↑↑((mass μ)⁻¹ • μ) univ = 1
[PROOFSTEP]
rw [FiniteMeasure.toMeasure_smul]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
zero : ¬mass μ = 0
⊢ ↑↑((mass μ)⁻¹ • ↑μ) univ = 1
[PROOFSTEP]
simp only [Measure.smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply, Measure.nnreal_smul_coe_apply, ne_eq,
  mass_zero_iff, ENNReal.coe_inv zero, ennreal_mass]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
zero : ¬mass μ = 0
⊢ (↑↑↑μ univ)⁻¹ * ↑↑↑μ univ = 1
[PROOFSTEP]
rw [← Ne.def, ← ENNReal.coe_ne_zero, ennreal_mass] at zero
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
zero : ↑↑↑μ univ ≠ 0
⊢ (↑↑↑μ univ)⁻¹ * ↑↑↑μ univ = 1
[PROOFSTEP]
exact ENNReal.inv_mul_cancel zero μ.prop.measure_univ_lt_top.ne
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = mass μ * (fun s => ENNReal.toNNReal (↑↑↑(normalize μ) s)) s
[PROOFSTEP]
obtain rfl | h := eq_or_ne μ 0
[GOAL]
case inl
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
s : Set Ω
⊢ (fun s => ENNReal.toNNReal (↑↑↑0 s)) s = mass 0 * (fun s => ENNReal.toNNReal (↑↑↑(normalize 0) s)) s
[PROOFSTEP]
simp only [zero_mass, coeFn_zero, Pi.zero_apply, zero_mul]
[GOAL]
case inl
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
s : Set Ω
⊢ ENNReal.toNNReal (↑↑↑0 s) = 0
[PROOFSTEP]
rfl
[GOAL]
case inr
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
h : μ ≠ 0
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = mass μ * (fun s => ENNReal.toNNReal (↑↑↑(normalize μ) s)) s
[PROOFSTEP]
have mass_nonzero : μ.mass ≠ 0 := by rwa [μ.mass_nonzero_iff]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
h : μ ≠ 0
⊢ mass μ ≠ 0
[PROOFSTEP]
rwa [μ.mass_nonzero_iff]
[GOAL]
case inr
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
h : μ ≠ 0
mass_nonzero : mass μ ≠ 0
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = mass μ * (fun s => ENNReal.toNNReal (↑↑↑(normalize μ) s)) s
[PROOFSTEP]
simp only [normalize, dif_neg mass_nonzero]
[GOAL]
case inr
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
h : μ ≠ 0
mass_nonzero : mass μ ≠ 0
⊢ ENNReal.toNNReal (↑↑↑μ s) =
    mass μ *
      ENNReal.toNNReal (↑↑↑{ val := ↑((mass μ)⁻¹ • μ), property := (_ : IsProbabilityMeasure ↑((mass μ)⁻¹ • μ)) } s)
[PROOFSTEP]
change μ s = mass μ * ((mass μ)⁻¹ • μ) s
[GOAL]
case inr
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
h : μ ≠ 0
mass_nonzero : mass μ ≠ 0
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s = mass μ * (fun s => ENNReal.toNNReal (↑↑↑((mass μ)⁻¹ • μ) s)) s
[PROOFSTEP]
simp only [toMeasure_smul, Measure.smul_toOuterMeasure, OuterMeasure.coe_smul, Pi.smul_apply,
  Measure.nnreal_smul_coe_apply, ne_eq, mass_zero_iff, ENNReal.toNNReal_mul, ENNReal.toNNReal_coe,
  mul_inv_cancel_left₀ mass_nonzero]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
⊢ μ = mass μ • ProbabilityMeasure.toFiniteMeasure (normalize μ)
[PROOFSTEP]
apply eq_of_forall_apply_eq
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
⊢ ∀ (s : Set Ω),
    MeasurableSet s →
      (fun s => ENNReal.toNNReal (↑↑↑μ s)) s =
        (fun s => ENNReal.toNNReal (↑↑↑(mass μ • ProbabilityMeasure.toFiniteMeasure (normalize μ)) s)) s
[PROOFSTEP]
intro s _s_mble
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
s : Set Ω
_s_mble : MeasurableSet s
⊢ (fun s => ENNReal.toNNReal (↑↑↑μ s)) s =
    (fun s => ENNReal.toNNReal (↑↑↑(mass μ • ProbabilityMeasure.toFiniteMeasure (normalize μ)) s)) s
[PROOFSTEP]
rw [μ.self_eq_mass_mul_normalize s, coeFn_smul_apply, smul_eq_mul,
  ProbabilityMeasure.coeFn_comp_toFiniteMeasure_eq_coeFn]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
s : Set Ω
⊢ (fun s => ENNReal.toNNReal (↑↑↑(normalize μ) s)) s = (mass μ)⁻¹ * (fun s => ENNReal.toNNReal (↑↑↑μ s)) s
[PROOFSTEP]
simp only [μ.self_eq_mass_mul_normalize, μ.mass_nonzero_iff.mpr nonzero, inv_mul_cancel_left₀, Ne.def, not_false_iff]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ ProbabilityMeasure.toFiniteMeasure (normalize μ) = (mass μ)⁻¹ • μ
[PROOFSTEP]
nth_rw 3 [μ.self_eq_mass_smul_normalize]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ ProbabilityMeasure.toFiniteMeasure (normalize μ) =
    (mass μ)⁻¹ • mass μ • ProbabilityMeasure.toFiniteMeasure (normalize μ)
[PROOFSTEP]
rw [← smul_assoc]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ ProbabilityMeasure.toFiniteMeasure (normalize μ) =
    ((mass μ)⁻¹ • mass μ) • ProbabilityMeasure.toFiniteMeasure (normalize μ)
[PROOFSTEP]
simp only [μ.mass_nonzero_iff.mpr nonzero, Algebra.id.smul_eq_mul, inv_mul_cancel, Ne.def, not_false_iff, one_smul]
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ ↑(normalize μ) = ↑((mass μ)⁻¹ • μ)
[PROOFSTEP]
ext1 s _s_mble
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
s : Set Ω
_s_mble : MeasurableSet s
⊢ ↑↑↑(normalize μ) s = ↑↑↑((mass μ)⁻¹ • μ) s
[PROOFSTEP]
rw [← μ.normalize.ennreal_coeFn_eq_coeFn_toMeasure s, μ.normalize_eq_of_nonzero nonzero s, ENNReal.coe_mul,
  ennreal_coeFn_eq_coeFn_toMeasure]
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
s : Set Ω
_s_mble : MeasurableSet s
⊢ ↑(mass μ)⁻¹ * ↑↑↑μ s = ↑↑↑((mass μ)⁻¹ • μ) s
[PROOFSTEP]
exact Measure.coe_nnreal_smul_apply _ _ _
[GOAL]
Ω : Type u_1
inst✝ : Nonempty Ω
m0✝ : MeasurableSpace Ω
μ✝ : FiniteMeasure Ω
m0 : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
⊢ normalize (ProbabilityMeasure.toFiniteMeasure μ) = μ
[PROOFSTEP]
apply ProbabilityMeasure.eq_of_forall_apply_eq
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0✝ : MeasurableSpace Ω
μ✝ : FiniteMeasure Ω
m0 : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
⊢ ∀ (s : Set Ω),
    MeasurableSet s →
      (fun s => ENNReal.toNNReal (↑↑↑(normalize (ProbabilityMeasure.toFiniteMeasure μ)) s)) s =
        (fun s => ENNReal.toNNReal (↑↑↑μ s)) s
[PROOFSTEP]
intro s _s_mble
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0✝ : MeasurableSpace Ω
μ✝ : FiniteMeasure Ω
m0 : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s : Set Ω
_s_mble : MeasurableSet s
⊢ (fun s => ENNReal.toNNReal (↑↑↑(normalize (ProbabilityMeasure.toFiniteMeasure μ)) s)) s =
    (fun s => ENNReal.toNNReal (↑↑↑μ s)) s
[PROOFSTEP]
rw [μ.toFiniteMeasure.normalize_eq_of_nonzero μ.toFiniteMeasure_nonzero s]
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0✝ : MeasurableSpace Ω
μ✝ : FiniteMeasure Ω
m0 : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s : Set Ω
_s_mble : MeasurableSet s
⊢ (mass (ProbabilityMeasure.toFiniteMeasure μ))⁻¹ *
      (fun s => ENNReal.toNNReal (↑↑↑(ProbabilityMeasure.toFiniteMeasure μ) s)) s =
    (fun s => ENNReal.toNNReal (↑↑↑μ s)) s
[PROOFSTEP]
simp only [ProbabilityMeasure.mass_toFiniteMeasure, inv_one, one_mul]
[GOAL]
case h
Ω : Type u_1
inst✝ : Nonempty Ω
m0✝ : MeasurableSpace Ω
μ✝ : FiniteMeasure Ω
m0 : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s : Set Ω
_s_mble : MeasurableSet s
⊢ ENNReal.toNNReal (↑↑↑(ProbabilityMeasure.toFiniteMeasure μ) s) = ENNReal.toNNReal (↑↑↑μ s)
[PROOFSTEP]
congr
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
nonzero : μ ≠ 0
f : Ω → E
⊢ average (↑μ) f = ∫ (ω : Ω), f ω ∂↑(normalize μ)
[PROOFSTEP]
rw [μ.toMeasure_normalize_eq_of_nonzero nonzero, average]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
nonzero : μ ≠ 0
f : Ω → E
⊢ ∫ (x : Ω), f x ∂(↑↑↑μ univ)⁻¹ • ↑μ = ∫ (ω : Ω), f ω ∂↑((mass μ)⁻¹ • μ)
[PROOFSTEP]
congr
[GOAL]
case e_μ.e_a
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
nonzero : μ ≠ 0
f : Ω → E
⊢ (↑↑↑μ univ)⁻¹ = ↑ENNReal.ofNNRealHom (mass μ)⁻¹
[PROOFSTEP]
simp only [RingHom.toFun_eq_coe, ENNReal.coe_ofNNRealHom, ENNReal.coe_inv (μ.mass_nonzero_iff.mpr nonzero),
  ennreal_mass]
[GOAL]
Ω : Type u_1
inst✝¹ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝ : TopologicalSpace Ω
f : Ω →ᵇ ℝ≥0
⊢ testAgainstNN μ f = mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f
[PROOFSTEP]
nth_rw 1 [μ.self_eq_mass_smul_normalize]
[GOAL]
Ω : Type u_1
inst✝¹ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝ : TopologicalSpace Ω
f : Ω →ᵇ ℝ≥0
⊢ testAgainstNN (mass μ • ProbabilityMeasure.toFiniteMeasure (normalize μ)) f =
    mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f
[PROOFSTEP]
rw [μ.normalize.toFiniteMeasure.smul_testAgainstNN_apply μ.mass f, smul_eq_mul]
[GOAL]
Ω : Type u_1
inst✝¹ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝ : TopologicalSpace Ω
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
⊢ testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f = (mass μ)⁻¹ * testAgainstNN μ f
[PROOFSTEP]
simp [μ.testAgainstNN_eq_mass_mul, inv_mul_cancel_left₀ <| μ.mass_nonzero_iff.mpr nonzero]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
⊢ Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 (testAgainstNN μ f))
[PROOFSTEP]
by_cases h_mass : μ.mass = 0
[GOAL]
case pos
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : mass μ = 0
⊢ Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 (testAgainstNN μ f))
[PROOFSTEP]
simp only [μ.mass_zero_iff.mp h_mass, zero_testAgainstNN_apply, zero_mass, eq_self_iff_true] at *
[GOAL]
case pos
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
f : Ω →ᵇ ℝ≥0
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize 0))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 0)
h_mass : True
⊢ Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 0)
[PROOFSTEP]
exact tendsto_zero_testAgainstNN_of_tendsto_zero_mass mass_lim f
[GOAL]
case neg
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : ¬mass μ = 0
⊢ Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 (testAgainstNN μ f))
[PROOFSTEP]
simp_rw [fun i => (μs i).testAgainstNN_eq_mass_mul f, μ.testAgainstNN_eq_mass_mul f]
[GOAL]
case neg
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : ¬mass μ = 0
⊢ Tendsto (fun i => mass (μs i) * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
rw [ProbabilityMeasure.tendsto_nhds_iff_toFiniteMeasure_tendsto_nhds] at μs_lim
[GOAL]
case neg
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim :
  Tendsto (ProbabilityMeasure.toFiniteMeasure ∘ fun i => normalize (μs i)) F
    (𝓝 (ProbabilityMeasure.toFiniteMeasure (normalize μ)))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : ¬mass μ = 0
⊢ Tendsto (fun i => mass (μs i) * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
rw [tendsto_iff_forall_testAgainstNN_tendsto] at μs_lim
[GOAL]
case neg
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim :
  ∀ (f : Ω →ᵇ ℝ≥0),
    Tendsto (fun i => testAgainstNN ((ProbabilityMeasure.toFiniteMeasure ∘ fun i => normalize (μs i)) i) f) F
      (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : ¬mass μ = 0
⊢ Tendsto (fun i => mass (μs i) * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
have lim_pair :
  Tendsto (fun i => (⟨(μs i).mass, (μs i).normalize.toFiniteMeasure.testAgainstNN f⟩ : ℝ≥0 × ℝ≥0)) F
    (𝓝 ⟨μ.mass, μ.normalize.toFiniteMeasure.testAgainstNN f⟩) :=
  (Prod.tendsto_iff _ _).mpr ⟨mass_lim, μs_lim f⟩
[GOAL]
case neg
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim :
  ∀ (f : Ω →ᵇ ℝ≥0),
    Tendsto (fun i => testAgainstNN ((ProbabilityMeasure.toFiniteMeasure ∘ fun i => normalize (μs i)) i) f) F
      (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
f : Ω →ᵇ ℝ≥0
h_mass : ¬mass μ = 0
lim_pair :
  Tendsto (fun i => (mass (μs i), testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f)) F
    (𝓝 (mass μ, testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
⊢ Tendsto (fun i => mass (μs i) * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (mass μ * testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
exact tendsto_mul.comp lim_pair
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
⊢ Tendsto (fun i => testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
have lim_mass := μs_lim.mass
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
⊢ Tendsto (fun i => testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
have aux : {(0 : ℝ≥0)}ᶜ ∈ 𝓝 μ.mass := isOpen_compl_singleton.mem_nhds (μ.mass_nonzero_iff.mpr nonzero)
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
⊢ Tendsto (fun i => testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
have eventually_nonzero : ∀ᶠ i in F, μs i ≠ 0 :=
  by
  simp_rw [← mass_nonzero_iff]
  exact lim_mass aux
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
⊢ ∀ᶠ (i : γ) in F, μs i ≠ 0
[PROOFSTEP]
simp_rw [← mass_nonzero_iff]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
⊢ ∀ᶠ (i : γ) in F, mass (μs i) ≠ 0
[PROOFSTEP]
exact lim_mass aux
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
⊢ Tendsto (fun i => testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
have eve : ∀ᶠ i in F, (μs i).normalize.toFiniteMeasure.testAgainstNN f = (μs i).mass⁻¹ * (μs i).testAgainstNN f :=
  by
  filter_upwards [eventually_iff.mp eventually_nonzero]
  intro i hi
  apply normalize_testAgainstNN _ hi
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
⊢ ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
[PROOFSTEP]
filter_upwards [eventually_iff.mp eventually_nonzero]
[GOAL]
case h
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
⊢ ∀ (a : γ),
    μs a ≠ 0 →
      testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs a))) f = (mass (μs a))⁻¹ * testAgainstNN (μs a) f
[PROOFSTEP]
intro i hi
[GOAL]
case h
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
i : γ
hi : μs i ≠ 0
⊢ testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
[PROOFSTEP]
apply normalize_testAgainstNN _ hi
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
⊢ Tendsto (fun i => testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f) F
    (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
simp_rw [tendsto_congr' eve, μ.normalize_testAgainstNN nonzero]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
⊢ Tendsto (fun x => (mass (μs x))⁻¹ * testAgainstNN (μs x) f) F (𝓝 ((mass μ)⁻¹ * testAgainstNN μ f))
[PROOFSTEP]
have lim_pair :
  Tendsto (fun i => (⟨(μs i).mass⁻¹, (μs i).testAgainstNN f⟩ : ℝ≥0 × ℝ≥0)) F (𝓝 ⟨μ.mass⁻¹, μ.testAgainstNN f⟩) :=
  by
  refine' (Prod.tendsto_iff _ _).mpr ⟨_, _⟩
  · exact (continuousOn_inv₀.continuousAt aux).tendsto.comp lim_mass
  · exact tendsto_iff_forall_testAgainstNN_tendsto.mp μs_lim f
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
⊢ Tendsto (fun i => ((mass (μs i))⁻¹, testAgainstNN (μs i) f)) F (𝓝 ((mass μ)⁻¹, testAgainstNN μ f))
[PROOFSTEP]
refine' (Prod.tendsto_iff _ _).mpr ⟨_, _⟩
[GOAL]
case refine'_1
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
⊢ Tendsto (fun n => ((mass (μs n))⁻¹, testAgainstNN (μs n) f).fst) F (𝓝 ((mass μ)⁻¹, testAgainstNN μ f).fst)
[PROOFSTEP]
exact (continuousOn_inv₀.continuousAt aux).tendsto.comp lim_mass
[GOAL]
case refine'_2
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
⊢ Tendsto (fun n => ((mass (μs n))⁻¹, testAgainstNN (μs n) f).snd) F (𝓝 ((mass μ)⁻¹, testAgainstNN μ f).snd)
[PROOFSTEP]
exact tendsto_iff_forall_testAgainstNN_tendsto.mp μs_lim f
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
lim_mass : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
aux : {0}ᶜ ∈ 𝓝 (mass μ)
eventually_nonzero : ∀ᶠ (i : γ) in F, μs i ≠ 0
eve :
  ∀ᶠ (i : γ) in F,
    testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize (μs i))) f = (mass (μs i))⁻¹ * testAgainstNN (μs i) f
lim_pair : Tendsto (fun i => ((mass (μs i))⁻¹, testAgainstNN (μs i) f)) F (𝓝 ((mass μ)⁻¹, testAgainstNN μ f))
⊢ Tendsto (fun x => (mass (μs x))⁻¹ * testAgainstNN (μs x) f) F (𝓝 ((mass μ)⁻¹ * testAgainstNN μ f))
[PROOFSTEP]
exact tendsto_mul.comp lim_pair
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
⊢ Tendsto μs F (𝓝 μ)
[PROOFSTEP]
rw [tendsto_iff_forall_testAgainstNN_tendsto]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
⊢ ∀ (f : Ω →ᵇ ℝ≥0), Tendsto (fun i => testAgainstNN (μs i) f) F (𝓝 (testAgainstNN μ f))
[PROOFSTEP]
exact fun f => tendsto_testAgainstNN_of_tendsto_normalize_testAgainstNN_of_tendsto_mass μs_lim mass_lim f
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
⊢ Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
[PROOFSTEP]
rw [ProbabilityMeasure.tendsto_nhds_iff_toFiniteMeasure_tendsto_nhds, tendsto_iff_forall_testAgainstNN_tendsto]
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
μs_lim : Tendsto μs F (𝓝 μ)
nonzero : μ ≠ 0
⊢ ∀ (f : Ω →ᵇ ℝ≥0),
    Tendsto (fun i => testAgainstNN ((ProbabilityMeasure.toFiniteMeasure ∘ fun i => normalize (μs i)) i) f) F
      (𝓝 (testAgainstNN (ProbabilityMeasure.toFiniteMeasure (normalize μ)) f))
[PROOFSTEP]
exact fun f => tendsto_normalize_testAgainstNN_of_tendsto μs_lim nonzero f
[GOAL]
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ)) ∧ Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ)) ↔
    Tendsto μs F (𝓝 μ)
[PROOFSTEP]
constructor
[GOAL]
case mp
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ)) ∧ Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ)) →
    Tendsto μs F (𝓝 μ)
[PROOFSTEP]
rintro ⟨normalized_lim, mass_lim⟩
[GOAL]
case mp.intro
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
nonzero : μ ≠ 0
normalized_lim : Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ))
mass_lim : Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
⊢ Tendsto μs F (𝓝 μ)
[PROOFSTEP]
exact tendsto_of_tendsto_normalize_testAgainstNN_of_tendsto_mass normalized_lim mass_lim
[GOAL]
case mpr
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ Tendsto μs F (𝓝 μ) →
    Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ)) ∧ Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
[PROOFSTEP]
intro μs_lim
[GOAL]
case mpr
Ω : Type u_1
inst✝² : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝¹ : TopologicalSpace Ω
inst✝ : OpensMeasurableSpace Ω
γ : Type u_2
F : Filter γ
μs : γ → FiniteMeasure Ω
nonzero : μ ≠ 0
μs_lim : Tendsto μs F (𝓝 μ)
⊢ Tendsto (fun i => normalize (μs i)) F (𝓝 (normalize μ)) ∧ Tendsto (fun i => mass (μs i)) F (𝓝 (mass μ))
[PROOFSTEP]
refine' ⟨tendsto_normalize_of_tendsto μs_lim nonzero, μs_lim.mass⟩