Theorem: aemeasurable_of_unif_approx
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Metrizable.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
⊢ AEMeasurable g μ
state_after: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
⊢ AEMeasurable g μ
tactic: obtain ⟨u, -, u_pos, u_lim⟩ :
    ∃ u : ℕ → ℝ, StrictAnti u ∧ (∀ n : ℕ, 0 < u n) ∧ Tendsto u atTop (𝓝 0) :=
    exists_seq_strictAnti_tendsto (0 : ℝ)
state_before: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
⊢ AEMeasurable g μ
state_after: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
f : ℕ → α → β
Hf : ∀ (n : ℕ), AEMeasurable (f n) μ ∧ ∀ᵐ (x : α) ∂μ, dist (f n x) (g x) ≤ u n
⊢ AEMeasurable g μ
tactic: choose f Hf using fun n : ℕ => hf (u n) (u_pos n)
state_before: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
f : ℕ → α → β
Hf : ∀ (n : ℕ), AEMeasurable (f n) μ ∧ ∀ᵐ (x : α) ∂μ, dist (f n x) (g x) ≤ u n
⊢ AEMeasurable g μ
state_after: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
f : ℕ → α → β
Hf : ∀ (n : ℕ), AEMeasurable (f n) μ ∧ ∀ᵐ (x : α) ∂μ, dist (f n x) (g x) ≤ u n
this : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
⊢ AEMeasurable g μ
tactic: have : ∀ᵐ x ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x)) := by
    have : ∀ᵐ x ∂μ, ∀ n, dist (f n x) (g x) ≤ u n := ae_all_iff.2 fun n => (Hf n).2
    filter_upwards [this]
    intro x hx
    rw [tendsto_iff_dist_tendsto_zero]
    exact squeeze_zero (fun n => dist_nonneg) hx u_lim
state_before: case intro.intro.intro
α : Type u_1
β✝ : Type u_2
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_3
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : Measure α
g : α → β
hf : ∀ ε > 0, ∃ f, AEMeasurable f μ ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
u : ℕ → ℝ
u_pos : ∀ (n : ℕ), 0 < u n
u_lim : Tendsto u atTop (𝓝 0)
f : ℕ → α → β
Hf : ∀ (n : ℕ), AEMeasurable (f n) μ ∧ ∀ᵐ (x : α) ∂μ, dist (f n x) (g x) ≤ u n
this : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))
⊢ AEMeasurable g μ
state_after: no goals
tactic: exact aemeasurable_of_tendsto_metrizable_ae' (fun n => (Hf n).1) this