Martingale CLT (difference-array form)
ProvedMartingale.clt_of_mds_arrayMartingale central limit theorem. For each let be a martingale difference array with respect to a filtration , i.e. is -measurable and . Suppose
- negligibility of increments: ; and
- limiting variance: .
Then .
The array formulation carries the normalisation inside the increments, which is why no appears: applied to a stationary difference sequence one takes , and the two hypotheses become an -negligibility statement and the ergodic-average convergence . Contrast with the Lindeberg–Feller CLT: the conditions are the direct analogues, with independence replaced by the martingale property.
This is the fundamental limit theorem for dependent sequences and the engine behind central limit theorems for Markov chains, stochastic approximation and time series, via Gordin's martingale-approximation method.
import Mathlib.Probability.Martingale.Basic import Mathlib.MeasureTheory.Function.ConvergenceInDistribution import Mathlib.MeasureTheory.Function.ConvergenceInMeasure import Mathlib.Probability.Distributions.Gaussian.Real open MeasureTheory ProbabilityTheory Filter open scoped ENNReal NNReal Topology ProbabilityTheory
theorem Martingale.clt_of_mds_array {Ω : Type*} {m0 : MeasurableSpace Ω}
(P : Measure Ω) [IsProbabilityMeasure P] (ℱ : Filtration ℕ m0)
(D : ℕ → ℕ → Ω → ℝ)
(hmeas : ∀ n k, Measurable (D n k))
(hadapt : ∀ n k, Measurable[ℱ k] (D n k))
(hint : ∀ n k, Integrable (D n k) P)
(hmds : ∀ n k, P[D n (k + 1) | ℱ k] =ᵐ[P] 0)
(hcent : ∀ n, ∫ ω, D n 0 ω ∂P = 0)
(σ : ℝ) (hσ : 0 ≤ σ)
-- (1) negligibility of increments: `E[max_{k<n} |D n k|] → 0`
(hneg : Tendsto (fun n : ℕ => ∫ ω, ⨆ k : Fin n, |D n k.val ω| ∂P) atTop (𝓝 0))
-- (2) limiting variance: `∑_{k<n} (D n k)² ⇒ σ²`
(hvar : TendstoInMeasure P
(fun (n : ℕ) ω => ∑ k ∈ Finset.range n, D n k ω ^ 2) atTop (fun _ => σ ^ 2)) :
TendstoInDistribution
(fun (n : ℕ) ω => ∑ k ∈ Finset.range n, D n k ω)
atTop (id : ℝ → ℝ) (fun _ => P) (gaussianReal 0 (σ ^ 2).toNNReal) := by
sorry