Skip to content
Rainbow docs menu

Reference · Finite types, distributions and Markov chains

rainbow.math.finite.markov-kernel-composition

Finite types, distributions and Markov chainssrc/rainbow/math/finite/markov_kernel_composition.clj1 definitions, 5 theorems

Composition laws for exact finite NNRAT Markov kernels. The first kernel is applied before the second: (K ; L)(source,target) = sum_middle K(source,middle) * L(middle,target). Finite Fubini and distributivity prove both Chapman--Kolmogorov and exact preservation of total mass. Consequently normalized kernels are closed under composition, normalized masses remain normalized after every step, and a mass stationary for each factor is stationary for their composition. Native, kernel-checked, and axiom-free on D63.

Depends onmath.finite.markov-stationarity

markov/nnrat-kernel-compose

DefinitionSource, line 90

markov/nnrat-kernel-compose.{u} :
  (S : Type u) (states : Finset S) (first-kernel second-kernel : S → S → ℚ≥0)
  (x₁ x₂ : S)
  → ℚ≥0

Finset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

markov/nnrat-kernel-step-preserves-total-mass-equivalence

TheoremFor all inputsNo axiomsSource, line 118

markov/nnrat-kernel-step-preserves-total-mass-equivalence.{u} :
  (S : Type u) (states : Finset S) (kernel : S → S → ℚ≥0) (mass : S → ℚ≥0)
  (normalized : markov/nnrat-kernel-rows-normalized S states kernel)
  → probability/nnrat-total-mass S states (fun target => step target) = probability/nnrat-total-mass S states mass
  where step := markov/nnrat-kernel-step S states kernel mass

= = nnrat/equivalent: equality of rational valuesFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

markov/nnrat-kernel-step-preserves-normalization

TheoremFor all inputsNo axiomsSource, line 220

markov/nnrat-kernel-step-preserves-normalization.{u} :
  (S : Type u) (states : Finset S) (kernel : S → S → ℚ≥0) (mass : S → ℚ≥0)
  (kernel-normalized : markov/nnrat-kernel-rows-normalized S states kernel)
  (mass-normalized : probability/nnrat-total-mass S states mass = 1)
  → probability/nnrat-total-mass S states (fun target => step target) = 1
  where step := markov/nnrat-kernel-step S states kernel mass

1 = nnrat/one= = nnrat/equivalent: equality of rational valuesFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

markov/nnrat-kernel-step-compose

TheoremFor all inputsNo axiomsSource, line 260

markov/nnrat-kernel-step-compose.{u} :
  (S : Type u) (states : Finset S) (first-kernel second-kernel : S → S → ℚ≥0)
  (mass : S → ℚ≥0) (target : S)
  → markov/nnrat-kernel-step S states (fun source => fun destination => compose source destination) mass target = markov/nnrat-kernel-step S states second-kernel (fun middle => step middle) target
  where compose := markov/nnrat-kernel-compose S states first-kernel second-kernel
  where step := markov/nnrat-kernel-step S states first-kernel mass

= = nnrat/equivalent: equality of rational valuesFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

markov/nnrat-kernel-compose-rows-normalized

TheoremFor all inputsNo axiomsSource, line 427

markov/nnrat-kernel-compose-rows-normalized.{u} :
  (S : Type u) (states : Finset S) (first-kernel second-kernel : S → S → ℚ≥0)
  (first-normalized : normalized first-kernel)
  (second-normalized : normalized second-kernel)
  → normalized (fun source => fun target => compose source target)
  where compose := markov/nnrat-kernel-compose S states first-kernel second-kernel
  where normalized := markov/nnrat-kernel-rows-normalized S states

Finset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

markov/nnrat-common-stationary-under-kernel-compose

TheoremFor all inputsNo axiomsSource, line 474

markov/nnrat-common-stationary-under-kernel-compose.{u} :
  (S : Type u) (states : Finset S) (first-kernel second-kernel : S → S → ℚ≥0)
  (mass : S → ℚ≥0) (first-fixed : markov/nnrat-stationary S states first-kernel mass)
  (second-fixed : markov/nnrat-stationary S states second-kernel mass)
  → markov/nnrat-stationary S states (fun source => fun target => compose source target) mass
  where compose := markov/nnrat-kernel-compose S states first-kernel second-kernel

Finset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational