Stat.CLT.MartingaleArray
Scalar martingale triangular-array central limit theory: predictable variance, conditional Lindeberg and Lyapunov conditions, stopping, and characteristic-function convergence without independence.
Basic 10 core · 0 supporting This module packages a real-valued, square-integrable martingale-difference triangular array whose rows may live on different probability spaces. ★ rowSum_aemeasurable
Martingale-difference triangular arrays
This module packages a real-valued, square-integrable martingale-difference triangular array whose rows may live on different probability spaces. Row lengths may vary with the row index. It also defines row sums, predictable quadratic variation, conditional Lindeberg sums, and conditional fourth-moment sums.
Increment k in row n is measurable with respect to filtration time k + 1
and has conditional mean zero at time k. Thus the indexing directly models
the usual pair F_{n,k-1} ⊆ F_{n,k} without subtraction on natural numbers.
Given one measure space for every row, a row-indexed family of real random variables converges in probability to the target constant when, at every positive tolerance, the row probability of exceeding that tolerance tends to zero.
Definition (Lean source)
Given one probability space for every row, almost-everywhere measurable row variables, and a target probability law, convergence in distribution to that law means weak convergence of the row pushforward laws.
Definition (Lean source)
A martingale-difference triangular array consists of finite row lengths, real increments, and one filtration per row, such that each active increment is measurable at the next filtration time, is square integrable, and has conditional mean zero given the preceding filtration time; these data together form the array.
Definition (Lean source)
The row sum is the sum of the increments whose indices are below that row's length.
Definition (Lean source)
For a martingale-difference triangular array and one row, its row sum is almost-everywhere measurable under that row's probability measure.
Formal statement
Proof (Lean source)
The predictable quadratic variation of a row is the sum of the conditional second moments of its increments, each conditioned on the preceding filtration time.
Definition (Lean source)
A conditional Lindeberg term is the conditional second moment of one increment after discarding values whose absolute size is at most the chosen threshold.
Definition (Lean source)
The conditional Lindeberg sum for a row adds its conditional truncated second moments over all increments in that row.
Definition (Lean source)
The conditional fourth-moment sum for a row adds the conditional fourth moments of all increments, each conditioned on the preceding filtration time.
Definition (Lean source)
The unconditional fourth-moment sum is the deterministic sum of the fourth moments of the increments in one row.
Definition (Lean source)
ExponentialBounds 2 core · 2 supporting This module collects the elementary complex-exponential estimates used in the characteristic-function proof of the martingale triangular-array CLT. ★ norm_expQuadraticRemainder_le_truncated
Exponential remainder bounds for martingale CLTs
This module collects the elementary complex-exponential estimates used in the characteristic-function proof of the martingale triangular-array CLT. The estimates are deterministic and independent of the probability-space layer.
The quadratic Taylor remainder of the characteristic-function kernel at a real argument u is exp(iu) - 1 - iu + u²/2.
Given a frequency, an increment, and a positive truncation level small enough that |t| · η ≤ 1 as assumed, the quadratic exponential remainder is bounded by a small cubic contribution plus a quadratic contribution supported on increments larger than η.
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
norm_expQuadraticRemainder_le_cubetheorem — If the real argument has absolute value at most one, then the norm of the quadratic Taylor remainder of exp(iu) is at most |u|³.hypothesesu :ℝhu :|u| ≤ 1conclusion‖expQuadraticRemainder u‖ ≤ |u| ^ 3Proof (Lean source)
theorem norm_expQuadraticRemainder_le_cube (u : ℝ) (hu : |u| ≤ 1) : ‖expQuadraticRemainder u‖ ≤ |u| ^ 3 := by /- Normalize `expQuadraticRemainder` to the first three terms of the complex exponential series and apply `Complex.exp_bound` with `n = 3`. The resulting numerical coefficient is at most one, and `‖I * (u : ℂ)‖ = |u|`. -/ let z : ℂ := I * (u : ℂ) have hz : ‖z‖ ≤ 1 := by simp [z, hu] have hzsq : z ^ 2 = -((u : ℂ) ^ 2) := by dsimp [z] rw [mul_pow, pow_two I, Complex.I_mul_I] ring have hrem : expQuadraticRemainder u = exp z - 1 - z - z ^ 2 / 2 := by rw [expQuadraticRemainder] dsimp [z] rw [hzsq] ring have hsum : (∑ m ∈ range 3, z ^ m / m.factorial) = 1 + z + z ^ 2 / 2 := by norm_num [Finset.sum_range_succ, factorial] have h := Complex.exp_bound (x := z) (n := 3) hz (by norm_num) rw [hsum] at h rw [hrem] norm_num [factorial] at h calc ‖Complex.exp z - 1 - z - z ^ 2 / 2‖ = ‖Complex.exp z - (1 + z + z ^ 2 / 2)‖ := by congr 1 ring _ ≤ ‖z‖ ^ 3 * (2 / 9 : ℝ) := h _ ≤ ‖z‖ ^ 3 := by nlinarith [pow_nonneg (norm_nonneg z) 3] _ = |u| ^ 3 := by simp [z] -
norm_expQuadraticRemainder_le_globaltheorem — For every real argument, the norm of the quadratic Taylor remainder of exp(iu) is bounded by 2 + |u| + u²/2.hypothesesu :ℝconclusion‖expQuadraticRemainder u‖ ≤ 2 + |u| + u ^ 2 / 2Proof (Lean source)
theorem norm_expQuadraticRemainder_le_global (u : ℝ) : ‖expQuadraticRemainder u‖ ≤ 2 + |u| + u ^ 2 / 2 := by /- Expand the definition, use the triangle inequality, and rewrite `‖exp (I * u)‖ = 1`, `‖I * u‖ = |u|`, and the norm of the real quadratic term. -/ rw [expQuadraticRemainder] calc ‖Complex.exp (I * (u : ℂ)) - 1 - I * (u : ℂ) + (u : ℂ) ^ 2 / 2‖ ≤ ‖Complex.exp (I * (u : ℂ)) - 1 - I * (u : ℂ)‖ + ‖(u : ℂ) ^ 2 / 2‖ := norm_add_le _ _ _ ≤ (‖Complex.exp (I * (u : ℂ)) - 1‖ + ‖Complex.I * (u : ℂ)‖) + ‖(u : ℂ) ^ 2 / 2‖ := by gcongr exact norm_sub_le _ _ _ ≤ ((‖Complex.exp (I * (u : ℂ))‖ + ‖(1 : ℂ)‖) + ‖Complex.I * (u : ℂ)‖) + ‖(u : ℂ) ^ 2 / 2‖ := by gcongr exact norm_sub_le _ _ _ = 2 + |u| + u ^ 2 / 2 := by have hone : ‖(1 : ℂ)‖ = 1 := by change ‖((1 : ℝ) : ℂ)‖ = 1 rw [Complex.norm_real, Real.norm_eq_abs] norm_num rw [Complex.norm_exp, hone] norm_num [Complex.norm_pow, Complex.norm_real, abs_of_nonneg (sq_nonneg u)]
CompensatedStep 4 core · 4 supporting This module introduces the predictable-variance compensation used in the martingale-array CLT. ★ norm_integral_compensatedWeight_succ_sub_le
One-step compensated characteristic-function bounds
This module introduces the predictable-variance compensation used in the martingale-array CLT. It proves the exact conditional update and its one-step error bound before any finite-row telescoping or asymptotic argument.
The conditional second moment of one increment, given the filtration just before that increment, is its one-step predictable variance.
Definition (Lean source)
The partial predictable quadratic variation through time r sums the one-step predictable variances of the first r active increments.
Definition (Lean source)
The compensated characteristic-function weight at time r is the ordinary characteristic-function weight multiplied by the Gaussian correction generated by the partial predictable quadratic variation.
Definition (Lean source)
For an active martingale increment, if the variance budget is nonnegative and the compensated predictable variance after that step is at most K, then the change in the integrated compensated weight is bounded by the integrated Taylor remainder and the squared one-step predictable variance.
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
partialPredictableQuadraticVariation_zerotheorem — The partial predictable quadratic variation at time zero is zero.hypothesesA :n :ℕconclusionA.partialPredictableQuadraticVariation n 0 = 0Proof (Lean source)
@[simp] theorem partialPredictableQuadraticVariation_zero (A : MartingaleDifferenceArray Ω μ) (n : ℕ) : A.partialPredictableQuadraticVariation n 0 = 0 := by simp [partialPredictableQuadraticVariation] -
partialPredictableQuadraticVariation_succtheorem — For an active increment, the next partial predictable quadratic variation is the current one plus that increment's conditional second moment.hypothesesA :n k :ℕhk :k < A.rowLength nconclusionA.partialPredictableQuadraticVariation n (k + 1)= A.partialPredictableQuadraticVariation n k + A.conditionalSecondMoment n kProof (Lean source)
theorem partialPredictableQuadraticVariation_succ (A : MartingaleDifferenceArray Ω μ) (n k : ℕ) (hk : k < A.rowLength n) : A.partialPredictableQuadraticVariation n (k + 1) = A.partialPredictableQuadraticVariation n k + A.conditionalSecondMoment n k := by /- Rewrite both capped ranges using `hk`, then apply `Finset.sum_range_succ` pointwise. -/ unfold partialPredictableQuadraticVariation rw [Nat.min_eq_left (Nat.succ_le_of_lt hk)] rw [Nat.min_eq_left (le_trans (Nat.le_succ k) (Nat.succ_le_of_lt hk))] exact Finset.sum_range_succ _ _ -
partialPredictableQuadraticVariation_stronglyMeasurabletheorem — The partial predictable quadratic variation through time r is measurable with respect to the row filtration at time r.hypothesesA :n r :ℕconclusionStronglyMeasurable[A.filtration n r] (A.partialPredictableQuadraticVariation n r)Proof (Lean source)
theorem partialPredictableQuadraticVariation_stronglyMeasurable (A : MartingaleDifferenceArray Ω μ) (n r : ℕ) : StronglyMeasurable[A.filtration n r] (A.partialPredictableQuadraticVariation n r) := by /- Each conditional second moment is strongly measurable at its conditioning time. Lift it to time `r` using filtration monotonicity and close the finite sum. -/ unfold partialPredictableQuadraticVariation conditionalSecondMoment apply Finset.stronglyMeasurable_sum intro k hk exact stronglyMeasurable_condExp.mono ((A.filtration n).mono (le_trans (le_of_lt (Finset.mem_range.mp hk)) (min_le_left _ _))) -
integral_compensatedWeight_succtheorem — For an active martingale increment, when the compensated predictable variance after that step is almost surely bounded, the integral of the next compensated weight equals the integral of the current weight times the exact conditionally centered quadratic update.hypotheses∀ n, IsProbabilityMeasure (μ n)A :n k :ℕhk :k < A.rowLength nt K :ℝhQ :A.partialPredictableQuadraticVariation n (k + 1) ≤ᵐ[μ n] fun _ => Kconclusion(∫ ω, A.compensatedWeight n (k + 1) t ω ∂(μ n))= ∫ ω, A.compensatedWeight n k t ω * (((exp ((t ^ 2 / 2) * A.conditionalSecondMoment n k ω) : ℝ) : ℂ) * (1 - (((t ^ 2 / 2) * A.conditionalSecondMoment n k ω : ℝ) : ℂ) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω)) ∂(μ n)Proof (Lean source)
theorem integral_compensatedWeight_succ [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n k : ℕ) (hk : k < A.rowLength n) (t K : ℝ) (hQ : A.partialPredictableQuadraticVariation n (k + 1) ≤ᵐ[μ n] fun _ => K) : (∫ ω, A.compensatedWeight n (k + 1) t ω ∂(μ n)) = ∫ ω, A.compensatedWeight n k t ω * (((exp ((t ^ 2 / 2) * A.conditionalSecondMoment n k ω) : ℝ) : ℂ) * (1 - (((t ^ 2 / 2) * A.conditionalSecondMoment n k ω : ℝ) : ℂ) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω)) ∂(μ n) := by /- Split the successor partial sum and predictable variation. The weight through time `k`, multiplied by `exp ((t²/2) v_k)`, is predictable and is bounded using `hQ`; apply `integral_mul_condExp_eq_integral_mul_of_ae_bound`, then substitute `condExp_cexp_ae_eq_quadratic_add_remainder`. The explicit bound is needed: finite second moments alone do not make an exponential predictable weight integrable. -/ let c : ℝ := t ^ 2 / 2 let f : Ω n → ℂ := fun ω => exp (I * ((t * A.increment n k ω : ℝ) : ℂ)) let g : Ω n → ℂ := fun ω => A.compensatedWeight n k t ω * ((exp (c * A.conditionalSecondMoment n k ω) : ℝ) : ℂ) have hc : 0 ≤ c := by dsimp [c] positivity have hfMeas : AEStronglyMeasurable f (μ n) := by have hX := (A.squareIntegrable n k hk).aestronglyMeasurable dsimp [f] fun_prop have hf : Integrable f (μ n) := by refine Integrable.mono' (integrable_const (1 : ℝ)) hfMeas ?_ filter_upwards with ω dsimp [f] rw [Complex.norm_exp] simp have hv : StronglyMeasurable[A.filtration n k] (A.conditionalSecondMoment n k) := by exact stronglyMeasurable_condExp have hg : StronglyMeasurable[A.filtration n k] g := by have hS := A.partialRowSum_stronglyMeasurable n k have hQk := A.partialPredictableQuadraticVariation_stronglyMeasurable n k dsimp [g, compensatedWeight] fun_prop have hgBound : ∀ᵐ ω ∂(μ n), ‖g ω‖ ≤ exp (c * K) := by filter_upwards [hQ] with ω hQω have hstep := congrFun (A.partialPredictableQuadraticVariation_succ n k hk) ω simp only [Pi.add_apply] at hstep have hexpArg : c * (A.partialPredictableQuadraticVariation n k ω - 1) + c * A.conditionalSecondMoment n k ω ≤ c * K := by rw [← mul_add] apply mul_le_mul_of_nonneg_left _ hc linarith calc ‖g ω‖ = exp (c * (A.partialPredictableQuadraticVariation n k ω - 1) + c * A.conditionalSecondMoment n k ω) := by dsimp [g, compensatedWeight] rw [norm_mul, norm_mul, Complex.norm_exp, Complex.norm_real, Complex.norm_real] simp [c, ← Real.exp_add] _ ≤ exp (c * K) := Real.exp_le_exp.mpr hexpArg have htaylor : (μ n)[f | A.filtration n k] =ᵐ[μ n] fun ω => 1 - ((c : ℂ) * ((A.conditionalSecondMoment n k ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω := by simpa only [f, c, conditionalSecondMoment] using condExp_cexp_ae_eq_quadratic_add_remainder (mΩ := mΩ n) (μ := μ n) ((A.filtration n).le k) (A.increment n k) (A.squareIntegrable n k hk) (A.condExp_zero n k hk) t have hsplit : A.compensatedWeight n (k + 1) t = fun ω => g ω * f ω := by funext ω have hQstep := congrFun (A.partialPredictableQuadraticVariation_succ n k hk) ω simp only [Pi.add_apply] at hQstep dsimp [g, f, c, compensatedWeight] unfold partialRowSum rw [Nat.min_eq_left (Nat.succ_le_of_lt hk)] rw [Nat.min_eq_left (le_trans (Nat.le_succ k) (Nat.succ_le_of_lt hk))] rw [Finset.sum_range_succ, hQstep] simp only [Pi.add_apply, Finset.sum_apply] have hchar : exp (I * ((t * ((∑ x ∈ range k, A.increment n x ω) + A.increment n k ω) : ℝ) : ℂ)) = exp (I * ((t * (∑ x ∈ range k, A.increment n x ω) : ℝ) : ℂ)) * exp (I * ((t * A.increment n k ω : ℝ) : ℂ)) := by rw [← Complex.exp_add] congr 1 push_cast ring have hgauss : exp (t ^ 2 / 2 * (A.partialPredictableQuadraticVariation n k ω + A.conditionalSecondMoment n k ω - 1)) = exp (t ^ 2 / 2 * (A.partialPredictableQuadraticVariation n k ω - 1)) * exp (t ^ 2 / 2 * A.conditionalSecondMoment n k ω) := by rw [← Real.exp_add] congr 1 ring rw [hchar, hgauss] push_cast ring rw [hsplit] calc (∫ ω, g ω * f ω ∂(μ n)) = ∫ ω, g ω * (μ n)[f | A.filtration n k] ω ∂(μ n) := (integral_mul_condExp_eq_integral_mul_of_ae_bound ((A.filtration n).le k) f g hf hg (exp (c * K)) hgBound).symm _ = ∫ ω, g ω * (1 - ((c : ℂ) * ((A.conditionalSecondMoment n k ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω) ∂(μ n) := by apply integral_congr_ae filter_upwards [htaylor] with ω hω exact congrArg (g ω * ·) hω _ = _ := by apply integral_congr_ae filter_upwards with ω dsimp [g, c] push_cast ring
CharacteristicFunction 1 core · 0 supporting This module isolates the analytic core of the scalar martingale triangular-array central limit theorem. ★ martingaleArrayCharFun_tendsto
Characteristic-function core of the martingale-array CLT
This module isolates the analytic core of the scalar martingale triangular-array
central limit theorem. It turns predictable-variance normalization and the
conditional Lindeberg condition into pointwise convergence of characteristic
functions. The final weak-convergence wrapper is in Main.
For a square-integrable martingale-difference triangular array, if its predictable quadratic variations converge in probability to one and its conditional Lindeberg sums converge in probability to zero at every positive threshold, then the characteristic function of each row sum converges pointwise to the characteristic function of the standard normal law.
Formal statement
Proof (Lean source)
CompensatedTelescoping 1 core · 1 supporting This module telescopes the one-step compensated characteristic-function bound. ★ norm_integral_compensatedWeight_rowSum_sub_gaussian_le_of_budgets
Finite-row compensated Gaussian telescoping
This module telescopes the one-step compensated characteristic-function bound.
It also removes the terminal random Gaussian correction by an explicit expected
absolute predictable-variance error. These are deterministic finite-row
bounds; the asymptotic stopping argument remains in CharacteristicFunction.
If the truncation threshold is positive, the frequency-threshold product is at most one, both budgets are nonnegative, a row's predictable quadratic variation is at most K, and its conditional Lindeberg mass at threshold η is at most δ, then the integrated compensated row characteristic function differs from the standard Gaussian characteristic function by the displayed Taylor and predictable-mesh budget.
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
-
norm_integral_cexp_rowSum_sub_gaussian_le_of_budgetstheorem — If the truncation threshold is positive, the frequency-threshold product is at most one, both budgets are nonnegative, a row's predictable quadratic variation is at most K, and its conditional Lindeberg mass at threshold η is at most δ, then its ordinary characteristic function differs from the standard Gaussian characteristic function by the compensated budget plus a constant times the expected distance of predictable quadratic variation from one.hypotheses∀ n, IsProbabilityMeasure (μ n)A :n :ℕt η K δ :ℝhη :0 < ηhtη :|t| * η ≤ 1hK :0 ≤ Khδ :0 ≤ δhVariance :A.predictableQuadraticVariation n ≤ᵐ[μ n] fun _ => KhLindeberg :A.conditionalLindeberg η n ≤ᵐ[μ n] fun _ => δconclusion≤ exp ((t ^ 2 / 2) * K) * (|t| ^ 3 * η * K + (2 / η ^ 2 + |t| / η + t ^ 2 / 2) * δ + ((t ^ 2 / 2) ^ 2 / 2) * ((η ^ 2 + δ) * K))- 1| ∂(μ n)Proof (Lean source)
theorem norm_integral_cexp_rowSum_sub_gaussian_le_of_budgets [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n : ℕ) (t η K δ : ℝ) (hη : 0 < η) (htη : |t| * η ≤ 1) (hK : 0 ≤ K) (hδ : 0 ≤ δ) (hVariance : A.predictableQuadraticVariation n ≤ᵐ[μ n] fun _ => K) (hLindeberg : A.conditionalLindeberg η n ≤ᵐ[μ n] fun _ => δ) : ‖(∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n)) - ((exp (-(t ^ 2 / 2)) : ℝ) : ℂ)‖ ≤ exp ((t ^ 2 / 2) * K) * (|t| ^ 3 * η * K + (2 / η ^ 2 + |t| / η + t ^ 2 / 2) * δ + ((t ^ 2 / 2) ^ 2 / 2) * ((η ^ 2 + δ) * K)) + exp ((t ^ 2 / 2) * max K 1) * (t ^ 2 / 2) * ∫ ω, |A.predictableQuadraticVariation n ω - 1| ∂(μ n) := by /- Insert the compensated terminal integral and use the preceding theorem. The unit-modulus characteristic weight removes from the other difference; apply `abs_exp_varianceCorrection_sub_one_le` pointwise and integrate. -/ let c : ℝ := t ^ 2 / 2 let V : Ω n → ℝ := A.predictableQuadraticVariation n let g : Ω n → ℂ := fun ω => exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) let q : Ω n → ℂ := fun ω => ((exp (c * (V ω - 1)) : ℝ) : ℂ) let W : Ω n → ℂ := fun ω => g ω * q ω let C : ℝ := exp (c * max K 1) * c have hc : 0 ≤ c := by dsimp [c] positivity have hVInt : Integrable V (μ n) := by dsimp [V] unfold predictableQuadraticVariation rw [show (∑ k ∈ range (A.rowLength n), (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k]) = (fun ω => ∑ k ∈ range (A.rowLength n), (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω) by funext ω simp only [Finset.sum_apply]] exact integrable_finsetSum (range (A.rowLength n)) (fun k _ => (integrable_condExp : Integrable ((μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k]) (μ n))) have hVNonneg : 0 ≤ᵐ[μ n] V := by have hall : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := ae_all_iff.mpr fun k => condExp_nonneg (ae_of_all _ fun ω => sq_nonneg (A.increment n k ω)) filter_upwards [hall] with ω hω dsimp [V] unfold predictableQuadraticVariation simp only [Finset.sum_apply] exact sum_nonneg fun k _ => hω k have hgMeas : AEStronglyMeasurable g (μ n) := by have hrow := A.rowSum_aemeasurable n dsimp [g] fun_prop have hgInt : Integrable g (μ n) := by refine Integrable.mono' (integrable_const (1 : ℝ)) hgMeas ?_ filter_upwards with ω dsimp [g] rw [Complex.norm_exp] simp have hWMeas : AEStronglyMeasurable W (μ n) := by have hqMeas : AEStronglyMeasurable q (μ n) := by have hVm := hVInt.aestronglyMeasurable dsimp [q] fun_prop exact hgMeas.mul hqMeas have hWBound : ∀ᵐ ω ∂(μ n), ‖W ω‖ ≤ exp (c * K) := by filter_upwards [hVariance] with ω hVω have harg : c * (V ω - 1) ≤ c * K := by apply mul_le_mul_of_nonneg_left _ hc dsimp [V] linarith calc ‖W ω‖ = exp (c * (V ω - 1)) := by dsimp [W, g, q] rw [norm_mul, Complex.norm_exp, Complex.norm_real] simp _ ≤ exp (c * K) := Real.exp_le_exp.mpr harg have hWInt : Integrable W (μ n) := Integrable.mono' (integrable_const (exp (c * K))) hWMeas hWBound have hAbsVInt : Integrable (fun ω => |V ω - 1|) (μ n) := (hVInt.sub (integrable_const 1)).abs have hC : 0 ≤ C := by dsimp [C] positivity have hNormDiff : ∀ ω, ‖g ω - W ω‖ = |exp (c * (V ω - 1)) - 1| := by intro ω dsimp [W, g, q] rw [show exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) - exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) * ((exp (c * (V ω - 1)) : ℝ) : ℂ) = exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) * (1 - ((exp (c * (V ω - 1)) : ℝ) : ℂ)) by ring] rw [norm_mul] have hchar : ‖Complex.exp (I * ((t * A.rowSum n ω : ℝ) : ℂ))‖ = 1 := by rw [Complex.norm_exp] simp rw [hchar, one_mul] rw [show (1 : ℂ) - ((exp (c * (V ω - 1)) : ℝ) : ℂ) = (((1 - exp (c * (V ω - 1))) : ℝ) : ℂ) by rw [Complex.ofReal_sub, Complex.ofReal_one]] rw [Complex.norm_real, Real.norm_eq_abs, abs_sub_comm] have hDiff : ‖(∫ ω, g ω ∂(μ n)) - ∫ ω, W ω ∂(μ n)‖ ≤ C * ∫ ω, |V ω - 1| ∂(μ n) := by rw [← integral_sub hgInt hWInt] calc ‖∫ ω, g ω - W ω ∂(μ n)‖ ≤ ∫ ω, ‖g ω - W ω‖ ∂(μ n) := norm_integral_le_integral_norm _ _ = ∫ ω, |exp (c * (V ω - 1)) - 1| ∂(μ n) := by apply integral_congr_ae filter_upwards with ω exact hNormDiff ω _ ≤ ∫ ω, C * |V ω - 1| ∂(μ n) := by apply integral_mono_ae · exact (hgInt.sub hWInt).norm.congr (ae_of_all _ hNormDiff) · exact hAbsVInt.const_mul C · filter_upwards [hVNonneg, hVariance] with ω hV0 hVK dsimp [C] exact abs_exp_varianceCorrection_sub_one_le c (V ω) K hc hV0 (by simpa only [V] using hVK) _ = C * ∫ ω, |V ω - 1| ∂(μ n) := integral_const_mul _ _ have hTerminal : A.compensatedWeight n (A.rowLength n) t = W := by funext ω dsimp [W, g, q, V, c, compensatedWeight] simp [partialRowSum, rowSum, partialPredictableQuadraticVariation, predictableQuadraticVariation, conditionalSecondMoment] have hComp := A.norm_integral_compensatedWeight_rowSum_sub_gaussian_le_of_budgets n t η K δ hη htη hK hδ hVariance hLindeberg rw [hTerminal] at hComp change ‖(∫ ω, g ω ∂(μ n)) - ((exp (-c) : ℝ) : ℂ)‖ ≤ _ calc ‖(∫ ω, g ω ∂(μ n)) - ((exp (-c) : ℝ) : ℂ)‖ = ‖((∫ ω, g ω ∂(μ n)) - ∫ ω, W ω ∂(μ n)) + ((∫ ω, W ω ∂(μ n)) - ((exp (-c) : ℝ) : ℂ))‖ := by congr 1 ring _ ≤ ‖(∫ ω, g ω ∂(μ n)) - ∫ ω, W ω ∂(μ n)‖ + ‖(∫ ω, W ω ∂(μ n)) - ((exp (-c) : ℝ) : ℂ)‖ := norm_add_le _ _ _ ≤ C * ∫ ω, |V ω - 1| ∂(μ n) + exp (c * K) * (|t| ^ 3 * η * K + (2 / η ^ 2 + |t| / η + t ^ 2 / 2) * δ + (c ^ 2 / 2) * ((η ^ 2 + δ) * K)) := add_le_add hDiff (by simpa only [c] using hComp) _ = _ := by dsimp [C, V, c] ring
ConditionalTaylor 1 core · 4 supporting This module isolates the one-increment analytic estimates used by a martingale-array characteristic-function argument. ★ integral_norm_expQuadraticRemainder_le
Conditional Taylor estimates for martingale characteristic functions
This module isolates the one-increment analytic estimates used by a martingale-array characteristic-function argument. It records the exact conditional quadratic expansion, a bounded predictable pull-out estimate, and the integrated truncated-remainder bound. These results do not assume independence.
For a square-integrable real random variable, a positive truncation level, and a frequency small at that level, the integrated quadratic exponential remainder is bounded by a cubic small-jump term plus the truncated second moment of the large jumps.
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
condExp_ofReal_ae_eq_zerotheorem — If the conditioning sigma-algebra is contained in the ambient sigma-algebra, a real random variable is integrable, and has conditional mean zero, then its complex embedding also has conditional mean zero.hypothesesconclusionμ[(fun ω => (X ω : ℂ)) | m] =ᵐ[μ] 0Proof (Lean source)
theorem condExp_ofReal_ae_eq_zero [IsProbabilityMeasure μ] (hm : m ≤ mΩ) (X : Ω → ℝ) (hX : Integrable X μ) (hZero : μ[X | m] =ᵐ[μ] 0) : μ[(fun ω => (X ω : ℂ)) | m] =ᵐ[μ] 0 := by /- Apply `ContinuousLinearMap.comp_condExp_comm` to the real-to-complex continuous linear map, then rewrite with `hZero`. -/ change μ[Complex.ofRealCLM ∘ X | m] =ᵐ[μ] 0 calc μ[Complex.ofRealCLM ∘ X | m] =ᵐ[μ] Complex.ofRealCLM ∘ μ[X | m] := (Complex.ofRealCLM.comp_condExp_comm hX).symm _ =ᵐ[μ] 0 := hZero.mono (fun ω hω => by simp [Function.comp_apply, hω]) -
condExp_cexp_ae_eq_quadratic_add_remaindertheorem — For a conditioning sigma-algebra contained in the ambient sigma-algebra, a square-integrable real random variable with conditional mean zero, the conditional characteristic-function increment is exactly its constant term, conditional quadratic term, and conditional Taylor remainder.hypothesesconclusion=ᵐ[μ] fun ω => 1- (((t ^ 2 / 2 : ℝ) : ℂ) * ((μ[(fun ω => X ω ^ 2) | m] ω : ℝ) : ℂ))+ μ[(fun ω => expQuadraticRemainder (t * X ω)) | m] ωProof (Lean source)
theorem condExp_cexp_ae_eq_quadratic_add_remainder [IsProbabilityMeasure μ] (hm : m ≤ mΩ) (X : Ω → ℝ) (hX : MemLp X 2 μ) (hZero : μ[X | m] =ᵐ[μ] 0) (t : ℝ) : μ[(fun ω => exp (I * ((t * X ω : ℝ) : ℂ))) | m] =ᵐ[μ] fun ω => 1 - (((t ^ 2 / 2 : ℝ) : ℂ) * ((μ[(fun ω => X ω ^ 2) | m] ω : ℝ) : ℂ)) + μ[(fun ω => expQuadraticRemainder (t * X ω)) | m] ω := by /- Rearrange the defining Taylor identity pointwise, establish integrability of every term from `hX` and the global remainder bound, and use conditional expectation linearity. The linear term vanishes by `condExp_ofReal_ae_eq_zero`; commute real-to-complex coercion through the conditional expectation for the quadratic term. -/ have hX1 : Integrable X μ := hX.integrable (by norm_num) have hX2 : Integrable (fun ω => X ω ^ 2) μ := hX.integrable_sq have hlin : Integrable (fun ω => (I * (t : ℂ)) * (X ω : ℂ)) μ := hX1.ofReal.const_mul _ have hquad : Integrable (fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) μ := hX2.ofReal.const_mul _ have hexp : Integrable (fun ω => exp (I * ((t * X ω : ℝ) : ℂ))) μ := by have hmeas : AEStronglyMeasurable (fun ω => exp (I * ((t * X ω : ℝ) : ℂ))) μ := by fun_prop refine Integrable.mono' (integrable_const (1 : ℝ)) hmeas ?_ filter_upwards with ω rw [Complex.norm_exp] simp have hrem : Integrable (fun ω => expQuadraticRemainder (t * X ω)) μ := by apply (((hexp.sub (integrable_const (1 : ℂ))).sub hlin).add hquad).congr filter_upwards with ω rw [expQuadraticRemainder] push_cast simp only [Pi.add_apply, Pi.sub_apply] ring have hpoint : (fun ω => exp (I * ((t * X ω : ℝ) : ℂ))) = (fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ) + expQuadraticRemainder (t * X ω)) := by funext ω rw [expQuadraticRemainder] push_cast ring rw [hpoint] have hconst : Integrable (fun _ : Ω => (1 : ℂ)) μ := integrable_const _ have hbase : Integrable (fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) μ := (hconst.add hlin).sub hquad have hsplit : μ[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ) + expQuadraticRemainder (t * X ω)) | m] =ᵐ[μ] fun ω => μ[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | m] ω + μ[(fun ω => expQuadraticRemainder (t * X ω)) | m] ω := by convert condExp_add hbase hrem m using 1 <;> ext ω <;> rfl have hsub : μ[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | m] =ᵐ[μ] fun ω => μ[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ)) | m] ω - μ[(fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | m] ω := by convert condExp_sub (hconst.add hlin) hquad m using 1 <;> ext ω <;> rfl have hadd : μ[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ)) | m] =ᵐ[μ] fun ω => μ[(fun _ : Ω => (1 : ℂ)) | m] ω + μ[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | m] ω := by convert condExp_add hconst hlin m using 1 <;> ext ω <;> rfl have hlinZero : μ[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | m] =ᵐ[μ] 0 := by have hsmul : μ[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | m] =ᵐ[μ] fun ω => (I * (t : ℂ)) * μ[(fun ω => (X ω : ℂ)) | m] ω := by convert condExp_smul (μ := μ) (I * (t : ℂ)) (fun ω => (X ω : ℂ)) m using 1 <;> ext ω <;> rfl have hzero := condExp_ofReal_ae_eq_zero (mΩ := mΩ) (m := m) (μ := μ) hm X hX1 hZero filter_upwards [hsmul, hzero] with ω hsmulω hzeroω simpa only [Pi.smul_apply, Pi.zero_apply, smul_eq_mul, mul_zero] using hsmulω.trans (congrArg ((I * (t : ℂ)) * ·) hzeroω) have hquadComm : μ[(fun ω => ((X ω ^ 2 : ℝ) : ℂ)) | m] =ᵐ[μ] fun ω => ((μ[(fun ω => X ω ^ 2) | m] ω : ℝ) : ℂ) := by change μ[Complex.ofRealCLM ∘ (fun ω => X ω ^ 2) | m] =ᵐ[μ] Complex.ofRealCLM ∘ μ[(fun ω => X ω ^ 2) | m] exact (Complex.ofRealCLM.comp_condExp_comm hX2).symm have hquadCE : μ[(fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | m] =ᵐ[μ] fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * μ[(fun ω => ((X ω ^ 2 : ℝ) : ℂ)) | m] ω := by convert condExp_smul (μ := μ) ((t ^ 2 / 2 : ℝ) : ℂ) (fun ω => ((X ω ^ 2 : ℝ) : ℂ)) m using 1 <;> ext ω <;> rfl have hone : μ[(fun _ : Ω => (1 : ℂ)) | m] = fun _ => 1 := by exact condExp_const (μ := μ) hm (1 : ℂ) filter_upwards [hsplit, hsub, hadd, hlinZero, hquadCE, hquadComm] with ω hsplitω hsubω haddω hlinZeroω hquadCEω hquadCommω rw [hsplitω, hsubω, haddω, hlinZeroω, hquadCEω, hquadCommω] rw [congrFun hone ω] simp only [Pi.zero_apply] ring -
integral_mul_condExp_eq_integral_mul_of_ae_boundtheorem — If the conditioning sigma-algebra is contained in the ambient sigma-algebra, an integrable complex function is multiplied by a predictable complex weight whose norm has an almost-sure finite bound, then integrating after conditional expectation gives the original weighted integral.hypotheseshm :m ≤ mΩf g :Ω → ℂhf :Integrable f μhg :StronglyMeasurable[m] gB :ℝhgBound :∀ᵐ ω ∂μ, ‖g ω‖ ≤ Bconclusion(∫ ω, g ω * μ[f | m] ω ∂μ) = ∫ ω, g ω * f ω ∂μProof (Lean source)
theorem integral_mul_condExp_eq_integral_mul_of_ae_bound [IsProbabilityMeasure μ] (hm : m ≤ mΩ) (f g : Ω → ℂ) (hf : Integrable f μ) (hg : StronglyMeasurable[m] g) (B : ℝ) (hgBound : ∀ᵐ ω ∂μ, ‖g ω‖ ≤ B) : (∫ ω, g ω * μ[f | m] ω ∂μ) = ∫ ω, g ω * f ω ∂μ := by have hgf : Integrable (fun ω => g ω * f ω) μ := hf.bdd_mul (hg.mono hm).aestronglyMeasurable hgBound have hpull : μ[(fun ω => g ω * f ω) | m] =ᵐ[μ] fun ω => g ω * μ[f | m] ω := by convert condExp_stronglyMeasurable_bilin_of_bound (mΩ := mΩ) (μ := μ) (ContinuousLinearMap.mul ℝ ℂ) hm hg hf B hgBound using 1 <;> ext ω <;> rfl calc (∫ ω, g ω * μ[f | m] ω ∂μ) = ∫ ω, μ[(fun ω => g ω * f ω) | m] ω ∂μ := integral_congr_ae hpull.symm _ = ∫ ω, g ω * f ω ∂μ := by rw [integral_condExp (m₀ := mΩ) (μ := μ) hm] -
norm_integral_mul_condExp_le_of_ae_boundtheorem — If the conditioning sigma-algebra is contained in the ambient sigma-algebra, an integrable complex error is multiplied by a predictable complex weight whose norm is bounded by a nonnegative constant, then the norm of the integral of the weight times the conditional error is at most that constant times the integral norm of the original error.hypotheseshm :m ≤ mΩf g :Ω → ℂhf :Integrable f μhg :StronglyMeasurable[m] gB :ℝhB :0 ≤ BhgBound :∀ᵐ ω ∂μ, ‖g ω‖ ≤ Bconclusion‖∫ ω, g ω * μ[f | m] ω ∂μ‖ ≤ B * ∫ ω, ‖f ω‖ ∂μProof (Lean source)
theorem norm_integral_mul_condExp_le_of_ae_bound [IsProbabilityMeasure μ] (hm : m ≤ mΩ) (f g : Ω → ℂ) (hf : Integrable f μ) (hg : StronglyMeasurable[m] g) (B : ℝ) (hB : 0 ≤ B) (hgBound : ∀ᵐ ω ∂μ, ‖g ω‖ ≤ B) : ‖∫ ω, g ω * μ[f | m] ω ∂μ‖ ≤ B * ∫ ω, ‖f ω‖ ∂μ := by /- Use the conditional-expectation pull-out theorem for the bounded `m`-measurable factor `g`, then `integral_condExp`. Bound the resulting integral of `g * f` by the integral of its norm and use `hgBound`. -/ have hgf : Integrable (fun ω => g ω * f ω) μ := hf.bdd_mul (hg.mono hm).aestronglyMeasurable hgBound have hpull : μ[(fun ω => g ω * f ω) | m] =ᵐ[μ] fun ω => g ω * μ[f | m] ω := by convert condExp_stronglyMeasurable_bilin_of_bound (mΩ := mΩ) (μ := μ) (ContinuousLinearMap.mul ℝ ℂ) hm hg hf B hgBound using 1 <;> ext ω <;> rfl have hnorm : Integrable (fun ω => ‖g ω * f ω‖) μ := hgf.norm have hmajor : Integrable (fun ω => B * ‖f ω‖) μ := hf.norm.const_mul B calc ‖∫ ω, g ω * μ[f | m] ω ∂μ‖ = ‖∫ ω, μ[(fun ω => g ω * f ω) | m] ω ∂μ‖ := by rw [integral_congr_ae hpull] _ = ‖∫ ω, g ω * f ω ∂μ‖ := by rw [integral_condExp (m₀ := mΩ) (μ := μ) hm] _ ≤ ∫ ω, ‖g ω * f ω‖ ∂μ := norm_integral_le_integral_norm _ _ ≤ ∫ ω, B * ‖f ω‖ ∂μ := by apply integral_mono_ae hnorm hmajor filter_upwards [hgBound] with ω hω rw [norm_mul] exact mul_le_mul_of_nonneg_right hω (norm_nonneg _) _ = B * ∫ ω, ‖f ω‖ ∂μ := integral_const_mul _ _
ConditionalTelescoping 2 core · 3 supporting This module turns the one-increment conditional Taylor formula into exact and bounded telescoping formulas for a finite martingale-difference row. ★ partialRowSum_stronglyMeasurable
Conditional telescoping for finite martingale rows
This module turns the one-increment conditional Taylor formula into exact and bounded telescoping formulas for a finite martingale-difference row. It keeps the random conditional variances visible; later stopping and blocking arguments can therefore compare them with deterministic Gaussian time without assuming independence.
The partial row sum through time r adds the first r increments, capped at the row length.
Definition (Lean source)
For a martingale-difference triangular array, a row, and a time index, the partial row sum is measurable with respect to that row's filtration at that time.
Formal statement
Proof (Lean source)
3 supporting declarations (lemmas, instances)
-
integral_cexp_partialRowSum_succtheorem — For an active increment, the integral characteristic function after that increment equals the preceding exponential weight times the exact conditional quadratic expansion.hypothesesconclusion= ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω) ∂(μ n)Proof (Lean source)
theorem integral_cexp_partialRowSum_succ [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n k : ℕ) (hk : k < A.rowLength n) (t : ℝ) : (∫ ω, exp (I * ((t * A.partialRowSum n (k + 1) ω : ℝ) : ℂ)) ∂(μ n)) = ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω) ∂(μ n) := by let f : Ω n → ℂ := fun ω => exp (I * ((t * A.increment n k ω : ℝ) : ℂ)) let g : Ω n → ℂ := fun ω => exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) have hfMeas : AEStronglyMeasurable f (μ n) := by have hX := (A.squareIntegrable n k hk).aestronglyMeasurable dsimp [f] fun_prop have hf : Integrable f (μ n) := by refine Integrable.mono' (integrable_const (1 : ℝ)) hfMeas ?_ filter_upwards with ω dsimp [f] rw [Complex.norm_exp] simp have hg : StronglyMeasurable[A.filtration n k] g := by have hS := A.partialRowSum_stronglyMeasurable n k dsimp [g] fun_prop have hgBound : ∀ᵐ ω ∂(μ n), ‖g ω‖ ≤ 1 := by filter_upwards with ω dsimp [g] rw [Complex.norm_exp] simp have hpull : (μ n)[(fun ω => g ω * f ω) | A.filtration n k] =ᵐ[μ n] fun ω => g ω * (μ n)[f | A.filtration n k] ω := by convert condExp_stronglyMeasurable_bilin_of_bound (ContinuousLinearMap.mul ℝ ℂ) ((A.filtration n).le k) hg hf 1 hgBound using 1 <;> ext ω <;> rfl have htaylor : (μ n)[f | A.filtration n k] =ᵐ[μ n] fun ω => 1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω := by let X := A.increment n k have hX2 := A.squareIntegrable n k hk have hX1 : Integrable X (μ n) := hX2.integrable (by norm_num) have hsq : Integrable (fun ω => X ω ^ 2) (μ n) := hX2.integrable_sq have hlin : Integrable (fun ω => (I * (t : ℂ)) * (X ω : ℂ)) (μ n) := hX1.ofReal.const_mul _ have hquad : Integrable (fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) (μ n) := hsq.ofReal.const_mul _ have hrem : Integrable (fun ω => expQuadraticRemainder (t * X ω)) (μ n) := by apply (((hf.sub (integrable_const (1 : ℂ))).sub hlin).add hquad).congr filter_upwards with ω dsimp [f, X] rw [expQuadraticRemainder] push_cast ring have hpoint : f = fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ) + expQuadraticRemainder (t * X ω) := by funext ω dsimp [f, X] rw [expQuadraticRemainder] push_cast ring rw [hpoint] have hconst : Integrable (fun _ : Ω n => (1 : ℂ)) (μ n) := integrable_const _ have hbase : Integrable (fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) (μ n) := (hconst.add hlin).sub hquad have hsplitCE : (μ n)[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ) + expQuadraticRemainder (t * X ω)) | A.filtration n k] =ᵐ[μ n] fun ω => (μ n)[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] ω + (μ n)[(fun ω => expQuadraticRemainder (t * X ω)) | A.filtration n k] ω := by convert condExp_add hbase hrem (A.filtration n k) using 1 <;> ext ω <;> rfl have hsub : (μ n)[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ) - ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] =ᵐ[μ n] fun ω => (μ n)[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ)) | A.filtration n k] ω - (μ n)[(fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] ω := by convert condExp_sub (hconst.add hlin) hquad (A.filtration n k) using 1 <;> ext ω <;> rfl have hadd : (μ n)[(fun ω => (1 : ℂ) + (I * (t : ℂ)) * (X ω : ℂ)) | A.filtration n k] =ᵐ[μ n] fun ω => (μ n)[(fun _ : Ω n => (1 : ℂ)) | A.filtration n k] ω + (μ n)[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | A.filtration n k] ω := by convert condExp_add hconst hlin (A.filtration n k) using 1 <;> ext ω <;> rfl have hXComplex : (μ n)[(fun ω => (X ω : ℂ)) | A.filtration n k] =ᵐ[μ n] 0 := by change (μ n)[Complex.ofRealCLM ∘ X | A.filtration n k] =ᵐ[μ n] 0 calc (μ n)[Complex.ofRealCLM ∘ X | A.filtration n k] =ᵐ[μ n] Complex.ofRealCLM ∘ (μ n)[X | A.filtration n k] := (Complex.ofRealCLM.comp_condExp_comm hX1).symm _ =ᵐ[μ n] 0 := (A.condExp_zero n k hk).mono (fun ω hω => by simp [Function.comp_apply, X, hω]) have hlinZero : (μ n)[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | A.filtration n k] =ᵐ[μ n] 0 := by have hsmul : (μ n)[(fun ω => (I * (t : ℂ)) * (X ω : ℂ)) | A.filtration n k] =ᵐ[μ n] fun ω => (I * (t : ℂ)) * (μ n)[(fun ω => (X ω : ℂ)) | A.filtration n k] ω := by convert condExp_smul (μ := μ n) (I * (t : ℂ)) (fun ω => (X ω : ℂ)) (A.filtration n k) using 1 <;> ext ω <;> rfl filter_upwards [hsmul, hXComplex] with ω hsmulω hzeroω simpa only [Pi.zero_apply, mul_zero] using hsmulω.trans (congrArg ((I * (t : ℂ)) * ·) hzeroω) have hquadComm : (μ n)[(fun ω => ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] =ᵐ[μ n] fun ω => (((μ n)[(fun ω => X ω ^ 2) | A.filtration n k] ω : ℝ) : ℂ) := by change (μ n)[Complex.ofRealCLM ∘ (fun ω => X ω ^ 2) | A.filtration n k] =ᵐ[μ n] Complex.ofRealCLM ∘ (μ n)[(fun ω => X ω ^ 2) | A.filtration n k] exact (Complex.ofRealCLM.comp_condExp_comm hsq).symm have hquadCE : (μ n)[(fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] =ᵐ[μ n] fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * (μ n)[(fun ω => ((X ω ^ 2 : ℝ) : ℂ)) | A.filtration n k] ω := by convert condExp_smul (μ := μ n) ((t ^ 2 / 2 : ℝ) : ℂ) (fun ω => ((X ω ^ 2 : ℝ) : ℂ)) (A.filtration n k) using 1 <;> ext ω <;> rfl have hone := condExp_const (μ := μ n) ((A.filtration n).le k) (1 : ℂ) filter_upwards [hsplitCE, hsub, hadd, hlinZero, hquadCE, hquadComm] with ω hsplitω hsubω haddω hlinZeroω hquadCEω hquadCommω rw [hsplitω, hsubω, haddω, hlinZeroω, hquadCEω, hquadCommω] rw [congrFun hone ω] simp only [Pi.zero_apply, X] ring have hsplit : (fun ω => exp (I * ((t * A.partialRowSum n (k + 1) ω : ℝ) : ℂ))) = fun ω => g ω * f ω := by funext ω dsimp [g, f] unfold partialRowSum rw [Nat.min_eq_left (Nat.succ_le_of_lt hk)] rw [Nat.min_eq_left (le_trans (Nat.le_succ k) (Nat.succ_le_of_lt hk))] rw [Finset.sum_range_succ, ← Complex.exp_add] congr 1 simp only [Pi.add_apply, Finset.sum_apply] push_cast ring rw [hsplit] calc (∫ ω, g ω * f ω ∂(μ n)) = ∫ ω, (μ n)[(fun ω => g ω * f ω) | A.filtration n k] ω ∂(μ n) := by rw [integral_condExp ((A.filtration n).le k)] _ = ∫ ω, g ω * (μ n)[f | A.filtration n k] ω ∂(μ n) := integral_congr_ae hpull _ = ∫ ω, g ω * (1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ)) + (μ n)[(fun ω => expQuadraticRemainder (t * A.increment n k ω)) | A.filtration n k] ω) ∂(μ n) := by apply integral_congr_ae filter_upwards [htaylor] with ω hω exact congrArg (g ω * ·) hω _ = _ := rfl -
norm_integral_cexp_partialRowSum_succ_sub_quadratic_letheorem — For an active increment, the error in replacing its conditional characteristic-function factor by the quadratic factor is bounded by the expected norm of its Taylor remainder.hypothesesconclusion‖(∫ ω, exp (I * ((t * A.partialRowSum n (k + 1) ω : ℝ) : ℂ)) ∂(μ n)) - ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ))) ∂(μ n)‖≤ ∫ ω, ‖expQuadraticRemainder (t * A.increment n k ω)‖ ∂(μ n)Proof (Lean source)
theorem norm_integral_cexp_partialRowSum_succ_sub_quadratic_le [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n k : ℕ) (hk : k < A.rowLength n) (t : ℝ) : ‖(∫ ω, exp (I * ((t * A.partialRowSum n (k + 1) ω : ℝ) : ℂ)) ∂(μ n)) - ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ))) ∂(μ n)‖ ≤ ∫ ω, ‖expQuadraticRemainder (t * A.increment n k ω)‖ ∂(μ n) := by let rem : Ω n → ℂ := fun ω => expQuadraticRemainder (t * A.increment n k ω) let g : Ω n → ℂ := fun ω => exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) let q : Ω n → ℂ := fun ω => 1 - (((t ^ 2 / 2 : ℝ) : ℂ) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ)) have hX1 : Integrable (A.increment n k) (μ n) := (A.squareIntegrable n k hk).integrable (by norm_num) have hX2 : Integrable (fun ω => (A.increment n k ω) ^ 2) (μ n) := (A.squareIntegrable n k hk).integrable_sq have hexp : Integrable (fun ω => exp (I * ((t * A.increment n k ω : ℝ) : ℂ))) (μ n) := by have hmeas : AEStronglyMeasurable (fun ω => exp (I * ((t * A.increment n k ω : ℝ) : ℂ))) (μ n) := by have := hX1.aestronglyMeasurable fun_prop refine Integrable.mono' (integrable_const (1 : ℝ)) hmeas ?_ filter_upwards with ω rw [Complex.norm_exp] simp have hlin : Integrable (fun ω => (I * (t : ℂ)) * (A.increment n k ω : ℂ)) (μ n) := hX1.ofReal.const_mul _ have hquad : Integrable (fun ω => ((t ^ 2 / 2 : ℝ) : ℂ) * (((A.increment n k ω) ^ 2 : ℝ) : ℂ)) (μ n) := hX2.ofReal.const_mul _ have hrem : Integrable rem (μ n) := by apply (((hexp.sub (integrable_const (1 : ℂ))).sub hlin).add hquad).congr filter_upwards with ω dsimp [rem] rw [expQuadraticRemainder] push_cast ring have hg : StronglyMeasurable[A.filtration n k] g := by have hS := A.partialRowSum_stronglyMeasurable n k dsimp [g] fun_prop have hgBound : ∀ᵐ ω ∂(μ n), ‖g ω‖ ≤ 1 := by filter_upwards with ω dsimp [g] rw [Complex.norm_exp] simp have hgAmbient : StronglyMeasurable g := hg.mono ((A.filtration n).le k) have hq : Integrable q (μ n) := by have hce : Integrable ((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k]) (μ n) := integrable_condExp exact (integrable_const (1 : ℂ)).sub (hce.ofReal.const_mul _) have hgq : Integrable (fun ω => g ω * q ω) (μ n) := hq.bdd_mul hgAmbient.aestronglyMeasurable hgBound have hceRem : Integrable ((μ n)[rem | A.filtration n k]) (μ n) := integrable_condExp have hgceRem : Integrable (fun ω => g ω * (μ n)[rem | A.filtration n k] ω) (μ n) := hceRem.bdd_mul hgAmbient.aestronglyMeasurable hgBound have hpull : (μ n)[(fun ω => g ω * rem ω) | A.filtration n k] =ᵐ[μ n] fun ω => g ω * (μ n)[rem | A.filtration n k] ω := by convert condExp_stronglyMeasurable_bilin_of_bound (ContinuousLinearMap.mul ℝ ℂ) ((A.filtration n).le k) hg hrem 1 hgBound using 1 <;> ext ω <;> rfl have hnorm : ‖∫ ω, g ω * (μ n)[rem | A.filtration n k] ω ∂(μ n)‖ ≤ ∫ ω, ‖rem ω‖ ∂(μ n) := by have hgf : Integrable (fun ω => g ω * rem ω) (μ n) := hrem.bdd_mul hgAmbient.aestronglyMeasurable hgBound calc ‖∫ ω, g ω * (μ n)[rem | A.filtration n k] ω ∂(μ n)‖ = ‖∫ ω, (μ n)[(fun ω => g ω * rem ω) | A.filtration n k] ω ∂(μ n)‖ := by rw [integral_congr_ae hpull] _ = ‖∫ ω, g ω * rem ω ∂(μ n)‖ := by rw [integral_condExp ((A.filtration n).le k)] _ ≤ ∫ ω, ‖g ω * rem ω‖ ∂(μ n) := norm_integral_le_integral_norm _ _ ≤ ∫ ω, ‖rem ω‖ ∂(μ n) := by apply integral_mono_ae hgf.norm hrem.norm filter_upwards [hgBound] with ω hω rw [norm_mul] simpa using mul_le_mul_of_nonneg_right hω (norm_nonneg (rem ω)) rw [A.integral_cexp_partialRowSum_succ n k hk t] change ‖(∫ ω, g ω * (q ω + (μ n)[rem | A.filtration n k] ω) ∂(μ n)) - ∫ ω, g ω * q ω ∂(μ n)‖ ≤ ∫ ω, ‖rem ω‖ ∂(μ n) rw [show (fun ω => g ω * (q ω + (μ n)[rem | A.filtration n k] ω)) = fun ω => g ω * q ω + g ω * (μ n)[rem | A.filtration n k] ω by funext ω ring] rw [integral_add hgq hgceRem, add_sub_cancel_left] exact hnorm -
norm_integral_cexp_rowSum_sub_quadraticTelescoping_letheorem — For one finite martingale-difference row, the error in its full characteristic function after extracting all conditional quadratic terms is bounded by the sum of the expected one-increment Taylor remainders.hypothesesconclusion‖(∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n)) - 1 + ((t ^ 2 / 2 : ℝ) : ℂ) * (∑ k ∈ range (A.rowLength n), ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ) ∂(μ n))‖≤ ∑ k ∈ range (A.rowLength n), ∫ ω, ‖expQuadraticRemainder (t * A.increment n k ω)‖ ∂(μ n)Proof (Lean source)
theorem norm_integral_cexp_rowSum_sub_quadraticTelescoping_le [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n : ℕ) (t : ℝ) : ‖(∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n)) - 1 + ((t ^ 2 / 2 : ℝ) : ℂ) * (∑ k ∈ range (A.rowLength n), ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ) ∂(μ n))‖ ≤ ∑ k ∈ range (A.rowLength n), ∫ ω, ‖expQuadraticRemainder (t * A.increment n k ω)‖ ∂(μ n) := by let F : ℕ → ℂ := fun k => ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) ∂(μ n) let V : ℕ → ℂ := fun k => ∫ ω, exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) * (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ) ∂(μ n) let R : ℕ → ℝ := fun k => ∫ ω, ‖expQuadraticRemainder (t * A.increment n k ω)‖ ∂(μ n) let c : ℂ := ((t ^ 2 / 2 : ℝ) : ℂ) have hstep : ∀ k < A.rowLength n, ‖F (k + 1) - F k + c * V k‖ ≤ R k := by intro k hk let g : Ω n → ℂ := fun ω => exp (I * ((t * A.partialRowSum n k ω : ℝ) : ℂ)) let v : Ω n → ℂ := fun ω => (((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k] ω : ℝ) : ℂ) have hgFil : StronglyMeasurable[A.filtration n k] g := by have hS := A.partialRowSum_stronglyMeasurable n k dsimp [g] fun_prop have hg : StronglyMeasurable g := hgFil.mono ((A.filtration n).le k) have hgBound : ∀ᵐ ω ∂(μ n), ‖g ω‖ ≤ 1 := by filter_upwards with ω dsimp [g] rw [Complex.norm_exp] simp have hgInt : Integrable g (μ n) := by refine Integrable.mono' (integrable_const (1 : ℝ)) hg.aestronglyMeasurable ?_ exact hgBound have hv : Integrable v (μ n) := by have hce : Integrable ((μ n)[(fun ω => (A.increment n k ω) ^ 2) | A.filtration n k]) (μ n) := integrable_condExp exact hce.ofReal have hgv : Integrable (fun ω => g ω * v ω) (μ n) := hv.bdd_mul hg.aestronglyMeasurable hgBound have hrewrite : (∫ ω, g ω * (1 - c * v ω) ∂(μ n)) = F k - c * V k := by calc (∫ ω, g ω * (1 - c * v ω) ∂(μ n)) = ∫ ω, g ω - c * (g ω * v ω) ∂(μ n) := by apply integral_congr_ae filter_upwards with ω ring _ = (∫ ω, g ω ∂(μ n)) - ∫ ω, c * (g ω * v ω) ∂(μ n) := integral_sub hgInt (hgv.const_mul c) _ = F k - c * V k := by rw [integral_const_mul] have h := A.norm_integral_cexp_partialRowSum_succ_sub_quadratic_le n k hk t change ‖F (k + 1) - (∫ ω, g ω * (1 - c * v ω) ∂(μ n))‖ ≤ R k at h rw [hrewrite] at h have heq : F (k + 1) - (F k - c * V k) = F (k + 1) - F k + c * V k := by ring rw [heq] at h exact h have hF0 : F 0 = 1 := by simp [F, partialRowSum] have hFlast : F (A.rowLength n) = ∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n) := by simp [F, partialRowSum, rowSum] have htel : (∑ k ∈ range (A.rowLength n), (F (k + 1) - F k + c * V k)) = (∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n)) - 1 + c * (∑ k ∈ range (A.rowLength n), V k) := by rw [Finset.sum_add_distrib, Finset.sum_range_sub, ← Finset.mul_sum] rw [hF0, hFlast] change ‖(∫ ω, exp (I * ((t * A.rowSum n ω : ℝ) : ℂ)) ∂(μ n)) - 1 + c * (∑ k ∈ range (A.rowLength n), V k)‖ ≤ ∑ k ∈ range (A.rowLength n), R k rw [← htel] calc ‖∑ k ∈ range (A.rowLength n), (F (k + 1) - F k + c * V k)‖ ≤ ∑ k ∈ range (A.rowLength n), ‖F (k + 1) - F k + c * V k‖ := norm_sum_le _ _ _ ≤ ∑ k ∈ range (A.rowLength n), R k := by apply Finset.sum_le_sum intro k hk exact hstep k (Finset.mem_range.mp hk)
GaussianBounds 1 core · 3 supporting This module collects the scalar exponential estimates used by the compensated Gaussian-time interpolation in the martingale-array CLT. ★ abs_exp_varianceCorrection_sub_one_le
Deterministic Gaussian interpolation bounds
This module collects the scalar exponential estimates used by the compensated Gaussian-time interpolation in the martingale-array CLT. They are deterministic and make no probabilistic or independence assumptions.
If the exponential coefficient is nonnegative and a variance value lies between zero and a nonnegative budget, then its terminal Gaussian correction is Lipschitz in its distance from one, with a constant depending only on the budget.
Formal statement
Proof (Lean source)
3 supporting declarations (lemmas, instances)
-
abs_exp_mul_one_sub_sub_one_letheorem — For a nonnegative real argument, the error in the exponential Euler factor exp(x) * (1 - x) is at most exp(x) * x² / 2.Proof (Lean source)
theorem abs_exp_mul_one_sub_sub_one_le (x : ℝ) (hx : 0 ≤ x) : |exp x * (1 - x) - 1| ≤ exp x * x ^ 2 / 2 := by let f : ℝ → ℝ := fun y => 1 - y + y ^ 2 / 2 - exp (-y) have hfderiv (y : ℝ) : HasDerivAt f (-1 + y + exp (-y)) y := by have hraw := ((((hasDerivAt_const y (1 : ℝ)).sub (hasDerivAt_id y)).add (((hasDerivAt_id y).mul (hasDerivAt_id y)).div_const 2)).sub ((Real.hasDerivAt_exp (-y)).comp y (hasDerivAt_neg y))) have hg : HasDerivAt (fun y : ℝ => 1 - y + y ^ 2 / 2 - exp (-y)) (0 - 1 + (1 * y + y * 1) / 2 - exp (-y) * (-1)) y := by apply hraw.congr_of_eventuallyEq filter_upwards with z simp [pow_two] simpa only [f] using (hg.congr_deriv (by ring)) have hfmono : Monotone f := monotone_of_deriv_nonneg (fun y => (hfderiv y).differentiableAt) (fun y => by rw [(hfderiv y).deriv] linarith [Real.one_sub_le_exp_neg y]) have htaylor : exp (-x) ≤ 1 - x + x ^ 2 / 2 := by have h := hfmono hx simpa [f] using h have hsign : exp x * (1 - x) - 1 ≤ 0 := by have h := mul_le_mul_of_nonneg_left (Real.one_sub_le_exp_neg x) (Real.exp_nonneg x) rw [← Real.exp_add] at h norm_num at h linarith rw [abs_of_nonpos hsign] have h := mul_le_mul_of_nonneg_left htaylor (Real.exp_nonneg x) rw [← Real.exp_add] at h norm_num at h nlinarith -
abs_exp_sub_one_le_exp_abs_mul_abstheorem — For any real argument, the increment of the real exponential is bounded by exp(|x|) * |x|.Proof (Lean source)
theorem abs_exp_sub_one_le_exp_abs_mul_abs (x : ℝ) : |exp x - 1| ≤ exp |x| * |x| := by have h := Complex.norm_exp_sub_sum_le_norm_mul_exp (x : ℂ) 1 simp only [Finset.sum_range_one, pow_zero, Nat.factorial_zero, cast_one, div_one, pow_one] at h rw [← Complex.ofReal_exp] at h rw [← Complex.ofReal_one, ← Complex.ofReal_sub] at h simp only [Complex.norm_real, Real.norm_eq_abs] at h simpa only [mul_comm] using h -
norm_exp_mul_quadraticFactor_sub_one_letheorem — For nonnegative coefficients and a complex Taylor error, one compensated Gaussian step differs from one by at most the exponential weight times the Taylor error plus a quadratic Euler error.hypothesesc v :ℝr :ℂhc :0 ≤ chv :0 ≤ vProof (Lean source)
theorem norm_exp_mul_quadraticFactor_sub_one_le (c v : ℝ) (r : ℂ) (hc : 0 ≤ c) (hv : 0 ≤ v) : ‖((exp (c * v) : ℝ) : ℂ) * (1 - (((c * v : ℝ) : ℂ)) + r) - 1‖ ≤ exp (c * v) * (‖r‖ + (c * v) ^ 2 / 2) := by have hcv : 0 ≤ c * v := mul_nonneg hc hv calc ‖((exp (c * v) : ℝ) : ℂ) * (1 - (((c * v : ℝ) : ℂ)) + r) - 1‖ = ‖(((exp (c * v) * (1 - c * v) - 1 : ℝ) : ℂ) + ((exp (c * v) : ℝ) : ℂ) * r)‖ := by congr 1 push_cast ring _ ≤ ‖((exp (c * v) * (1 - c * v) - 1 : ℝ) : ℂ)‖ + ‖((exp (c * v) : ℝ) : ℂ) * r‖ := norm_add_le _ _ _ = |exp (c * v) * (1 - c * v) - 1| + exp (c * v) * ‖r‖ := by rw [Complex.norm_real, Complex.norm_mul, Complex.norm_real] simp only [Real.norm_eq_abs, abs_of_pos (Real.exp_pos _)] _ ≤ exp (c * v) * (c * v) ^ 2 / 2 + exp (c * v) * ‖r‖ := by gcongr exact abs_exp_mul_one_sub_sub_one_le (c * v) hcv _ = exp (c * v) * (‖r‖ + (c * v) ^ 2 / 2) := by ring
Lyapunov 1 core · 3 supporting This module provides bridges from deterministic predictable variance and from fourth-moment Lyapunov conditions to the convergence-in-probability hypotheses of the martingale-array central limit theorem. ★ conditionalLindeberg_of_fourthMomentSum
Reusable sufficient conditions for martingale-array CLTs
This module provides bridges from deterministic predictable variance and from fourth-moment Lyapunov conditions to the convergence-in-probability hypotheses of the martingale-array central limit theorem. No independence between increments is assumed.
If every increment has a finite fourth moment and the deterministic sum of unconditional fourth moments tends to zero, then the conditional Lindeberg condition holds at every positive threshold.
Formal statement
Proof (Lean source)
3 supporting declarations (lemmas, instances)
-
predictableQuadraticVariation_tendstoInProbability_of_ae_eqtheorem — If the predictable quadratic variation equals a deterministic scalar in every row and those scalars converge to one, then the predictable quadratic variation converges in probability to one.hypotheses∀ n, IsProbabilityMeasure (μ n)A :v :ℕ → ℝhEq :∀ n, A.predictableQuadraticVariation n =ᵐ[μ n] fun _ => v nconclusionTendstoInProbability μ A.predictableQuadraticVariation 1Proof (Lean source)
theorem predictableQuadraticVariation_tendstoInProbability_of_ae_eq [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (v : ℕ → ℝ) (hEq : ∀ n, A.predictableQuadraticVariation n =ᵐ[μ n] fun _ => v n) (hv : Tendsto v atTop (𝓝 1)) : TendstoInProbability μ A.predictableQuadraticVariation 1 := by intro ε hε have hAbs : Tendsto (fun n => |v n - 1|) atTop (𝓝 0) := by simpa using (hv.sub (tendsto_const_nhds : Tendsto (fun _ : ℕ => (1 : ℝ)) atTop (𝓝 1))).abs have hEventually : ∀ᶠ n in atTop, |v n - 1| < ε := ((tendsto_order.1 hAbs).2 ε hε) apply tendsto_nhds_of_eventually_eq filter_upwards [hEventually] with n hn apply measure_eq_zero_iff_ae_notMem.mpr filter_upwards [hEq n] with ω hω rw [hω] exact not_le_of_gt hn -
conditionalLindeberg_of_conditionalFourthMomenttheorem — If every increment has a finite fourth moment and the conditional fourth-moment row sums converge in probability to zero, then the conditional Lindeberg condition holds at every positive threshold.hypotheses∀ n, IsProbabilityMeasure (μ n)A :hFourth :∀ n kifk < A.rowLength nthenMemLp (A.increment n k) 4 (μ n)hFourthConditional :TendstoInProbability μ A.conditionalFourthMoment 0ε :ℝ0 < εconclusionTendstoInProbability μ (A.conditionalLindeberg ε) 0Proof (Lean source)
theorem conditionalLindeberg_of_conditionalFourthMoment [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (hFourth : ∀ n k, k < A.rowLength n → MemLp (A.increment n k) 4 (μ n)) (hFourthConditional : TendstoInProbability μ A.conditionalFourthMoment 0) : ∀ ε : ℝ, 0 < ε → TendstoInProbability μ (A.conditionalLindeberg ε) 0 := by /- Proof route: pointwise, on `ε < |x|`, one has `x^2 ≤ ε⁻² * x^4`. Apply conditional-expectation monotonicity term by term, sum the resulting a.e. inequalities, and use the squeeze property for convergence in measure. `hFourth` supplies integrability on both sides. -/ intro ε hε let c : ℝ := ε⁻¹ ^ 2 have hc : 0 < c := by dsimp [c] positivity have hFourthIntegrable : ∀ n k, k < A.rowLength n → Integrable (fun ω => (A.increment n k ω) ^ 4) (μ n) := by intro n k hk have hi := (hFourth n k hk).integrable_norm_pow (by norm_num : (4 : ℕ) ≠ 0) simpa only [Real.norm_eq_abs, ← abs_pow, abs_of_nonneg (by positivity : 0 ≤ A.increment n k _ ^ 4)] using hi have hTruncatedIntegrable : ∀ n k, k < A.rowLength n → Integrable (fun ω => if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) (μ n) := by intro n k hk have h2 := A.squareIntegrable n k hk have hsquare : Integrable (fun ω => (A.increment n k ω) ^ 2) (μ n) := (memLp_two_iff_integrable_sq h2.aestronglyMeasurable).mp h2 have hset : NullMeasurableSet {ω | ε < |A.increment n k ω|} (μ n) := aestronglyMeasurable_const.nullMeasurableSet_lt h2.aestronglyMeasurable.norm apply (hsquare.indicator₀ hset).congr filter_upwards [] with ω by_cases hω : ε < |A.increment n k ω| <;> simp [indicator, hω] have hPointwise : ∀ n k, k < A.rowLength n → (fun ω => if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) ≤ᵐ[μ n] (fun ω => c * (A.increment n k ω) ^ 4) := by intro n k hk exact Filter.Eventually.of_forall fun ω => by dsimp [c] by_cases hω : ε < |A.increment n k ω| · rw [if_pos hω] have he2 : ε ^ 2 ≤ (A.increment n k ω) ^ 2 := by rw [sq_le_sq] simpa [abs_of_pos hε] using hω.le have hc' : 0 ≤ ε⁻¹ ^ 2 := sq_nonneg _ calc (A.increment n k ω) ^ 2 = ε⁻¹ ^ 2 * (ε ^ 2 * (A.increment n k ω) ^ 2) := by field_simp _ ≤ ε⁻¹ ^ 2 * ((A.increment n k ω) ^ 2 * (A.increment n k ω) ^ 2) := mul_le_mul_of_nonneg_left (mul_le_mul_of_nonneg_right he2 (sq_nonneg _)) hc' _ = ε⁻¹ ^ 2 * (A.increment n k ω) ^ 4 := by ring · rw [if_neg hω] positivity have hTermBound : ∀ n k, k < A.rowLength n → A.lindebergTerm ε n k ≤ᵐ[μ n] fun ω => c * (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := by intro n k hk have hpointwise' : (fun ω => if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) ≤ᵐ[μ n] c • (fun ω => (A.increment n k ω) ^ 4) := (hPointwise n k hk).mono fun ω hω => by simpa only [Pi.smul_apply, smul_eq_mul] using hω have hmono := condExp_mono (m := A.filtration n k) (hTruncatedIntegrable n k hk) ((hFourthIntegrable n k hk).smul c) hpointwise' have hlinear := condExp_smul (μ := μ n) c (fun ω => (A.increment n k ω) ^ 4) (A.filtration n k) filter_upwards [hmono, hlinear] with ω hmonoω hlinearω unfold MartingaleDifferenceArray.lindebergTerm calc (μ n)[fun ω => if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0 | A.filtration n k] ω ≤ (μ n)[c • fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := hmonoω _ = c * (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := by simpa only [Pi.smul_apply, smul_eq_mul] using hlinearω have hLNonneg : ∀ n, 0 ≤ᵐ[μ n] A.conditionalLindeberg ε n := by intro n have hall : ∀ᵐ ω ∂(μ n), ∀ k ∈ range (A.rowLength n), 0 ≤ A.lindebergTerm ε n k ω := (Finset.eventually_all _).mpr fun k hk => condExp_nonneg (Filter.Eventually.of_forall fun ω => by change (0 : ℝ) ≤ if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0 split_ifs <;> positivity) filter_upwards [hall] with ω hω unfold MartingaleDifferenceArray.conditionalLindeberg simp only [Pi.zero_apply, Finset.sum_apply] exact sum_nonneg fun k hk => hω k hk have hFNonneg : ∀ n, 0 ≤ᵐ[μ n] A.conditionalFourthMoment n := by intro n have hall : ∀ᵐ ω ∂(μ n), ∀ k ∈ range (A.rowLength n), 0 ≤ (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := (Finset.eventually_all _).mpr fun k hk => condExp_nonneg (Filter.Eventually.of_forall fun _ => by positivity) filter_upwards [hall] with ω hω unfold MartingaleDifferenceArray.conditionalFourthMoment simp only [Pi.zero_apply, Finset.sum_apply] exact sum_nonneg fun k hk => hω k hk have hBound : ∀ n, A.conditionalLindeberg ε n ≤ᵐ[μ n] fun ω => c * A.conditionalFourthMoment n ω := by intro n have hall : ∀ᵐ ω ∂(μ n), ∀ k ∈ range (A.rowLength n), A.lindebergTerm ε n k ω ≤ c * (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := (Finset.eventually_all _).mpr fun k hk => hTermBound n k (Finset.mem_range.mp hk) filter_upwards [hall] with ω hω unfold MartingaleDifferenceArray.conditionalLindeberg MartingaleDifferenceArray.conditionalFourthMoment rw [Finset.sum_apply, Finset.sum_apply] calc ∑ k ∈ range (A.rowLength n), A.lindebergTerm ε n k ω ≤ ∑ k ∈ range (A.rowLength n), c * (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := Finset.sum_le_sum fun k hk => hω k hk _ = c * ∑ k ∈ range (A.rowLength n), (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] ω := by rw [Finset.mul_sum] intro δ hδ have hUpper := hFourthConditional (δ / c) (div_pos hδ hc) exact tendsto_of_tendsto_of_tendsto_of_le_of_le tendsto_const_nhds hUpper (fun _ => bot_le) (fun n => measure_mono_ae <| by filter_upwards [hLNonneg n, hFNonneg n, hBound n] with ω hL hF hLF intro hω change δ ≤ |A.conditionalLindeberg ε n ω - 0| at hω change δ / c ≤ |A.conditionalFourthMoment n ω - 0| rw [sub_zero, abs_of_nonneg hL] at hω rw [sub_zero, abs_of_nonneg hF] apply (div_le_iff₀ hc).mpr simpa only [mul_comm] using hω.trans hLF) -
conditionalFourthMoment_tendstoInProbability_of_fourthMomentSumtheorem — If every increment has a finite fourth moment and the deterministic sum of unconditional fourth moments tends to zero, then the conditional fourth-moment row sums converge in probability to zero.hypotheses∀ n, IsProbabilityMeasure (μ n)A :hFourth :∀ n kifk < A.rowLength nthenMemLp (A.increment n k) 4 (μ n)conclusionTendstoInProbability μ A.conditionalFourthMoment 0Proof (Lean source)
theorem conditionalFourthMoment_tendstoInProbability_of_fourthMomentSum [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (hFourth : ∀ n k, k < A.rowLength n → MemLp (A.increment n k) 4 (μ n)) (hFourthSum : Tendsto A.fourthMomentSum atTop (𝓝 0)) : TendstoInProbability μ A.conditionalFourthMoment 0 := by /- Proof route: the conditional fourth-moment sum is nonnegative a.e. and its integral is `fourthMomentSum A n` by the conditional-expectation integral identity. Markov's inequality then bounds its upper tail by that deterministic expectation, which tends to zero. -/ intro δ hδ have hNonneg : ∀ n, 0 ≤ᵐ[μ n] A.conditionalFourthMoment n := by intro n unfold MartingaleDifferenceArray.conditionalFourthMoment induction range (A.rowLength n) using Finset.induction_on with | empty => exact Filter.Eventually.of_forall fun _ => by simp | @insert k s hk ih => have hk_nonneg : 0 ≤ᵐ[μ n] (μ n)[fun ω => (A.increment n k ω) ^ 4 | A.filtration n k] := condExp_nonneg (Filter.Eventually.of_forall fun _ => by positivity) filter_upwards [ih, hk_nonneg] with ω hsum hterm simpa [hk] using add_nonneg hterm hsum have hIntegrable : ∀ n, Integrable (A.conditionalFourthMoment n) (μ n) := by intro n unfold MartingaleDifferenceArray.conditionalFourthMoment rw [Finset.sum_fn] apply integrable_finsetSum intro k hk exact integrable_condExp have hFourthIntegrable : ∀ n k, k < A.rowLength n → Integrable (fun ω => (A.increment n k ω) ^ 4) (μ n) := by intro n k hk have hi := (hFourth n k hk).integrable_norm_pow (by norm_num : (4 : ℕ) ≠ 0) simpa only [Real.norm_eq_abs, ← abs_pow, abs_of_nonneg (by positivity : 0 ≤ A.increment n k _ ^ 4)] using hi have hIntegral : ∀ n, ∫ ω, A.conditionalFourthMoment n ω ∂(μ n) = A.fourthMomentSum n := by intro n unfold MartingaleDifferenceArray.conditionalFourthMoment MartingaleDifferenceArray.fourthMomentSum rw [Finset.sum_fn] rw [integral_finsetSum] · apply Finset.sum_congr rfl intro k hk simpa only [setIntegral_univ] using setIntegral_condExp (A.filtration n |>.le k) (hFourthIntegrable n k (Finset.mem_range.mp hk)) MeasurableSet.univ · intro k hk exact integrable_condExp apply (ENNReal.tendsto_toReal_zero_iff).mp refine squeeze_zero (g := fun n => A.fourthMomentSum n / δ) (fun _ => measureReal_nonneg) ?_ ?_ · intro n have hEvents : {ω | δ ≤ |A.conditionalFourthMoment n ω - 0|} =ᵐ[μ n] {ω | δ ≤ A.conditionalFourthMoment n ω} := by filter_upwards [hNonneg n] with ω hω change 0 ≤ A.conditionalFourthMoment n ω at hω apply propext change (δ ≤ |A.conditionalFourthMoment n ω - 0| ↔ δ ≤ A.conditionalFourthMoment n ω) rw [sub_zero, abs_of_nonneg hω] change ((μ n) {ω | δ ≤ |A.conditionalFourthMoment n ω - 0|}).toReal ≤ _ rw [measure_congr hEvents, ← measureReal_def] apply (le_div_iff₀ hδ).2 calc Measure.real (μ n) {ω | δ ≤ A.conditionalFourthMoment n ω} * δ = δ * Measure.real (μ n) {ω | δ ≤ A.conditionalFourthMoment n ω} := mul_comm _ _ _ ≤ ∫ ω, A.conditionalFourthMoment n ω ∂(μ n) := mul_meas_ge_le_integral_of_nonneg (hNonneg n) (hIntegrable n) δ _ = A.fourthMomentSum n := hIntegral n · simpa using hFourthSum.div_const δ
Main 1 core · 3 supporting This module proves the reusable scalar CLT for finite-row, square-integrable martingale-difference arrays. ★ martingaleArrayCLT
Scalar martingale triangular-array central limit theorem
This module proves the reusable scalar CLT for finite-row, square-integrable martingale-difference arrays. It also supplies Lyapunov corollaries based on conditional or unconditional fourth-moment sums and a deterministic predictable-variance specialization. No independence hypothesis is used.
For a square-integrable real martingale-difference triangular array, if the sum of conditional variances in each row converges in probability to one and the conditional Lindeberg sum converges in probability to zero at every positive threshold, then the row sums converge in distribution to the standard normal law. Row lengths may vary with the row index, and no independence between increments is assumed.
Formal statement
Proof (Lean source)
3 supporting declarations (lemmas, instances)
-
martingaleArrayCLT_of_conditionalFourthMomenttheorem — For a square-integrable martingale-difference array whose predictable quadratic variations converge in probability to one, if all increments have finite fourth moments and the conditional fourth-moment row sums vanish in probability, then the row sums converge in distribution to the standard normal law.hypotheses∀ n, IsProbabilityMeasure (μ n)A :hVariance :TendstoInProbability μ A.predictableQuadraticVariation 1hFourth :∀ n kifk < A.rowLength nthenMemLp (A.increment n k) 4 (μ n)hFourthConditional :TendstoInProbability μ A.conditionalFourthMoment 0conclusionTendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurableProof (Lean source)
theorem martingaleArrayCLT_of_conditionalFourthMoment [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (hVariance : TendstoInProbability μ A.predictableQuadraticVariation 1) (hFourth : ∀ n k, k < A.rowLength n → MemLp (A.increment n k) 4 (μ n)) (hFourthConditional : TendstoInProbability μ A.conditionalFourthMoment 0) : TendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurable := by apply martingaleArrayCLT A hVariance exact conditionalLindeberg_of_conditionalFourthMoment A hFourth hFourthConditional -
martingaleArrayCLT_of_fourthMomentSumtheorem — For a square-integrable martingale-difference array whose predictable quadratic variations converge in probability to one, if all increments have finite fourth moments and the deterministic sum of their unconditional fourth moments vanishes, then the row sums converge in distribution to the standard normal law.hypotheses∀ n, IsProbabilityMeasure (μ n)A :hVariance :TendstoInProbability μ A.predictableQuadraticVariation 1hFourth :∀ n kifk < A.rowLength nthenMemLp (A.increment n k) 4 (μ n)conclusionTendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurableProof (Lean source)
theorem martingaleArrayCLT_of_fourthMomentSum [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (hVariance : TendstoInProbability μ A.predictableQuadraticVariation 1) (hFourth : ∀ n k, k < A.rowLength n → MemLp (A.increment n k) 4 (μ n)) (hFourthSum : Tendsto A.fourthMomentSum atTop (𝓝 0)) : TendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurable := by apply martingaleArrayCLT A hVariance exact conditionalLindeberg_of_fourthMomentSum A hFourth hFourthSum -
martingaleArrayCLT_of_deterministicVariance_fourthMomentSumtheorem — For a square-integrable martingale-difference array, suppose its predictable quadratic variation equals a deterministic row variance, those variances converge to one, all increments have finite fourth moments, and the deterministic fourth-moment row sums vanish. Then the row sums converge in distribution to the standard normal law.hypotheses∀ n, IsProbabilityMeasure (μ n)A :v :ℕ → ℝhVarianceEq :∀ n, A.predictableQuadraticVariation n =ᵐ[μ n] fun _ => v nhFourth :∀ n kifk < A.rowLength nthenMemLp (A.increment n k) 4 (μ n)conclusionTendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurableProof (Lean source)
theorem martingaleArrayCLT_of_deterministicVariance_fourthMomentSum [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (v : ℕ → ℝ) (hVarianceEq : ∀ n, A.predictableQuadraticVariation n =ᵐ[μ n] fun _ => v n) (hVariance : Tendsto v atTop (𝓝 1)) (hFourth : ∀ n k, k < A.rowLength n → MemLp (A.increment n k) 4 (μ n)) (hFourthSum : Tendsto A.fourthMomentSum atTop (𝓝 0)) : TendstoInDistribution μ A.rowSum (gaussianReal 0 1) A.rowSum_aemeasurable := by apply martingaleArrayCLT_of_fourthMomentSum A (predictableQuadraticVariation_tendstoInProbability_of_ae_eq A v hVarianceEq hVariance) hFourth hFourthSum
PredictableVarianceBounds 1 core · 1 supporting This module supplies the local and row-wise estimates that make the predictable variance mesh small under a conditional Lindeberg budget. ★ sum_sq_conditionalSecondMoment_le_of_budgets
Predictable variance bounds from conditional Lindeberg mass
This module supplies the local and row-wise estimates that make the predictable variance mesh small under a conditional Lindeberg budget. These are the probabilistic accounting inputs for Gaussian-time interpolation.
If the truncation threshold is positive, the row predictable quadratic variation is bounded and its conditional Lindeberg sum is bounded, with nonnegative budgets, then the sum of squared conditional variance increments is at most (η² + δ)K.
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
-
conditionalSecondMoment_le_sq_add_lindebergTermtheorem — For an active increment and a positive threshold, its conditional second moment is at most the squared threshold plus its conditional Lindeberg term.hypothesesconclusion(μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k]≤ᵐ[μ n] fun ω => η ^ 2 + A.lindebergTerm η n k ωProof (Lean source)
theorem conditionalSecondMoment_le_sq_add_lindebergTerm [∀ n, IsProbabilityMeasure (μ n)] (A : MartingaleDifferenceArray Ω μ) (n k : ℕ) (hk : k < A.rowLength n) (η : ℝ) (hη : 0 < η) : (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ≤ᵐ[μ n] fun ω => η ^ 2 + A.lindebergTerm η n k ω := by /- Split `X²` into the events `|X| ≤ η` and `η < |X|`. Bound the first part by the constant `η²`, apply conditional-expectation monotonicity, and identify the second part with `lindebergTerm`. -/ have hX2 : Integrable (fun ω => (A.increment n k ω) ^ 2) (μ n) := (A.squareIntegrable n k hk).integrable_sq have htrunc : Integrable (fun ω => if η < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) (μ n) := by let X := (A.squareIntegrable n k hk).aestronglyMeasurable.mk (A.increment n k) have hX : A.increment n k =ᵐ[μ n] X := (A.squareIntegrable n k hk).aestronglyMeasurable.ae_eq_mk have hXmeas : StronglyMeasurable X := (A.squareIntegrable n k hk).aestronglyMeasurable.stronglyMeasurable_mk have hX2' : Integrable (fun ω => X ω ^ 2) (μ n) := hX2.congr (hX.pow_const 2) have hs : MeasurableSet {ω | η < |X ω|} := measurableSet_lt measurable_const hXmeas.measurable.norm have htruncX : Integrable (fun ω => if η < |X ω| then X ω ^ 2 else 0) (μ n) := by apply (hX2'.indicator hs).congr filter_upwards with ω rw [indicator] rfl exact htruncX.congr (hX.mono fun ω hω => by simp [hω]) have hmajor : Integrable (fun ω => η ^ 2 + if η < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) (μ n) := (integrable_const _).add htrunc have hpoint : (fun ω => (A.increment n k ω) ^ 2) ≤ᵐ[μ n] (fun ω => η ^ 2 + if η < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) := ae_of_all _ fun ω => by by_cases hω : η < |A.increment n k ω| · simp only [hω, ↓reduceIte] exact le_add_of_nonneg_left (sq_nonneg η) · simp only [hω, ↓reduceIte, add_zero] rw [← sq_abs (A.increment n k ω)] exact (sq_le_sq₀ (abs_nonneg _) hη.le).mpr (le_of_not_gt hω) have hmono := condExp_mono (m := A.filtration n k) hX2 hmajor hpoint have hadd := condExp_add (integrable_const (η ^ 2)) htrunc (A.filtration n k) have hadd' : (μ n)[fun ω => η ^ 2 + (if η < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0) | A.filtration n k] =ᵐ[μ n] (μ n)[fun _ => η ^ 2 | A.filtration n k] + (μ n)[fun ω => if η < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0 | A.filtration n k] := by convert hadd using 1 <;> ext ω <;> rfl have hconst := condExp_const (μ := μ n) ((A.filtration n).le k) (η ^ 2) filter_upwards [hmono, hadd'] with ω hmonoω haddω unfold lindebergTerm rw [haddω] at hmonoω simpa only [Pi.add_apply, congrFun hconst ω] using hmonoω
ProbabilityBounds 1 core · 0 supporting This module supplies elementary expectation bridges for row-indexed random variables whose rows may live on different probability spaces. ★ tendsto_integral_abs_sub_of_tendstoInProbability_of_ae_bound
Varying-space probability convergence bounds
This module supplies elementary expectation bridges for row-indexed random variables whose rows may live on different probability spaces. They are used after stopping the martingale array, when convergence in probability combines with a deterministic uniform bound.
If measurable real row variables converge in probability to a constant, the bound is nonnegative, and their absolute deviations are uniformly bounded almost everywhere, then their expected absolute deviations tend to zero. The probability spaces may vary with the row.
Formal statement
Proof (Lean source)
RemainderBudget 1 core · 0 supporting This module converts almost-everywhere bounds on predictable variance and conditional Lindeberg mass into a deterministic bound on the sum of integrated quadratic characteristic-function remainders. ★ sum_integral_norm_expQuadraticRemainder_le_of_budgets
Row Taylor-remainder bounds from predictable budgets
This module converts almost-everywhere bounds on predictable variance and conditional Lindeberg mass into a deterministic bound on the sum of integrated quadratic characteristic-function remainders.
If the truncation threshold is positive, the frequency-threshold product is at most one, both budgets are nonnegative, a row has predictable variance at most K, and conditional Lindeberg mass at most δ, then the sum of its integrated quadratic exponential remainders obeys the corresponding truncated Taylor bound.
Formal statement
Proof (Lean source)
StoppedArray 5 core · 6 supporting This module constructs a finite-row martingale array stopped before its predictable variance or conditional Lindeberg budget is exceeded. ★ measure_stoppedArray_rowSum_ne_le
Predictably stopped martingale-difference arrays
This module constructs a finite-row martingale array stopped before its predictable variance or conditional Lindeberg budget is exceeded. The stopping multiplier is measurable at the preceding filtration time, so the stopped increments remain martingale differences. No independence is introduced.
The predictable quadratic variation through index k is the sum of the conditional second moments of the active row increments with indices at most k.
Definition (Lean source)
The conditional Lindeberg mass through index k is the sum of the conditional truncated second moments of the active row increments with indices at most k.
Definition (Lean source)
The predictable stopping multiplier for increment k is one exactly when the original row's predictable variance and conditional Lindeberg mass through k remain within the supplied budgets, and is zero otherwise.
Definition (Lean source)
Given a martingale-difference triangular array, a truncation threshold, a predictable-variance budget, and a conditional-Lindeberg budget, the predictably stopped array is another square-integrable martingale-difference array with the same row lengths and filtrations.
Definition (Lean source)
For a positive truncation threshold, the probability that stopping changes a row sum is bounded by the probability that the original row exceeds either stopping budget.
Formal statement
Proof (Lean source)
6 supporting declarations (lemmas, instances)
-
stopMultiplier_stronglyMeasurabletheorem — For an active row increment, its stopping multiplier is measurable at the preceding filtration time.hypothesesA :ε K δ :ℝn k :ℕhk :k < A.rowLength nconclusionStronglyMeasurable[A.filtration n k] (A.stopMultiplier ε K δ n k)Proof (Lean source)
theorem stopMultiplier_stronglyMeasurable (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (n k : ℕ) (hk : k < A.rowLength n) : StronglyMeasurable[A.filtration n k] (A.stopMultiplier ε K δ n k) := by /- Conditional expectations are strongly measurable in their conditioning sigma-algebras. Lift every term with filtration monotonicity (`j ≤ k`), close finite sums, then use measurability of the two closed inequalities and the piecewise-constant multiplier. -/ have hV : StronglyMeasurable[A.filtration n k] (A.predictableQuadraticVariationThrough n k) := by unfold predictableQuadraticVariationThrough refine Finset.stronglyMeasurable_sum _ fun j hj => ?_ exact stronglyMeasurable_condExp.mono ((A.filtration n).mono (Nat.le_of_lt_succ (lt_of_lt_of_le (Finset.mem_range.mp hj) (min_le_left _ _)))) have hL : StronglyMeasurable[A.filtration n k] (A.conditionalLindebergThrough ε n k) := by unfold conditionalLindebergThrough lindebergTerm refine Finset.stronglyMeasurable_sum _ fun j hj => ?_ exact stronglyMeasurable_condExp.mono ((A.filtration n).mono (Nat.le_of_lt_succ (lt_of_lt_of_le (Finset.mem_range.mp hj) (min_le_left _ _)))) unfold stopMultiplier exact StronglyMeasurable.ite ((hV.measurable measurableSet_Iic).inter (hL.measurable measurableSet_Iic)) stronglyMeasurable_const stronglyMeasurable_const -
stoppedArray_rowLengththeorem — Stopping does not change the row length.hypothesesA :ε K δ :ℝn :ℕconclusion(A.stoppedArray ε K δ).rowLength n = A.rowLength nProof (Lean source)
@[simp] theorem stoppedArray_rowLength (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (n : ℕ) : (A.stoppedArray ε K δ).rowLength n = A.rowLength n := rfl -
stoppedArray_incrementtheorem — A stopped increment is the original increment multiplied by the predictable zero-one stopping multiplier.hypothesesA :ε K δ :ℝn k :ℕconclusion(A.stoppedArray ε K δ).increment n k= fun ω => A.stopMultiplier ε K δ n k ω * A.increment n k ωProof (Lean source)
@[simp] theorem stoppedArray_increment (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (n k : ℕ) : (A.stoppedArray ε K δ).increment n k = fun ω => A.stopMultiplier ε K δ n k ω * A.increment n k ω := rfl -
stoppedArray_rowSum_ae_eq_of_boundstheorem — If the truncation threshold is positive and the original final predictable variance and conditional Lindeberg mass stay within their budgets, then predictable stopping leaves the row sum unchanged almost everywhere.hypothesesA :ε K δ :ℝhε :0 < εn :ℕconclusion∀ᵐ ω ∂(μ n), A.predictableQuadraticVariation n ω≤ K → A.conditionalLindeberg ε n ω ≤ δ → (A.stoppedArray ε K δ).rowSum n ω = A.rowSum n ωProof (Lean source)
theorem stoppedArray_rowSum_ae_eq_of_bounds (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (hε : 0 < ε) (n : ℕ) : ∀ᵐ ω ∂(μ n), A.predictableQuadraticVariation n ω ≤ K → A.conditionalLindeberg ε n ω ≤ δ → (A.stoppedArray ε K δ).rowSum n ω = A.rowSum n ω := by /- On one full-measure set all conditional second moments and Lindeberg terms in this finite row are nonnegative. Hence each through-`k` sum is at most the corresponding final sum, every multiplier is one, and the finite row sums agree term by term. -/ have hx : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := ae_all_iff.mpr fun k => condExp_nonneg (ae_of_all _ fun ω => sq_nonneg _) have hy : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ A.lindebergTerm ε n k ω := by apply ae_all_iff.mpr intro k apply condExp_nonneg filter_upwards with ω split_ifs <;> positivity filter_upwards [hx, hy] with ω hxω hyω intro hV hL unfold rowSum simp only [stoppedArray_rowLength, Finset.sum_apply] apply Finset.sum_congr rfl intro k hk have hkr : k < A.rowLength n := Finset.mem_range.mp hk have hVr : A.predictableQuadraticVariationThrough n k ω ≤ A.predictableQuadraticVariation n ω := by unfold predictableQuadraticVariationThrough predictableQuadraticVariation simp only [Finset.sum_apply] rw [min_eq_left (Nat.succ_le_iff.mpr hkr)] exact Finset.sum_le_sum_of_subset_of_nonneg (Finset.range_mono (Nat.succ_le_iff.mpr hkr)) (fun i hi _ => hxω i) have hLr : A.conditionalLindebergThrough ε n k ω ≤ A.conditionalLindeberg ε n ω := by unfold conditionalLindebergThrough conditionalLindeberg simp only [Finset.sum_apply] rw [min_eq_left (Nat.succ_le_iff.mpr hkr)] exact Finset.sum_le_sum_of_subset_of_nonneg (Finset.range_mono (Nat.succ_le_iff.mpr hkr)) (fun i hi _ => hyω i) have hmul : A.stopMultiplier ε K δ n k ω = 1 := by rw [stopMultiplier, if_pos] exact intro (hVr.trans hV) (hLr.trans hL) simp only [stoppedArray_increment, hmul, one_mul] -
stoppedArray_predictableQuadraticVariation_letheorem — With nonnegative variance and Lindeberg budgets, the stopped row's predictable quadratic variation never exceeds the variance budget almost everywhere.hypothesesA :ε K δ :ℝhK :0 ≤ Khδ :0 ≤ δn :ℕconclusion(A.stoppedArray ε K δ).predictableQuadraticVariation n ≤ᵐ[μ n] fun _ => KProof (Lean source)
theorem stoppedArray_predictableQuadraticVariation_le (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (hK : 0 ≤ K) (hδ : 0 ≤ δ) (n : ℕ) : (A.stoppedArray ε K δ).predictableQuadraticVariation n ≤ᵐ[μ n] fun _ => K := by /- First prove the conditional second moment of a stopped increment is the original conditional second moment times its zero-one predictable multiplier. On the common nonnegativity set the original prefix sums are monotone, so active indices form an initial segment and the selected sum is bounded by the last original through-sum that is at most `K`. -/ have hmoment (k : ℕ) (hk : k < A.rowLength n) : (μ n)[fun ω => ((A.stoppedArray ε K δ).increment n k ω) ^ 2 | (A.stoppedArray ε K δ).filtration n k] =ᵐ[μ n] fun ω => A.stopMultiplier ε K δ n k ω * (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := by let M := A.stopMultiplier ε K δ n k have hsm : StronglyMeasurable[A.filtration n k] M := A.stopMultiplier_stronglyMeasurable ε K δ n k hk have hsq : Integrable (fun ω => (A.increment n k ω) ^ 2) (μ n) := (A.squareIntegrable n k hk).integrable_sq have hprod : Integrable (fun ω => M ω * (A.increment n k ω) ^ 2) (μ n) := by refine hsq.bdd_mul (c := 1) (hsm.mono ((A.filtration n).le k)).aestronglyMeasurable ?_ filter_upwards with ω dsimp only [M] unfold stopMultiplier split_ifs <;> simp calc (μ n)[fun ω => ((A.stoppedArray ε K δ).increment n k ω) ^ 2 | (A.stoppedArray ε K δ).filtration n k] =ᵐ[μ n] (μ n)[fun ω => M ω * (A.increment n k ω) ^ 2 | A.filtration n k] := by apply condExp_congr_ae filter_upwards with ω dsimp only [M] simp only [stoppedArray_increment] unfold stopMultiplier split_ifs <;> simp _ =ᵐ[μ n] fun ω => M ω * (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := condExp_mul_of_stronglyMeasurable_left hsm hprod hsq have hmoment_all : ∀ᵐ ω ∂(μ n), ∀ k, k < A.rowLength n → (μ n)[fun ω => ((A.stoppedArray ε K δ).increment n k ω) ^ 2 | (A.stoppedArray ε K δ).filtration n k] ω = A.stopMultiplier ε K δ n k ω * (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := by apply ae_all_iff.mpr intro k by_cases hk : k < A.rowLength n · exact (hmoment k hk).mono fun ω hω _ => hω · exact ae_of_all _ fun _ h => (hk h).elim have hx : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := ae_all_iff.mpr fun k => condExp_nonneg (ae_of_all _ fun ω => sq_nonneg _) have hy : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ A.lindebergTerm ε n k ω := by apply ae_all_iff.mpr intro k apply condExp_nonneg filter_upwards with ω split_ifs <;> positivity filter_upwards [hmoment_all, hx, hy] with ω hmω hxω hyω unfold predictableQuadraticVariation simp only [Finset.sum_apply, stoppedArray_rowLength] calc (∑ k ∈ range (A.rowLength n), (μ n)[fun ω => ((A.stoppedArray ε K δ).increment n k ω) ^ 2 | (A.stoppedArray ε K δ).filtration n k] ω) = ∑ k ∈ range (A.rowLength n), budgetMultiplier (fun j => (μ n)[fun ω => (A.increment n j ω) ^ 2 | A.filtration n j] ω) (fun j => A.lindebergTerm ε n j ω) K δ k * (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := by apply Finset.sum_congr rfl intro k hk rw [hmω k (Finset.mem_range.mp hk)] congr 1 unfold stopMultiplier budgetMultiplier predictableQuadraticVariationThrough conditionalLindebergThrough simp only [Finset.sum_apply] rw [min_eq_left (Nat.succ_le_iff.mpr (Finset.mem_range.mp hk))] _ ≤ K := (budgetWeightedSums_le (fun j => (μ n)[fun ω => (A.increment n j ω) ^ 2 | A.filtration n j] ω) (fun j => A.lindebergTerm ε n j ω) K δ (A.rowLength n) (fun k _ => hxω k) (fun k _ => hyω k) hK hδ).1 -
stoppedArray_conditionalLindeberg_letheorem — With a positive truncation threshold and nonnegative variance and Lindeberg budgets, the stopped row's conditional Lindeberg sum at that threshold never exceeds its budget almost everywhere.hypothesesA :ε K δ :ℝhε :0 < εhK :0 ≤ Khδ :0 ≤ δn :ℕconclusion(A.stoppedArray ε K δ).conditionalLindeberg ε n ≤ᵐ[μ n] fun _ => δProof (Lean source)
theorem stoppedArray_conditionalLindeberg_le (A : MartingaleDifferenceArray Ω μ) (ε K δ : ℝ) (hε : 0 < ε) (hK : 0 ≤ K) (hδ : 0 ≤ δ) (n : ℕ) : (A.stoppedArray ε K δ).conditionalLindeberg ε n ≤ᵐ[μ n] fun _ => δ := by /- For `ε > 0`, truncating a zero-one multiple gives that multiplier times the original truncated square. Pull it through conditional expectation; the same initial-segment argument as for predictable variance bounds the resulting selected Lindeberg sum by `δ`. -/ have hmoment (k : ℕ) (hk : k < A.rowLength n) : (A.stoppedArray ε K δ).lindebergTerm ε n k =ᵐ[μ n] fun ω => A.stopMultiplier ε K δ n k ω * A.lindebergTerm ε n k ω := by let M := A.stopMultiplier ε K δ n k let g := fun ω => if ε < |A.increment n k ω| then (A.increment n k ω) ^ 2 else 0 have hsm : StronglyMeasurable[A.filtration n k] M := A.stopMultiplier_stronglyMeasurable ε K δ n k hk have hinc : StronglyMeasurable (A.increment n k) := (A.adapted n k hk).mono ((A.filtration n).le (k + 1)) have hgsm : StronglyMeasurable g := by apply StronglyMeasurable.ite (hinc.norm.measurable measurableSet_Ioi) (hinc.pow 2) stronglyMeasurable_const have hsq : Integrable (fun ω => (A.increment n k ω) ^ 2) (μ n) := (A.squareIntegrable n k hk).integrable_sq have hg : Integrable g (μ n) := by refine hsq.mono hgsm.aestronglyMeasurable ?_ filter_upwards with ω dsimp only [g] split_ifs <;> simp [sq_nonneg] have hprod : Integrable (fun ω => M ω * g ω) (μ n) := by refine hg.bdd_mul (c := 1) (hsm.mono ((A.filtration n).le k)).aestronglyMeasurable ?_ filter_upwards with ω dsimp only [M] unfold stopMultiplier split_ifs <;> simp unfold lindebergTerm calc (μ n)[fun ω => if ε < |(A.stoppedArray ε K δ).increment n k ω| then ((A.stoppedArray ε K δ).increment n k ω) ^ 2 else 0 | (A.stoppedArray ε K δ).filtration n k] =ᵐ[μ n] (μ n)[fun ω => M ω * g ω | A.filtration n k] := by apply condExp_congr_ae filter_upwards with ω dsimp only [M, g] simp only [stoppedArray_increment] unfold stopMultiplier split_ifs <;> simp_all _ =ᵐ[μ n] fun ω => M ω * (μ n)[g | A.filtration n k] ω := condExp_mul_of_stronglyMeasurable_left hsm hprod hg have hmoment_all : ∀ᵐ ω ∂(μ n), ∀ k, k < A.rowLength n → (A.stoppedArray ε K δ).lindebergTerm ε n k ω = A.stopMultiplier ε K δ n k ω * A.lindebergTerm ε n k ω := by apply ae_all_iff.mpr intro k by_cases hk : k < A.rowLength n · exact (hmoment k hk).mono fun ω hω _ => hω · exact ae_of_all _ fun _ h => (hk h).elim have hx : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ (μ n)[fun ω => (A.increment n k ω) ^ 2 | A.filtration n k] ω := ae_all_iff.mpr fun k => condExp_nonneg (ae_of_all _ fun ω => sq_nonneg _) have hy : ∀ᵐ ω ∂(μ n), ∀ k, 0 ≤ A.lindebergTerm ε n k ω := by apply ae_all_iff.mpr intro k apply condExp_nonneg filter_upwards with ω split_ifs <;> positivity filter_upwards [hmoment_all, hx, hy] with ω hmω hxω hyω unfold conditionalLindeberg simp only [Finset.sum_apply, stoppedArray_rowLength] calc (∑ k ∈ range (A.rowLength n), (A.stoppedArray ε K δ).lindebergTerm ε n k ω) = ∑ k ∈ range (A.rowLength n), budgetMultiplier (fun j => (μ n)[fun ω => (A.increment n j ω) ^ 2 | A.filtration n j] ω) (fun j => A.lindebergTerm ε n j ω) K δ k * A.lindebergTerm ε n k ω := by apply Finset.sum_congr rfl intro k hk rw [hmω k (Finset.mem_range.mp hk)] congr 1 unfold stopMultiplier budgetMultiplier predictableQuadraticVariationThrough conditionalLindebergThrough simp only [Finset.sum_apply] rw [min_eq_left (Nat.succ_le_iff.mpr (Finset.mem_range.mp hk))] _ ≤ δ := (budgetWeightedSums_le (fun j => (μ n)[fun ω => (A.increment n j ω) ^ 2 | A.filtration n j] ω) (fun j => A.lindebergTerm ε n j ω) K δ (A.rowLength n) (fun k _ => hxω k) (fun k _ => hyω k) hK hδ).2
StoppedBudget 2 core · 0 supporting This module isolates the finite-sum argument used when a predictable process is stopped before either of two nonnegative cumulative budgets is exceeded. ★ budgetWeightedSums_le
Deterministic accounting for predictable budget stopping
This module isolates the finite-sum argument used when a predictable process is stopped before either of two nonnegative cumulative budgets is exceeded. It is purely deterministic and does not mention filtrations or conditional expectations.
Given two sequences of budget charges, two budgets, and a time index, the budget multiplier at that time is one exactly when both cumulative charges through k remain within budget, and zero otherwise.
If both charge sequences are nonnegative before the row length and both budgets are nonnegative, then the total charges selected by the through-time budget multiplier do not exceed their respective budgets. The result permits the charge that first crosses a budget to be discarded and uses no probabilistic assumptions.