Skip to content

Commit 2352820

Browse files
committed
feat: processes with independent increments (#36718)
Define a predicate stating that a stochastic process has independent increments. Prove an equivalent definition using sequences instead of `Fin`. Prove some basic invariance properties. Co-authored-by: @jvanwinden
1 parent db6b41a commit 2352820

File tree

5 files changed

+136
-3
lines changed

5 files changed

+136
-3
lines changed

Mathlib.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5998,7 +5998,8 @@ public import Mathlib.Probability.Independence.Integration
59985998
public import Mathlib.Probability.Independence.Kernel
59995999
public import Mathlib.Probability.Independence.Kernel.Indep
60006000
public import Mathlib.Probability.Independence.Kernel.IndepFun
6001-
public import Mathlib.Probability.Independence.Process
6001+
public import Mathlib.Probability.Independence.Process.Basic
6002+
public import Mathlib.Probability.Independence.Process.HasIndepIncrements
60026003
public import Mathlib.Probability.Independence.ZeroOne
60036004
public import Mathlib.Probability.Kernel.Basic
60046005
public import Mathlib.Probability.Kernel.CompProdEqIff

Mathlib/Probability/Distributions/Gaussian/IsGaussianProcess/Independence.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public import Mathlib.Probability.Distributions.Gaussian.IsGaussianProcess.Def
1010
import Mathlib.Probability.Distributions.Gaussian.HasGaussianLaw.Basic
1111
import Mathlib.Probability.Distributions.Gaussian.HasGaussianLaw.Independence
1212
import Mathlib.Probability.Distributions.Gaussian.IsGaussianProcess.Basic
13-
import Mathlib.Probability.Independence.Process
13+
import Mathlib.Probability.Independence.Process.Basic
1414

1515
/-!
1616
# Independence of Gaussian processes

Mathlib/Probability/Independence/BoundedContinuousFunction.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Authors: Etienne Marion
66
module
77

88
public import Mathlib.MeasureTheory.Measure.HasOuterApproxClosedProd
9-
public import Mathlib.Probability.Independence.Process
9+
public import Mathlib.Probability.Independence.Process.Basic
1010
public import Mathlib.Probability.Notation
1111

1212
/-!
File renamed without changes.
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/-
2+
Copyright (c) 2025 Etienne Marion. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Etienne Marion, Joris van Winden
5+
-/
6+
module
7+
8+
public import Mathlib.Probability.Independence.Basic
9+
10+
import Mathlib.MeasureTheory.Constructions.BorelSpace.ContinuousLinearMap
11+
12+
/-!
13+
# Stochastic processes with independent increments
14+
15+
A stochastic process `X : T → Ω → E` has independent increments if for any `n ≥ 1` and
16+
`t₁ ≤ ... ≤ tₙ`, the random variables `X t₂ - X t₁, ..., X tₙ - X tₙ₋₁` are independent.
17+
Equivalently, for any monotone sequence `(tₙ)`, the random variables `(X tₙ₊₁ - X tₙ)`
18+
are independent.
19+
20+
## Main definition
21+
22+
* `HasIndepIncrements`: A stochastic process `X : T → Ω → E` has independent increments if for any
23+
`n ≥ 1` and `t₁ ≤ ... ≤ tₙ`, the random variables `X t₂ - X t₁, ..., X tₙ - X tₙ₋₁` are
24+
independent.
25+
26+
## Main statement
27+
28+
* `hasIndepIncrements_iff_nat`: A stochastic process `X : T → Ω → E` has independent increments if
29+
and only if for any monotone sequence `(tₙ)`, the random variables `(X tₙ₊₁ - X tₙ)` are
30+
independent.
31+
32+
## Tags
33+
34+
independent increments
35+
-/
36+
37+
@[expose] public section
38+
39+
open MeasureTheory Filter
40+
41+
namespace ProbabilityTheory
42+
43+
variable {T Ω E : Type*} {mΩ : MeasurableSpace Ω} {P : Measure Ω} {X : T → Ω → E}
44+
[Preorder T] [MeasurableSpace E]
45+
46+
section Def
47+
48+
variable [Sub E]
49+
50+
/-- A stochastic process `X : T → Ω → E` has independent increments if for any `n ≥ 1` and
51+
`t₁ ≤ ... ≤ tₙ`, the random variables `X t₂ - X t₁, ..., X tₙ - X tₙ₋₁` are independent.
52+
53+
Although this corresponds to the standard definition, dealing with `Fin` might make things
54+
complicated in some cases. Therefore we provide `HasIndepIncrements.of_nat` which instead requires
55+
to prove that for any monotone sequence `(tₙ)` that is eventually constant,
56+
the random variables `X tₙ₊₁ - X tₙ` are independent. -/
57+
def HasIndepIncrements (X : T → Ω → E) (P : Measure Ω := by volume_tac) : Prop :=
58+
∀ n, ∀ t : Fin (n + 1) → T, Monotone t →
59+
iIndepFun (fun (i : Fin n) ω ↦ X (t i.succ) ω - X (t i.castSucc) ω) P
60+
61+
protected lemma HasIndepIncrements.nat
62+
(hX : HasIndepIncrements X P) {t : ℕ → T} (ht : Monotone t) :
63+
iIndepFun (fun i ω ↦ X (t (i + 1)) ω - X (t i) ω) P := by
64+
refine iIndepFun_iff_finset.2 fun s ↦ ?_
65+
obtain rfl | hs := s.eq_empty_or_nonempty
66+
· have := (hX 0 (fun _ ↦ t 0) (fun _ ↦ by grind)).isProbabilityMeasure
67+
exact iIndepFun.of_subsingleton
68+
· let g (x : s) : Fin (s.max' hs + 1) := ⟨x.1, Nat.lt_add_one_of_le (s.le_max' x.1 x.2)⟩
69+
refine iIndepFun.precomp (g := g) ?_ (hX (s.max' hs + 1) (fun m ↦ t m) ?_)
70+
· simp [g, Function.Injective]
71+
· exact ht.comp Fin.val_strictMono.monotone
72+
73+
protected lemma HasIndepIncrements.of_nat
74+
(h : ∀ t : ℕ → T, Monotone t → EventuallyConst t atTop →
75+
iIndepFun (fun i ω ↦ X (t (i + 1)) ω - X (t i) ω) P) :
76+
HasIndepIncrements X P := by
77+
intro n t ht
78+
let t' k := t ⟨min n k, by grind⟩
79+
convert (h t' ?_ ?_).precomp Fin.val_injective with i ω
80+
· grind
81+
· grind
82+
· exact fun a b hab ↦ ht (by grind)
83+
· exact eventuallyConst_atTop.2 ⟨n, by grind⟩
84+
85+
lemma hasIndepIncrements_iff_nat :
86+
HasIndepIncrements X P ↔
87+
∀ t : ℕ → T, Monotone t → iIndepFun (fun i ω ↦ X (t (i + 1)) ω - X (t i) ω) P where
88+
mp h _ ht := h.nat ht
89+
mpr h := .of_nat (fun t ht _ ↦ h t ht)
90+
91+
end Def
92+
93+
lemma HasIndepIncrements.indepFun_sub_sub [Sub E] (hX : HasIndepIncrements X P) {r s t : T}
94+
(hrs : r ≤ s) (hst : s ≤ t) :
95+
(X s - X r) ⟂ᵢ[P] (X t - X s) := by
96+
let τ : ℕ → T
97+
| 0 => r
98+
| 1 => s
99+
| _ => t
100+
exact hX.nat (t := τ) (fun _ ↦ by grind) |>.indepFun (by grind : 01)
101+
102+
lemma HasIndepIncrements.indepFun_eval_sub [SubNegZeroMonoid E] (hX : HasIndepIncrements X P)
103+
{r s t : T} (hrs : r ≤ s) (hst : s ≤ t) (h : ∀ᵐ ω ∂P, X r ω = 0) :
104+
(X s) ⟂ᵢ[P] (X t - X s) := by
105+
refine (hX.indepFun_sub_sub hrs hst).congr ?_ .rfl
106+
filter_upwards [h] with ω hω using by simp [hω]
107+
108+
protected lemma HasIndepIncrements.map' {F G : Type*} [MeasurableSpace G] [FunLike F E G]
109+
[AddGroup E] [SubtractionMonoid G] [AddMonoidHomClass F E G] {f : F} (hf : Measurable f)
110+
(hX : HasIndepIncrements X P) :
111+
HasIndepIncrements (fun t ω ↦ f (X t ω)) P := by
112+
intro n t ht
113+
simp_rw [← map_sub]
114+
exact (hX n t ht).comp (fun _ ↦ f) (fun _ ↦ hf)
115+
116+
protected lemma HasIndepIncrements.map {R F : Type*} [Semiring R] [SeminormedAddCommGroup E]
117+
[Module R E] [OpensMeasurableSpace E] [SeminormedAddCommGroup F] [Module R F]
118+
[MeasurableSpace F] [BorelSpace F] (L : E →L[R] F) (hX : HasIndepIncrements X P) :
119+
HasIndepIncrements (fun t ω ↦ L (X t ω)) P :=
120+
hX.map' L.measurable
121+
122+
protected lemma HasIndepIncrements.smul {R : Type*} [AddGroup E] [DistribSMul R E]
123+
[MeasurableConstSMul R E] (hX : HasIndepIncrements X P) (c : R) :
124+
HasIndepIncrements (fun t ω ↦ c • (X t ω)) P :=
125+
hX.map' (f := DistribSMul.toAddMonoidHom E c) (MeasurableConstSMul.measurable_const_smul c)
126+
127+
protected lemma HasIndepIncrements.neg [AddCommGroup E] [MeasurableNeg E]
128+
(hX : HasIndepIncrements X P) :
129+
HasIndepIncrements (-X) P :=
130+
hX.map' (f := negAddMonoidHom) measurable_neg
131+
132+
end ProbabilityTheory

0 commit comments

Comments
 (0)