Documentation

Mathlib.Probability.StrongLaw

The strong law of large numbers #

We prove the strong law of large numbers, in ProbabilityTheory.strong_law_ae: If X n is a sequence of independent identically distributed integrable random variables, then āˆ‘ i in range n, X i / n converges almost surely to š”¼[X 0]. We give here the strong version, due to Etemadi, that only requires pairwise independence.

This file also contains the Lįµ– version of the strong law of large numbers provided by ProbabilityTheory.strong_law_Lp which shows āˆ‘ i in range n, X i / n converges in Lįµ– to š”¼[X 0] provided X n is independent identically distributed and is Lįµ–.

Implementation #

The main point is to prove the result for real-valued random variables, as the general case of Banach-space valued random variables follows from this case and approximation by simple functions. The real version is given in ProbabilityTheory.strong_law_ae_real.

We follow the proof by Etemadi [Etemadi, An elementary proof of the strong law of large numbers][etemadi_strong_law], which goes as follows.

It suffices to prove the result for nonnegative X, as one can prove the general result by splitting a general X into its positive part and negative part. Consider Xā‚™ a sequence of nonnegative integrable identically distributed pairwise independent random variables. Let Yā‚™ be the truncation of Xā‚™ up to n. We claim that

  āˆ‘_k ā„™ (|āˆ‘_{i=0}^{c^k - 1} Yįµ¢ - š”¼[Yįµ¢]| > c^k Īµ)
    ā‰¤ āˆ‘_k (c^k Īµ)^{-2} āˆ‘_{i=0}^{c^k - 1} Var[Yįµ¢]    (by Markov inequality)
    ā‰¤ āˆ‘_i (C/i^2) Var[Yįµ¢]                           (as āˆ‘_{c^k > i} 1/(c^k)^2 ā‰¤ C/i^2)
    ā‰¤ āˆ‘_i (C/i^2) š”¼[Yįµ¢^2]
    ā‰¤ 2C š”¼[X^2]                                     (see `sum_variance_truncation_le`)

Prerequisites on truncations #

def ProbabilityTheory.truncation {Ī± : Type u_1} (f : Ī± ā†’ ā„) (A : ā„) :
Ī± ā†’ ā„

Truncating a real-valued function to the interval (-A, A].

Equations
Instances For
    theorem ProbabilityTheory.abs_truncation_le_bound {Ī± : Type u_1} (f : Ī± ā†’ ā„) (A : ā„) (x : Ī±) :
    @[simp]
    theorem ProbabilityTheory.truncation_zero {Ī± : Type u_1} (f : Ī± ā†’ ā„) :
    theorem ProbabilityTheory.abs_truncation_le_abs_self {Ī± : Type u_1} (f : Ī± ā†’ ā„) (A : ā„) (x : Ī±) :
    theorem ProbabilityTheory.truncation_eq_self {Ī± : Type u_1} {f : Ī± ā†’ ā„} {A : ā„} {x : Ī±} (h : |f x| < A) :
    theorem ProbabilityTheory.truncation_eq_of_nonneg {Ī± : Type u_1} {f : Ī± ā†’ ā„} {A : ā„} (h : āˆ€ (x : Ī±), 0 ā‰¤ f x) :
    ProbabilityTheory.truncation f A = (Set.Ioc 0 A).indicator id āˆ˜ f
    theorem ProbabilityTheory.truncation_nonneg {Ī± : Type u_1} {f : Ī± ā†’ ā„} (A : ā„) {x : Ī±} (h : 0 ā‰¤ f x) :
    theorem ProbabilityTheory.moment_truncation_eq_intervalIntegral {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.AEStronglyMeasurable f Ī¼) {A : ā„} (hA : 0 ā‰¤ A) {n : ā„•} (hn : n ā‰  0) :
    āˆ« (x : Ī±), ProbabilityTheory.truncation f A x ^ n āˆ‚Ī¼ = āˆ« (y : ā„) in -A..A, y ^ n āˆ‚MeasureTheory.Measure.map f Ī¼
    theorem ProbabilityTheory.moment_truncation_eq_intervalIntegral_of_nonneg {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.AEStronglyMeasurable f Ī¼) {A : ā„} {n : ā„•} (hn : n ā‰  0) (h'f : 0 ā‰¤ f) :
    āˆ« (x : Ī±), ProbabilityTheory.truncation f A x ^ n āˆ‚Ī¼ = āˆ« (y : ā„) in 0 ..A, y ^ n āˆ‚MeasureTheory.Measure.map f Ī¼
    theorem ProbabilityTheory.integral_truncation_eq_intervalIntegral {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.AEStronglyMeasurable f Ī¼) {A : ā„} (hA : 0 ā‰¤ A) :
    āˆ« (x : Ī±), ProbabilityTheory.truncation f A x āˆ‚Ī¼ = āˆ« (y : ā„) in -A..A, y āˆ‚MeasureTheory.Measure.map f Ī¼
    theorem ProbabilityTheory.integral_truncation_eq_intervalIntegral_of_nonneg {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.AEStronglyMeasurable f Ī¼) {A : ā„} (h'f : 0 ā‰¤ f) :
    āˆ« (x : Ī±), ProbabilityTheory.truncation f A x āˆ‚Ī¼ = āˆ« (y : ā„) in 0 ..A, y āˆ‚MeasureTheory.Measure.map f Ī¼
    theorem ProbabilityTheory.integral_truncation_le_integral_of_nonneg {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.Integrable f Ī¼) (h'f : 0 ā‰¤ f) {A : ā„} :
    āˆ« (x : Ī±), ProbabilityTheory.truncation f A x āˆ‚Ī¼ ā‰¤ āˆ« (x : Ī±), f x āˆ‚Ī¼
    theorem ProbabilityTheory.tendsto_integral_truncation {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {f : Ī± ā†’ ā„} (hf : MeasureTheory.Integrable f Ī¼) :
    Filter.Tendsto (fun (A : ā„) => āˆ« (x : Ī±), ProbabilityTheory.truncation f A x āˆ‚Ī¼) Filter.atTop (nhds (āˆ« (x : Ī±), f x āˆ‚Ī¼))

    If a function is integrable, then the integral of its truncated versions converges to the integral of the whole function.

    theorem ProbabilityTheory.IdentDistrib.truncation {Ī± : Type u_1} {m : MeasurableSpace Ī±} {Ī¼ : MeasureTheory.Measure Ī±} {Ī² : Type u_2} [MeasurableSpace Ī²] {Ī½ : MeasureTheory.Measure Ī²} {f : Ī± ā†’ ā„} {g : Ī² ā†’ ā„} (h : ProbabilityTheory.IdentDistrib f g Ī¼ Ī½) {A : ā„} :
    theorem ProbabilityTheory.sum_prob_mem_Ioc_le {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {X : Ī© ā†’ ā„} (hint : MeasureTheory.Integrable X MeasureTheory.volume) (hnonneg : 0 ā‰¤ X) {K : ā„•} {N : ā„•} (hKN : K ā‰¤ N) :
    ((Finset.range K).sum fun (j : ā„•) => MeasureTheory.volume {Ļ‰ : Ī© | X Ļ‰ āˆˆ Set.Ioc ā†‘j ā†‘N}) ā‰¤ ENNReal.ofReal ((āˆ« (a : Ī©), X a) + 1)
    theorem ProbabilityTheory.tsum_prob_mem_Ioi_lt_top {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {X : Ī© ā†’ ā„} (hint : MeasureTheory.Integrable X MeasureTheory.volume) (hnonneg : 0 ā‰¤ X) :
    āˆ‘' (j : ā„•), MeasureTheory.volume {Ļ‰ : Ī© | X Ļ‰ āˆˆ Set.Ioi ā†‘j} < āŠ¤
    theorem ProbabilityTheory.sum_variance_truncation_le {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {X : Ī© ā†’ ā„} (hint : MeasureTheory.Integrable X MeasureTheory.volume) (hnonneg : 0 ā‰¤ X) (K : ā„•) :
    ((Finset.range K).sum fun (j : ā„•) => (ā†‘j ^ 2)ā»Ā¹ * āˆ« (a : Ī©), (ProbabilityTheory.truncation X ā†‘j ^ 2) a) ā‰¤ 2 * āˆ« (a : Ī©), X a

    Proof of the strong law of large numbers (almost sure version, assuming only pairwise independence) for nonnegative random variables, following Etemadi's proof.

    theorem ProbabilityTheory.strong_law_aux1 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) {c : ā„} (c_one : 1 < c) {Īµ : ā„} (Īµpos : 0 < Īµ) :
    āˆ€įµ (Ļ‰ : Ī©), āˆ€į¶  (n : ā„•) in Filter.atTop, |((Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum fun (i : ā„•) => ProbabilityTheory.truncation (X i) (ā†‘i) Ļ‰) - āˆ« (a : Ī©), (Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum (fun (i : ā„•) => ProbabilityTheory.truncation (X i) ā†‘i) a| < Īµ * ā†‘āŒŠc ^ nāŒ‹ā‚Š

    The truncation of Xįµ¢ up to i satisfies the strong law of large numbers (with respect to the truncated expectation) along the sequence c^n, for any c > 1, up to a given Īµ > 0. This follows from a variance control.

    theorem ProbabilityTheory.strong_law_aux2 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) {c : ā„} (c_one : 1 < c) :
    āˆ€įµ (Ļ‰ : Ī©), (fun (n : ā„•) => ((Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum fun (i : ā„•) => ProbabilityTheory.truncation (X i) (ā†‘i) Ļ‰) - āˆ« (a : Ī©), (Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum (fun (i : ā„•) => ProbabilityTheory.truncation (X i) ā†‘i) a) =o[Filter.atTop] fun (n : ā„•) => ā†‘āŒŠc ^ nāŒ‹ā‚Š
    theorem ProbabilityTheory.strong_law_aux3 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) :
    (fun (n : ā„•) => (āˆ« (a : Ī©), (Finset.range n).sum (fun (i : ā„•) => ProbabilityTheory.truncation (X i) ā†‘i) a) - ā†‘n * āˆ« (a : Ī©), X 0 a) =o[Filter.atTop] Nat.cast

    The expectation of the truncated version of Xįµ¢ behaves asymptotically like the whole expectation. This follows from convergence and CesĆ ro averaging.

    theorem ProbabilityTheory.strong_law_aux4 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) {c : ā„} (c_one : 1 < c) :
    āˆ€įµ (Ļ‰ : Ī©), (fun (n : ā„•) => ((Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum fun (i : ā„•) => ProbabilityTheory.truncation (X i) (ā†‘i) Ļ‰) - ā†‘āŒŠc ^ nāŒ‹ā‚Š * āˆ« (a : Ī©), X 0 a) =o[Filter.atTop] fun (n : ā„•) => ā†‘āŒŠc ^ nāŒ‹ā‚Š
    theorem ProbabilityTheory.strong_law_aux5 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) :
    āˆ€įµ (Ļ‰ : Ī©), (fun (n : ā„•) => ((Finset.range n).sum fun (i : ā„•) => ProbabilityTheory.truncation (X i) (ā†‘i) Ļ‰) - (Finset.range n).sum fun (i : ā„•) => X i Ļ‰) =o[Filter.atTop] fun (n : ā„•) => ā†‘n

    The truncated and non-truncated versions of Xįµ¢ have the same asymptotic behavior, as they almost surely coincide at all but finitely many steps. This follows from a probability computation and Borel-Cantelli.

    theorem ProbabilityTheory.strong_law_aux6 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) {c : ā„} (c_one : 1 < c) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => ((Finset.range āŒŠc ^ nāŒ‹ā‚Š).sum fun (i : ā„•) => X i Ļ‰) / ā†‘āŒŠc ^ nāŒ‹ā‚Š) Filter.atTop (nhds (āˆ« (a : Ī©), X 0 a))
    theorem ProbabilityTheory.strong_law_aux7 {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (hnonneg : āˆ€ (i : ā„•) (Ļ‰ : Ī©), 0 ā‰¤ X i Ļ‰) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => ((Finset.range n).sum fun (i : ā„•) => X i Ļ‰) / ā†‘n) Filter.atTop (nhds (āˆ« (a : Ī©), X 0 a))

    Xįµ¢ satisfies the strong law of large numbers along all integers. This follows from the corresponding fact along the sequences c^n, and the fact that any integer can be sandwiched between c^n and c^(n+1) with comparably small error if c is close enough to 1 (which is formalized in tendsto_div_of_monotone_of_tendsto_div_floor_pow).

    theorem ProbabilityTheory.strong_law_ae_real {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] (X : ā„• ā†’ Ī© ā†’ ā„) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => ((Finset.range n).sum fun (i : ā„•) => X i Ļ‰) / ā†‘n) Filter.atTop (nhds (āˆ« (a : Ī©), X 0 a))

    Strong law of large numbers, almost sure version: if X n is a sequence of independent identically distributed integrable real-valued random variables, then āˆ‘ i in range n, X i / n converges almost surely to š”¼[X 0]. We give here the strong version, due to Etemadi, that only requires pairwise independence. Superseded by strong_law_ae, which works for random variables taking values in any Banach space.

    theorem ProbabilityTheory.strong_law_ae_simpleFunc_comp {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ā„ E] [CompleteSpace E] [MeasurableSpace E] (X : ā„• ā†’ Ī© ā†’ E) (h' : Measurable (X 0)) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) (Ļ† : MeasureTheory.SimpleFunc E E) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => (ā†‘n)ā»Ā¹ ā€¢ (Finset.range n).sum fun (i : ā„•) => ā†‘Ļ† (X i Ļ‰)) Filter.atTop (nhds (āˆ« (a : Ī©), (ā†‘Ļ† āˆ˜ X 0) a))

    Preliminary lemma for the strong law of large numbers for vector-valued random variables: the composition of the random variables with a simple function satisfies the strong law of large numbers.

    theorem ProbabilityTheory.strong_law_ae_of_measurable {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ā„ E] [CompleteSpace E] [MeasurableSpace E] [BorelSpace E] (X : ā„• ā†’ Ī© ā†’ E) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (h' : MeasureTheory.StronglyMeasurable (X 0)) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => (ā†‘n)ā»Ā¹ ā€¢ (Finset.range n).sum fun (i : ā„•) => X i Ļ‰) Filter.atTop (nhds (āˆ« (a : Ī©), X 0 a))

    Preliminary lemma for the strong law of large numbers for vector-valued random variables, assuming measurability in addition to integrability. This is weakened to ae measurability in the full version ProbabilityTheory.strong_law_ae.

    theorem ProbabilityTheory.strong_law_ae {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ā„ E] [CompleteSpace E] [MeasurableSpace E] [BorelSpace E] (X : ā„• ā†’ Ī© ā†’ E) (hint : MeasureTheory.Integrable (X 0) MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) :
    āˆ€įµ (Ļ‰ : Ī©), Filter.Tendsto (fun (n : ā„•) => (ā†‘n)ā»Ā¹ ā€¢ (Finset.range n).sum fun (i : ā„•) => X i Ļ‰) Filter.atTop (nhds (āˆ« (a : Ī©), X 0 a))

    Strong law of large numbers, almost sure version: if X n is a sequence of independent identically distributed integrable random variables taking values in a Banach space, then nā»Ā¹ ā€¢ āˆ‘ i in range n, X i converges almost surely to š”¼[X 0]. We give here the strong version, due to Etemadi, that only requires pairwise independence.

    theorem ProbabilityTheory.strong_law_Lp {Ī© : Type u_1} [MeasureTheory.MeasureSpace Ī©] [MeasureTheory.IsProbabilityMeasure MeasureTheory.volume] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ā„ E] [CompleteSpace E] [MeasurableSpace E] [BorelSpace E] {p : ENNReal} (hp : 1 ā‰¤ p) (hp' : p ā‰  āŠ¤) (X : ā„• ā†’ Ī© ā†’ E) (hā„’p : MeasureTheory.Memā„’p (X 0) p MeasureTheory.volume) (hindep : Pairwise fun (i j : ā„•) => ProbabilityTheory.IndepFun (X i) (X j) MeasureTheory.volume) (hident : āˆ€ (i : ā„•), ProbabilityTheory.IdentDistrib (X i) (X 0) MeasureTheory.volume MeasureTheory.volume) :
    Filter.Tendsto (fun (n : ā„•) => MeasureTheory.snorm (fun (Ļ‰ : Ī©) => ((ā†‘n)ā»Ā¹ ā€¢ (Finset.range n).sum fun (i : ā„•) => X i Ļ‰) - āˆ« (a : Ī©), X 0 a) p MeasureTheory.volume) Filter.atTop (nhds 0)

    Strong law of large numbers, Lįµ– version: if X n is a sequence of independent identically distributed random variables in Lįµ–, then nā»Ā¹ ā€¢ āˆ‘ i in range n, X i converges in Lįµ– to š”¼[X 0].