The sticky (equal-input) kernel on a finite state space
DefinitionEqual-input matrix#✓fully proved
The equal-input matrix 𝟙 πᵀ: every row equals π.
Used by 11
DefinitionSticky kernel#✓fully proved
The sticky kernel with persistence c: c • 1 + (1 - c) • 𝟙 πᵀ. Started from i,
it stays at i with probability c and otherwise redraws the state from π.
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 1 · Used by 17
DefinitionEqual-input generator (F81 model)#✓fully proved
The equal-input generator κ • (𝟙 πᵀ - 1) with rate κ (Felsenstein's F81 model on
an arbitrary finite state space): jumps at rate κ to a state drawn from π.
noncomputable def equalInputRate [DecidableEq ι] (π : ι → ℝ) (κ : ℝ) : Matrix ι ι ℝ :=
κ • (equalInput π - 1)
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 1 · Used by 2
TheoremEntries of the equal-input matrix#✓fully proved
Entrywise form of the equal-input matrix.
@[simp]
theorem equalInput_apply (π : ι → ℝ) (i j : ι) : equalInput π i j = π j
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 1
TheoremEqual-input matrix is idempotent#✓fully proved
With ∑ π = 1, 𝟙 πᵀ is idempotent.
theorem equalInput_mul_self [Fintype ι] (hπ : ∑ i, π i = 1) :
equalInput π * equalInput π = equalInput π
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 1 · Used by 2
TheoremEntries of the sticky kernel#✓fully proved
Entrywise form of the sticky kernel.
theorem stickyKernel_apply (π : ι → ℝ) (c : ℝ) (i j : ι) :
stickyKernel π c i j = c * (if i = j then 1 else 0) + (1 - c) * π j
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 1 · Used by 4
TheoremSticky kernel at persistence one is the identity#✓fully proved
The sticky kernel at persistence 1 is the identity.
@[simp]
theorem stickyKernel_one (π : ι → ℝ) : stickyKernel π 1 = 1
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 2
TheoremSticky kernel at persistence zero is the equal-input matrix#✓fully proved
The sticky kernel at persistence 0 is 𝟙 πᵀ.
@[simp]
theorem stickyKernel_zero (π : ι → ℝ) : stickyKernel π 0 = equalInput π
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 2 · Used by 1
TheoremNonnegativity of the sticky kernel#✓fully proved
For 0 ≤ c ≤ 1 and π ≥ 0 the entries of the sticky kernel are nonnegative.
theorem stickyKernel_nonneg (hπ : ∀ i, 0 ≤ π i) {c : ℝ} (hc0 : 0 ≤ c) (hc1 : c ≤ 1)
(i j : ι) : 0 ≤ stickyKernel π c i j
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 1
TheoremReversibility#✓fully proved
π i K i j = π j K j i (detailed balance), for all real c, π.
theorem stickyKernel_reversible (π : ι → ℝ) (c : ℝ) (i j : ι) :
π i * stickyKernel π c i j = π j * stickyKernel π c j i
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 1
TheoremContinuity of the sticky kernel in the persistence#✓fully proved
The sticky kernel depends continuously on the persistence.
theorem continuous_stickyKernel (π : ι → ℝ) : Continuous (stickyKernel π)
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 2
TheoremLong-distance limit#✓fully proved
For κ > 0, K (e^{-κ t}) → 𝟙 πᵀ as t → ∞.
theorem tendsto_stickyKernel_atTop (π : ι → ℝ) {κ : ℝ} (hκ : 0 < κ) :
Tendsto (fun t => stickyKernel π (Real.exp (-(κ * t)))) atTop (𝓝 (equalInput π))
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
def equalInput (π : ι → ℝ) : Matrix ι ι ℝ :=
Matrix.of fun _ j => π j
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:81
Uses 4
TheoremShort-distance limit#✓fully proved
K (e^{-κ t}) → 1 as t → 0, for every real κ.
theorem tendsto_stickyKernel_nhds_zero (π : ι → ℝ) (κ : ℝ) :
Tendsto (fun t => stickyKernel π (Real.exp (-(κ * t)))) (𝓝 0) (𝓝 1)
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 3
TheoremRows of the sticky kernel sum to one#✓fully proved
With ∑ π = 1, the rows of the sticky kernel sum to 1 (for every real c).
theorem sum_stickyKernel (hπ : ∑ i, π i = 1) (c : ℝ) (i : ι) :
∑ j, stickyKernel π c i j = 1
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 2
TheoremSticky kernel is row-stochastic#✓fully proved
For 0 ≤ c ≤ 1, π ≥ 0 and ∑ π = 1 the sticky kernel is row-stochastic.
theorem stickyKernel_mem_rowStochastic (hπ0 : ∀ i, 0 ≤ π i) (hπ : ∑ i, π i = 1) {c : ℝ}
(hc0 : 0 ≤ c) (hc1 : c ≤ 1) : stickyKernel π c ∈ rowStochastic ℝ ι
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 3
TheoremStationary vector of the sticky kernel#✓fully proved
With ∑ π = 1, π is a stationary vector of the sticky kernel: π K = π.
theorem vecMul_stickyKernel (hπ : ∑ i, π i = 1) (c : ℝ) : π ᵥ* stickyKernel π c = π
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 3
TheoremComposition#✓fully proved
With ∑ π = 1, K c * K c' = K (c c') for all real c, c'.
theorem stickyKernel_mul (hπ : ∑ i, π i = 1) (c c' : ℝ) :
stickyKernel π c * stickyKernel π c' = stickyKernel π (c * c')
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 3 · Used by 2
TheoremPowers of the sticky kernel#✓fully proved
With ∑ π = 1, K c ^ n = K (c ^ n): n steps of the sticky kernel are one step with
persistence c ^ n.
theorem stickyKernel_pow (hπ : ∑ i, π i = 1) (c : ℝ) (n : ℕ) :
stickyKernel π c ^ n = stickyKernel π (c ^ n)
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 3
TheoremEqual-input generator is a rate matrix#✓fully proved
For κ ≥ 0, π ≥ 0 and ∑ π = 1, the equal-input generator is a rate matrix.
theorem isRateMatrix_equalInputRate (hπ0 : ∀ i, 0 ≤ π i) (hπ : ∑ i, π i = 1) {κ : ℝ}
(hκ : 0 ≤ κ) : IsRateMatrix (equalInputRate π κ)
structure IsRateMatrix (Q : Matrix ι ι ℝ) : Prop where
/-- The jump rates `Q i j`, `i ≠ j`, are nonnegative. -/
nonneg_of_ne : ∀ ⦃i j : ι⦄, i ≠ j → 0 ≤ Q i j
/-- Each row sums to `0`. -/
sum_row : ∀ i, ∑ j, Q i j = 0
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/RateMatrix.lean:57
noncomputable def equalInputRate [DecidableEq ι] (π : ι → ℝ) (κ : ℝ) : Matrix ι ι ℝ :=
κ • (equalInput π - 1)
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:91
Uses 3
TheoremThe sticky kernel is the equal-input transition function#✓fully proved
With ∑ π = 1,
exp (t • κ (𝟙 πᵀ - 1)) = K (e^{-κ t}) for all real κ and t.
theorem ctmcTransition_equalInputRate (hπ : ∑ i, π i = 1) (κ t : ℝ) :
ctmcTransition (equalInputRate π κ) t = stickyKernel π (Real.exp (-(κ * t)))
noncomputable def ctmcTransition (Q : Matrix ι ι ℝ) (t : ℝ) : Matrix ι ι ℝ :=
exp (t • Q)
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/Semigroup.lean:64
noncomputable def equalInputRate [DecidableEq ι] (π : ι → ℝ) (κ : ℝ) : Matrix ι ι ℝ :=
κ • (equalInput π - 1)
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:91
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 5
TheoremSemigroup law#✓fully proved
Semigroup law of the sticky kernel in time:
K (e^{-κ s}) * K (e^{-κ t}) = K (e^{-κ (s + t)}) (with ∑ π = 1).
theorem stickyKernel_exp_add (hπ : ∑ i, π i = 1) (κ s t : ℝ) :
stickyKernel π (Real.exp (-(κ * s))) * stickyKernel π (Real.exp (-(κ * t))) =
stickyKernel π (Real.exp (-(κ * (s + t))))
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2
TheoremCovariance under the sticky kernel#✓fully proved
If (X, Y) has joint law P(X = i, Y = j) =
π i K i j (stationary start, one step of the kernel), then
Cov(f X, g Y) = c Cov_π(f, g). The algebraic identity holds for all real π, f, g, c;
it is a covariance of a probability law when π is a probability vector and 0 ≤ c ≤ 1.
theorem covariance_stickyKernel (π : ι → ℝ) (c : ℝ) (f g : ι → ℝ) :
∑ i, ∑ j, π i * stickyKernel π c i j * (f i * g j) -
(∑ i, π i * f i) * (∑ j, π j * g j) =
c * (∑ i, π i * (f i * g i) - (∑ i, π i * f i) * (∑ j, π j * g j))
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2 · Used by 1
TheoremTwo-state ancestry covariance#✓fully proved
Two-state ancestry covariance (the local-ancestry chain of a two-way pulse
admixture). With ancestry proportions π = (α, 1 - α) and persistence c = (1 - r) ^ n
(no recombination between the two sites along the n meioses since admixture, recombination
fraction r per meiosis), the indicators I_x = [X = 0], I_y = [Y = 0] of ancestry 0 at
the two sites have covariance α (1 - α) (1 - r) ^ n. The kernel form of the ancestry pair is
the modeling assumption here; this statement does not derive it from a genealogy.
theorem covariance_indicator_stickyKernel_two (α r : ℝ) (n : ℕ) :
let π : Fin 2 → ℝ := ![α, 1 - α]
let I : Fin 2 → ℝ := ![1, 0]
∑ i, ∑ j, π i * stickyKernel π ((1 - r) ^ n) i j * (I i * I j) -
(∑ i, π i * I i) * (∑ j, π j * I j) = α * (1 - α) * (1 - r) ^ n
noncomputable def stickyKernel [DecidableEq ι] (π : ι → ℝ) (c : ℝ) : Matrix ι ι ℝ :=
c • (1 : Matrix ι ι ℝ) + (1 - c) • equalInput π
MathlibExt/Probability/Process/ContinuousTimeMarkovChain/StickyKernel.lean:86
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.