pith. machine review for the scientific record. sign in

IndisputableMonolith.YM.Dobrushin

IndisputableMonolith/YM/Dobrushin.lean · 70 lines · 9 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2
   3namespace IndisputableMonolith
   4namespace YM
   5namespace Dobrushin
   6
   7open scoped BigOperators
   8
   9variable {ι : Type} [Fintype ι]
  10
  11/-- Minimal Markov kernel interface for overlap computations. -/
  12structure MarkovKernel (ι : Type) [Fintype ι] where
  13  P : ι → ι → ℝ
  14  nonneg : ∀ i j, 0 ≤ P i j
  15  rowSum_one : ∀ i, ∑ j, P i j = 1
  16
  17@[simp] def row (K : MarkovKernel ι) (i : ι) : ι → ℝ := fun j => K.P i j
  18
  19/-- Row–row overlap `∑j min(P i j, P i' j)` in [0,1]. -/
  20def overlap (K : MarkovKernel ι) (i i' : ι) : ℝ := ∑ j, min (K.P i j) (K.P i' j)
  21
  22lemma overlap_nonneg (K : MarkovKernel ι) (i i' : ι) : 0 ≤ overlap K i i' := by
  23  classical
  24  have hterm : ∀ j : ι, 0 ≤ min (K.P i j) (K.P i' j) :=
  25    fun j => min_nonneg (K.nonneg i j) (K.nonneg i' j)
  26  have hsum : 0 ≤ ∑ j in Finset.univ, min (K.P i j) (K.P i' j) :=
  27    Finset.sum_nonneg (by intro j _; exact hterm j)
  28  simpa [overlap] using hsum
  29
  30lemma overlap_le_one (K : MarkovKernel ι) (i i' : ι) : overlap K i i' ≤ 1 := by
  31  classical
  32  have hpoint : ∀ j : ι, min (K.P i j) (K.P i' j) ≤ K.P i j :=
  33    fun j => min_le_left _ _
  34  have hsum : (∑ j in Finset.univ, min (K.P i j) (K.P i' j)) ≤ ∑ j in Finset.univ, K.P i j :=
  35    Finset.sum_le_sum (by intro j _; exact hpoint j)
  36  simpa [overlap, K.rowSum_one i] using hsum
  37
  38/-- TV contraction certificate from uniform overlap lower bound β ∈ (0,1]. -/
  39def TVContractionMarkov (α : ℝ) : Prop := (0 ≤ α) ∧ (α < 1)
  40
  41theorem tv_contraction_from_overlap_lb {β : ℝ}
  42    (hβpos : 0 < β) (hβle : β ≤ 1) : TVContractionMarkov (α := 1 - β) := by
  43  constructor <;> linarith
  44
  45end Dobrushin
  46end YM
  47
  48namespace YM
  49
  50open YM.Dobrushin
  51
  52variable {ι : Type} [Fintype ι]
  53
  54/-- Turn a strictly positive row‑stochastic real matrix into a MarkovKernel. -/
  55noncomputable def markovOfMatrix (A : Matrix ι ι ℝ)
  56  (hrow : ∀ i, ∑ j, A i j = 1) (hnn : ∀ i j, 0 ≤ A i j) : Dobrushin.MarkovKernel ι :=
  57{ P := fun i j => A i j
  58, nonneg := hnn
  59, rowSum_one := hrow }
  60
  61/-- If all row‑row overlaps are uniformly ≥ β ∈ (0,1], we obtain a TV contraction with α = 1−β. -/
  62theorem tv_contract_of_uniform_overlap {β : ℝ}
  63    (hβpos : 0 < β) (hβle : β ≤ 1) :
  64    Dobrushin.TVContractionMarkov (α := 1 - β) := by
  65  -- special case of tv_contraction_from_overlap_lb applied to `markovOfMatrix A`
  66  exact Dobrushin.tv_contraction_from_overlap_lb hβpos hβle
  67
  68end YM
  69end IndisputableMonolith
  70

source mirrored from github.com/jonwashburn/shape-of-logic