Theorem: MeasureTheory.tendsto_ae_condexp
File: Mathlib/Probability/Martingale/Convergence.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
tactic: have ht : ∀ᵐ x ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ℱ n]|ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ℱ n]) x)) :=
    integrable_condexp.tendsto_ae_condexp stronglyMeasurable_condexp
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ (n : ℕ), ∀ᵐ (x : Ω) ∂μ, (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x = (μ[g|↑ℱ n]) x
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
tactic: have heq : ∀ n, ∀ᵐ x ∂μ, (μ[μ[g|⨆ n, ℱ n]|ℱ n]) x = (μ[g|ℱ n]) x := fun n =>
    condexp_condexp_of_le (le_iSup _ n) (iSup_le fun n => ℱ.le n)
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ (n : ℕ), ∀ᵐ (x : Ω) ∂μ, (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x = (μ[g|↑ℱ n]) x
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ᵐ (a : Ω) ∂μ, ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) a = (μ[g|↑ℱ i]) a
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
tactic: rw [← ae_all_iff] at heq
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ᵐ (a : Ω) ∂μ, ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) a = (μ[g|↑ℱ i]) a
⊢ ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
state_after: case h
Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ᵐ (a : Ω) ∂μ, ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) a = (μ[g|↑ℱ i]) a
x : Ω
hxeq : ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) x = (μ[g|↑ℱ i]) x
hxt : Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
⊢ Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
tactic: filter_upwards [heq, ht] with x hxeq hxt
state_before: case h
Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
ℱ : Filtration ℕ m0
a b : ℝ
f : ℕ → Ω → ℝ
ω : Ω
R : ℝ≥0
inst✝ : IsFiniteMeasure μ
g✝ g : Ω → ℝ
ht : ∀ᵐ (x : Ω) ∂μ, Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
heq : ∀ᵐ (a : Ω) ∂μ, ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) a = (μ[g|↑ℱ i]) a
x : Ω
hxeq : ∀ (i : ℕ), (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ i]) x = (μ[g|↑ℱ i]) x
hxt : Tendsto (fun n => (μ[μ[g|⨆ n, ↑ℱ n]|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
⊢ Tendsto (fun n => (μ[g|↑ℱ n]) x) atTop (𝓝 ((μ[g|⨆ n, ↑ℱ n]) x))
state_after: no goals
tactic: exact hxt.congr hxeq