Theorem: MeasureTheory.lintegral_tendsto_of_tendsto_of_monotone
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: have : Monotone fun n => ∫⁻ x, f n x ∂μ := fun i j hij =>
  lintegral_mono_ae (h_mono.mono fun x hx => hx hij)
state_before: α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))

tactic: suffices key : (∫⁻ x, F x ∂μ) = ⨆ n, ∫⁻ x, f n x ∂μ
state_before: α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))

tactic: rw [← lintegral_iSup' hf h_mono]
state_before: case key
α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ (∫⁻ (x : α), F x ∂μ) = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ

tactic: refine' lintegral_congr_ae _
state_before: case key
α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ (∫⁻ (x : α), F x ∂μ) = ∫⁻ (a : α), ⨆ (n : ℕ), f n a ∂μ

tactic: filter_upwards [h_mono,
  h_tendsto] with _ hx_mono hx_tendsto using tendsto_nhds_unique hx_tendsto
    (tendsto_atTop_iSup hx_mono)
state_before: case key
α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ (fun x => F x) =ᵐ[μ] fun a => ⨆ (n : ℕ), f n a

tactic: rw [key]
state_before: α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
key : (∫⁻ (x : α), F x ∂μ) = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))

tactic: exact tendsto_atTop_iSup this
state_before: α : Type u_1
β : Type ?u.483223
γ : Type ?u.483226
δ : Type ?u.483229
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
key : (∫⁻ (x : α), F x ∂μ) = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ))