Coalescence is almost sure
ProvedMarkovMixing.cftp_coalescenceLet be a Markov chain on a finite state space , and let be a random mapping representation of : a probability distribution on update functions with for all . Coupling from the past composes i.i.d. maps drawn from at times forward to time zero, , and the composition has coalesced when it is a constant map — all starting states have been funneled to one common value.
The theorem (§22.3 of Levin–Peres–Wilmer) asserts: if some finite block of updates collapses the state space with positive probability — there is a and a tuple of maps , each of positive -probability, whose composition is constant — then coalescence is almost sure:
The proof is a geometric-trials argument: the past divides into disjoint blocks of length , each an independent chance of at least to collapse everything, and one collapsed block anywhere inside the composition makes the whole composition constant. This is the standing hypothesis of the correctness theorem — and the reason CFTP terminates in practice: for an irreducible aperiodic chain a collapsing block always exists, so the algorithm halts with probability one.
import Definitions.Def_mm_cftp import Mathlib.Analysis.SpecificLimits.Basic
namespace MarkovMixing
/-- **§22.3** (LPW): if some finite composition of update maps collapses the
state space with positive probability, then coalescence is almost sure: the
probability that CFTP has not coalesced by time `t` tends to `0`. -/
theorem cftp_coalescence {V : Type*} [Fintype V] [DecidableEq V] [Nonempty V]
(P : Matrix V V ℝ) (hP : IsStochastic P)
(ν : (V → V) → ℝ) (hν : IsRandomMapRep P ν)
(hpos : ∃ (t : ℕ) (F : Fin t → (V → V)),
0 < ∏ i, ν (F i) ∧ ∀ x y : V, cftpCompose F x = cftpCompose F y) :
Filter.Tendsto (fun t => cftpNotCoalescedProb ν t)
Filter.atTop (nhds 0) := by
sorry
end MarkovMixing