Theorem: MeasureTheory.tendsto_lintegral_of_dominated_convergence'
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: have : ∀ n, (∫⁻ a, F n a ∂μ) = ∫⁻ a, (hF_meas n).mk (F n) a ∂μ := fun n =>
  lintegral_congr_ae (hF_meas n).ae_eq_mk
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => ∫⁻ (a : α), F n a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))

tactic: simp_rw [this]
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ Tendsto (fun n => ∫⁻ (a : α), F n a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))

tactic: apply
  tendsto_lintegral_of_dominated_convergence bound (fun n => (hF_meas n).measurable_mk) _ h_fin
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ Tendsto (fun n => ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))

tactic: have : ∀ n, ∀ᵐ a ∂μ, (hF_meas n).mk (F n) a = F n a := fun n => (hF_meas n).ae_eq_mk.symm
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))

tactic: have : ∀ᵐ a ∂μ, ∀ n, (hF_meas n).mk (F n) a = F n a := ae_all_iff.mpr this
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝ : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))

tactic: filter_upwards [this, h_lim] with a H H'
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))

tactic: simp_rw [H]
state_before: case h
α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
a : α
H : ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
H' : Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))

tactic: exact H'
state_before: case h
α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
a : α
H : ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
H' : Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => F n a) atTop (𝓝 (f a))

tactic: intro n
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) ≤ᵐ[μ] bound

tactic: filter_upwards [h_bound n, (hF_meas n).ae_eq_mk] with a H H'
state_before: α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
n : ℕ
⊢ AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) ≤ᵐ[μ] bound

tactic: rwa [H'] at H
state_before: case h
α : Type u_1
β : Type ?u.1001538
γ : Type ?u.1001541
δ : Type ?u.1001544
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : (∫⁻ (a : α), bound a ∂μ) ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), (∫⁻ (a : α), F n a ∂μ) = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
n : ℕ
a : α
H : F n a ≤ bound a
H' : F n a = AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a
⊢ AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ≤ bound a