Construction of the neutral Wright–Fisher diffusion
AbbreviationCanonical sample paths of the raw Wright–Fisher process#✓fully proved
Canonical sample paths before continuous modification.
abbrev SamplePath := NNReal → I
Used by 12
DefinitionNeutral Wright–Fisher transition kernel at nonnegative time#✓fully proved
The neutral Wright--Fisher transition kernel at nonnegative time.
noncomputable def neutralKernel (t : NNReal) : Kernel I I :=
wfTransitionKernel (t : ℝ)
noncomputable def wfTransitionKernel (t : ℝ) : Kernel I I :=
markovKernelOfPositiveOperator (wfSemigroupPositive t) (wfSemigroupPositive_apply_one t)
MathlibExt/Biology/PopulationGenetics/Diffusion/TransitionKernel.lean:73
Uses 1 · Used by 7
TheoremChapman–Kolmogorov for the nonnegative-time Wright–Fisher kernel#✓fully proved
Chapman--Kolmogorov for the nonnegative-time specialization.
theorem neutralKernel_add (s t : NNReal) :
neutralKernel (s + t) = neutralKernel t ∘ₖ neutralKernel s
noncomputable def neutralKernel (t : NNReal) : Kernel I I :=
wfTransitionKernel (t : ℝ)
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:48
Uses 2 · Used by 5
DefinitionCanonical path measure of the raw Wright–Fisher process#✓fully proved
The canonical probability measure on NNReal → I.
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
abbrev SamplePath := NNReal → I
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:45
noncomputable def pathMeasure
(K : NNReal → Kernel E E) [∀ t, IsMarkovKernel (K t)]
(hKadd : ∀ s t, K (s + t) = K t ∘ₖ K s) (x : E) :
Measure (NNReal → E) :=
Classical.choose (exists_projectiveLimit K hKadd x)
MathlibExt/Probability/MarkovSemigroupProjective.lean:478
noncomputable def neutralKernel (t : NNReal) : Kernel I I :=
wfTransitionKernel (t : ℝ)
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:48
theorem neutralKernel_add (s t : NNReal) :
neutralKernel (s + t) = neutralKernel t ∘ₖ neutralKernel s
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:61
Uses 9 · Used by 9
DefinitionRaw Wright–Fisher coordinate process#✓fully proved
The raw real-valued coordinate process, normalized at time zero on every sample rather than merely almost surely.
noncomputable def rawProcess (x : I) (t : NNReal) (ω : SamplePath) : ℝ :=
if t = 0 then x else ω t
abbrev SamplePath := NNReal → I
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:45
Uses 1 · Used by 6
TheoremOne-time marginals of the raw Wright–Fisher path measure#✓fully proved
One-time marginals of the canonical raw path measure.
theorem map_eval_rawMeasure (x : I) (t : NNReal) :
(rawMeasure x).map (fun ω => ω t) = neutralKernel t x
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
noncomputable def neutralKernel (t : NNReal) : Kernel I I :=
wfTransitionKernel (t : ℝ)
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:48
Uses 16 · Used by 1
TheoremTime-zero marginal of the raw path measure is the initial state#✓fully proved
The time-zero coordinate of the canonical path law is the prescribed initial state.
theorem map_eval_zero_rawMeasure (x : I) :
(rawMeasure x).map (fun ω => ω 0) = Measure.dirac x
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
Uses 5 · Used by 1
TheoremTwo-time law of the raw Wright–Fisher path measure#✓fully proved
The ordered two-time law is the first marginal followed by the transition over the time gap.
theorem map_pair_rawMeasure_of_lt (x : I) {s t : NNReal} (hst : s < t) :
(rawMeasure x).map (fun ω => (ω s, ω t)) =
(neutralKernel s x) ⊗ₘ neutralKernel (t - s)
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
noncomputable def neutralKernel (t : NNReal) : Kernel I I :=
wfTransitionKernel (t : ℝ)
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:48
Uses 16 · Used by 1
TheoremNormalized raw process agrees with the coordinates almost surely#✓fully proved
Exact normalization changes no fixed-time law.
theorem rawProcess_ae_eq_coordinate (x : I) (t : NNReal) :
rawProcess x t =ᵐ[rawMeasure x] fun ω => ((ω t : I) : ℝ)
noncomputable def rawProcess (x : I) (t : NNReal) (ω : SamplePath) : ℝ :=
if t = 0 then x else ω t
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:78
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
Uses 4 · Used by 2
DefinitionKolmogorov constant for the Wright–Fisher continuity bound#✓fully proved
The explicit Kolmogorov constant 3/16.
def kolmogorovConstant : NNReal := ⟨3 / 16, by positivity⟩
TheoremKolmogorov continuity condition for the raw Wright–Fisher process#✓fully proved
The normalized raw coordinate process satisfies the explicit fourth-moment
Kolmogorov condition with p=4, q=2, and M=3/16.
theorem isKolmogorovProcess_rawProcess (x : I) :
IsKolmogorovProcess (rawProcess x) (rawMeasure x) 4 2
kolmogorovConstant
noncomputable def rawProcess (x : I) (t : NNReal) (ω : SamplePath) : ℝ :=
if t = 0 then x else ω t
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:78
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
def kolmogorovConstant : NNReal := ⟨3 / 16, by positivity⟩
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:437
Uses 22 · Used by 1
StructureContinuous realization of the raw Wright–Fisher process#✓fully proved
A selected continuous modification of the raw Wright--Fisher process, with all pathwise properties stated on every sample.
structure ContinuousRealization (x : I) where
/-- The modified real-valued process. -/
process : NNReal → SamplePath → ℝ
/-- Every time coordinate is measurable. -/
measurable : ∀ t, Measurable (process t)
/-- Every sample path is continuous. -/
continuous : ∀ ω, Continuous fun t => process t ω
/-- Fixed-time almost-everywhere agreement with the normalized raw process. -/
ae_eq_raw : ∀ t, process t =ᵐ[rawMeasure x] rawProcess x t
/-- The initial value is exact on every sample. -/
initial : ∀ ω, process 0 ω = x
/-- Every value lies in the allele-frequency interval. -/
mem_Icc : ∀ t ω, process t ω ∈ Set.Icc (0 : ℝ) 1
abbrev SamplePath := NNReal → I
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:45
process : NNReal → SamplePath → ℝ
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:492
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
noncomputable def rawProcess (x : I) (t : NNReal) (ω : SamplePath) : ℝ :=
if t = 0 then x else ω t
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:78
Uses 3 · Used by 4
DefinitionContinuous modification selected by Kolmogorov's theorem#✓fully proved
The continuous modification selected by Kolmogorov's theorem.
noncomputable def continuousRealization (x : I) : ContinuousRealization x := by
let h := exists_continuous_modification
(isKolmogorovProcess_rawProcess x) (by norm_num : (1 : ℝ) < 2)
let Y := Classical.choose h
have hY := Classical.choose_spec h
refine ⟨Y, hY.1, hY.2.1, hY.2.2.1, ?_, ?_⟩
· intro ω
change Classical.choose h 0 ω = (x : ℝ)
rw [hY.2.2.2.1, rawProcess_zero]
· intro t ω
change Classical.choose h t ω ∈ Set.Icc (0 : ℝ) 1
exact hY.2.2.2.2 (Set.Icc (0 : ℝ) 1) isClosed_Icc ω
(fun s => rawProcess_mem_Icc x s ω) t
structure ContinuousRealization (x : I) where
/-- The modified real-valued process. -/
process : NNReal → SamplePath → ℝ
/-- Every time coordinate is measurable. -/
measurable : ∀ t, Measurable (process t)
/-- Every sample path is continuous. -/
continuous : ∀ ω, Continuous fun t => process t ω
/-- Fixed-time almost-everywhere agreement with the normalized raw process. -/
ae_eq_raw : ∀ t, process t =ᵐ[rawMeasure x] rawProcess x t
/-- The initial value is exact on every sample. -/
initial : ∀ ω, process 0 ω = x
/-- Every value lies in the allele-frequency interval. -/
⋯
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:490
Uses 20 · Used by 3
DefinitionContinuous modified Wright–Fisher process#✓fully proved
The concrete continuous process used by the final realization.
noncomputable def modifiedProcess (x : I) : NNReal → SamplePath → ℝ :=
(continuousRealization x).process
abbrev SamplePath := NNReal → I
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:45
noncomputable def continuousRealization (x : I) : ContinuousRealization x := by
let h := exists_continuous_modification
(isKolmogorovProcess_rawProcess x) (by norm_num : (1 : ℝ) < 2)
let Y := Classical.choose h
have hY := Classical.choose_spec h
refine ⟨Y, hY.1, hY.2.1, hY.2.2.1, ?_, ?_⟩
· intro ω
change Classical.choose h 0 ω = (x : ℝ)
rw [hY.2.2.2.1, rawProcess_zero]
· intro t ω
change Classical.choose h t ω ∈ Set.Icc (0 : ℝ) 1
exact hY.2.2.2.2 (Set.Icc (0 : ℝ) 1) isClosed_Icc ω
⋯
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:505
Uses 3 · Used by 2
TheoremModified process has the raw finite-dimensional laws#✓fully proved
The modified process has the raw finite-dimensional laws, proved on each finite set by intersecting its fixed-time modification events.
theorem map_restrict_modified_eq_raw (x : I) (J : Finset NNReal) :
(rawMeasure x).map
(fun ω => J.restrict (fun t => modifiedProcess x t ω)) =
(rawMeasure x).map
(fun ω => J.restrict (fun t => rawProcess x t ω))
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
noncomputable def modifiedProcess (x : I) : NNReal → SamplePath → ℝ :=
(continuousRealization x).process
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:520
noncomputable def rawProcess (x : I) (t : NNReal) (ω : SamplePath) : ℝ :=
if t = 0 then x else ω t
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:78
TheoremModified process has the canonical coordinate laws#✓fully proved
The modified finite-dimensional laws also equal the original canonical
coordinate laws after coercion from I to ℝ.
theorem map_restrict_modified_eq_coordinate (x : I) (J : Finset NNReal) :
(rawMeasure x).map
(fun ω => J.restrict (fun t => modifiedProcess x t ω)) =
(rawMeasure x).map
(fun ω => J.restrict (fun t => ((ω t : I) : ℝ)))
noncomputable def rawMeasure (x : I) : Measure SamplePath :=
pathMeasure neutralKernel neutralKernel_add x
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:68
noncomputable def modifiedProcess (x : I) : NNReal → SamplePath → ℝ :=
(continuousRealization x).process
MathlibExt/Biology/PopulationGenetics/Diffusion/NeutralWrightFisherRaw.lean:520
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.