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

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: α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.Measure α
g : α → β
hf : ∀ (ε : ℝ), ε > 0 → ∃ f, AEMeasurable f ∧ ∀ᵐ (x : α) ∂μ, dist (f x) (g x) ≤ ε
⊢ AEMeasurable g

tactic: choose f Hf using fun n : ℕ => hf (u n) (u_pos n)
state_before: case intro.intro.intro
α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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: 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_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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: exact aemeasurable_of_tendsto_metrizable_ae' (fun n => (Hf n).1) this
state_before: case intro.intro.intro
α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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 ∂μ, ∀ n, dist (f n x) (g x) ≤ u n := ae_all_iff.2 fun n => (Hf n).2
state_before: α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))

tactic: filter_upwards [this]
state_before: α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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 : α) ∂μ, ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
⊢ ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (g x))

tactic: intro x hx
state_before: case h
α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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 : α) ∂μ, ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
⊢ ∀ (a : α), (∀ (n : ℕ), dist (f n a) (g a) ≤ u n) → Tendsto (fun n => f n a) atTop (𝓝 (g a))

tactic: rw [tendsto_iff_dist_tendsto_zero]
state_before: case h
α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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 : α) ∂μ, ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
x : α
hx : ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
⊢ Tendsto (fun n => f n x) atTop (𝓝 (g x))

tactic: exact squeeze_zero (fun n => dist_nonneg) hx u_lim
state_before: case h
α : Type u_2
β✝ : Type ?u.222445
inst✝⁷ : MeasurableSpace α
inst✝⁶ : TopologicalSpace β✝
inst✝⁵ : PseudoMetrizableSpace β✝
inst✝⁴ : MeasurableSpace β✝
inst✝³ : BorelSpace β✝
β : Type u_1
inst✝² : MeasurableSpace β
inst✝¹ : PseudoMetricSpace β
inst✝ : BorelSpace β
μ : MeasureTheory.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 : α) ∂μ, ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
x : α
hx : ∀ (n : ℕ), dist (f n x) (g x) ≤ u n
⊢ Tendsto (fun b => dist (f b x) (g x)) atTop (𝓝 0)