Theorem: MeasureTheory.tendsto_integral_meas_thickening_le
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

tactic: apply tendsto_integral_filter_of_dominated_convergence (G := ℝ) (μ := volume.restrict A)
      (F := fun ε t ↦ (μ (thickening ε {a | t ≤ f a}))) (f := fun t ↦ (μ {a | t ≤ f a})) 1
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ Tendsto (fun ε => ∫ (t : ℝ) in A, (↑(μ (thickening ε {a | t ≤ f a}))).toReal) (𝓝[>] 0)
    (𝓝 (∫ (t : ℝ) in A, (↑(μ {a | t ≤ f a})).toReal))
state_after: case hF_meas
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᶠ (n : ℝ) in 𝓝[>] 0, AEStronglyMeasurable (fun t => ↑(μ (thickening n {a | t ≤ f a}))) (volume.restrict A)

case h_bound
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᶠ (n : ℝ) in 𝓝[>] 0, ∀ᵐ (a : ℝ) ∂volume.restrict A, ‖↑(μ (thickening n {a_1 | a ≤ f a_1}))‖ ≤ 1 a

case bound_integrable
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ Integrable 1 (volume.restrict A)

case h_lim
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᵐ (a : ℝ) ∂volume.restrict A,
    Tendsto (fun n => ↑(μ (thickening n {a_1 | a ≤ f a_1}))) (𝓝[>] 0) (𝓝 ↑(μ {a_1 | a ≤ f a_1}))

tactic: apply eventually_of_forall fun n ↦ Measurable.aestronglyMeasurable ?_
state_before: case hF_meas
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᶠ (n : ℝ) in 𝓝[>] 0, AEStronglyMeasurable (fun t => ↑(μ (thickening n {a | t ≤ f a}))) (volume.restrict A)
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n : ℝ
⊢ Measurable fun t => ↑(μ (thickening n {a | t ≤ f a}))

tactic: simp only [measurable_coe_nnreal_real_iff]
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n : ℝ
⊢ Measurable fun t => ↑(μ (thickening n {a | t ≤ f a}))
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n : ℝ
⊢ Measurable fun x => μ (thickening n {a | x ≤ f a})

tactic: apply measurable_toNNReal.comp <| Antitone.measurable (fun s t hst ↦ ?_)
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n : ℝ
⊢ Measurable fun x => μ (thickening n {a | x ≤ f a})
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n s t : ℝ
hst : s ≤ t
⊢ ↑μ (thickening n {a | t ≤ f a}) ≤ ↑μ (thickening n {a | s ≤ f a})

tactic: exact measure_mono <| thickening_subset_of_subset _ <| fun ω h ↦ hst.trans h
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
n s t : ℝ
hst : s ≤ t
⊢ ↑μ (thickening n {a | t ≤ f a}) ≤ ↑μ (thickening n {a | s ≤ f a})
state_after: no goals

tactic: apply eventually_of_forall (fun i ↦ ?_)
state_before: case h_bound
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᶠ (n : ℝ) in 𝓝[>] 0, ∀ᵐ (a : ℝ) ∂volume.restrict A, ‖↑(μ (thickening n {a_1 | a ≤ f a_1}))‖ ≤ 1 a
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i : ℝ
⊢ ∀ᵐ (a : ℝ) ∂volume.restrict A, ‖↑(μ (thickening i {a_1 | a ≤ f a_1}))‖ ≤ 1 a

tactic: apply eventually_of_forall (fun t ↦ ?_)
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i : ℝ
⊢ ∀ᵐ (a : ℝ) ∂volume.restrict A, ‖↑(μ (thickening i {a_1 | a ≤ f a_1}))‖ ≤ 1 a
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i t : ℝ
⊢ ‖↑(μ (thickening i {a | t ≤ f a}))‖ ≤ 1 t

tactic: simp only [Real.norm_eq_abs, NNReal.abs_eq, Pi.one_apply]
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i t : ℝ
⊢ ‖↑(μ (thickening i {a | t ≤ f a}))‖ ≤ 1 t
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i t : ℝ
⊢ ↑(μ (thickening i {a | t ≤ f a})) ≤ 1

tactic: exact (ENNReal.toReal_le_toReal (measure_ne_top _ _) one_ne_top).mpr prob_le_one
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
i t : ℝ
⊢ ↑(μ (thickening i {a | t ≤ f a})) ≤ 1
state_after: no goals

tactic: have aux : IsFiniteMeasure (volume.restrict A) := ⟨by simp [lt_top_iff_ne_top, A_finmeas]⟩
state_before: case bound_integrable
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ Integrable 1 (volume.restrict A)
state_after: case bound_integrable
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
aux : IsFiniteMeasure (volume.restrict A)
⊢ Integrable 1 (volume.restrict A)

tactic: apply integrable_const
state_before: case bound_integrable
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
aux : IsFiniteMeasure (volume.restrict A)
⊢ Integrable 1 (volume.restrict A)
state_after: no goals

tactic: simp [lt_top_iff_ne_top, A_finmeas]
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ (volume.restrict A) univ < ⊤
state_after: no goals

tactic: apply eventually_of_forall (fun t ↦ ?_)
state_before: case h_lim
ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
⊢ ∀ᵐ (a : ℝ) ∂volume.restrict A,
    Tendsto (fun n => ↑(μ (thickening n {a_1 | a ≤ f a_1}))) (𝓝[>] 0) (𝓝 ↑(μ {a_1 | a ≤ f a_1}))
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun n => ↑(μ (thickening n {a | t ≤ f a}))) (𝓝[>] 0) (𝓝 ↑(μ {a | t ≤ f a}))

tactic: simp only [NNReal.tendsto_coe]
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun n => ↑(μ (thickening n {a | t ≤ f a}))) (𝓝[>] 0) (𝓝 ↑(μ {a | t ≤ f a}))
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun a => μ (thickening a {a | t ≤ f a})) (𝓝[>] 0) (𝓝 (μ {a | t ≤ f a}))

tactic: apply (ENNReal.tendsto_toNNReal _).comp
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun a => μ (thickening a {a | t ≤ f a})) (𝓝[>] 0) (𝓝 (μ {a | t ≤ f a}))
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun a => ↑μ (thickening a {a | t ≤ f a})) (𝓝[>] 0) (𝓝 (↑μ {a | t ≤ f a}))

ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ ↑μ {a | t ≤ f a} ≠ ⊤

tactic: apply tendsto_measure_thickening_of_isClosed ?_ ?_
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ Tendsto (fun a => ↑μ (thickening a {a | t ≤ f a})) (𝓝[>] 0) (𝓝 (↑μ {a | t ≤ f a}))
state_after: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ ∃ R > 0, ↑μ (thickening R {a | t ≤ f a}) ≠ ⊤

ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ IsClosed {a | t ≤ f a}

tactic: exact ⟨1, ⟨Real.zero_lt_one, measure_ne_top _ _⟩⟩
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ ∃ R > 0, ↑μ (thickening R {a | t ≤ f a}) ≠ ⊤
state_after: no goals

tactic: exact isClosed_le continuous_const f.continuous
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ IsClosed {a | t ≤ f a}
state_after: no goals

tactic: exact measure_ne_top _ _
state_before: ι : Type u_1
Ω : Type u_2
inst✝² : MeasurableSpace Ω
inst✝¹ : PseudoMetricSpace Ω
inst✝ : OpensMeasurableSpace Ω
f : Ω →ᵇ ℝ
A : Set ℝ
A_finmeas : volume A ≠ ⊤
μ : ProbabilityMeasure Ω
t : ℝ
⊢ ↑μ {a | t ≤ f a} ≠ ⊤
state_after: no goals