Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

MarkovProcess.Parameterized.Semigroup

Definition
MarkovProcessModule_MarkovProcess_Parameterized_Semigroup

by WillR · Oct 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

markovprocessmarkovprocess-module-importscope-fullscott-armstrongsource-faithful

Measurably parameterized sub-Markov kernel semigroups

This file packages sub-Markov kernel semigroups depending measurably on a parameter. The measurability field is joint in parameter, time, and starting state, with carrier ordering Theta × (NNReal × alpha). Each fixed-parameter slice is an ordinary SubMarkovKernelSemigroup.

No parameter family is selected here, and no concrete coefficient, domain, Feller, conservativity, or stochastic-process assertion is made.

Complete pinned Lean module MarkovProcess.Parameterized.Semigroup by Scott Armstrong (Apache-2.0). Contains the original definitions, instances, theorems and proofs in their original declaration order. Only local MarkovProcess import directives have been rewritten for Prove2Me; source mathematical declarations are unchanged. The bundle must pass Prove2Me's remote compiler before it can be used as a dependency.

Definition code
/-
Copyright (c) 2026 Scott Armstrong. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Armstrong
-/
import Definitions.Def_MarkovProcessModule_MarkovProcess_Kernel_KernelSemigroup

/-!
# Measurably parameterized sub-Markov kernel semigroups

This file packages sub-Markov kernel semigroups depending measurably on a parameter. The
measurability field is joint in parameter, time, and starting state, with carrier ordering
`Theta × (NNReal × alpha)`. Each fixed-parameter slice is an ordinary
`SubMarkovKernelSemigroup`.

No parameter family is selected here, and no concrete coefficient, domain, Feller, conservativity,
or stochastic-process assertion is made.
-/

open Set
open scoped ENNReal ProbabilityTheory

noncomputable section

namespace MarkovProcess

open MeasureTheory ProbabilityTheory

/-- A jointly measurable parameter family of sub-Markov transition-kernel semigroups.

The kernel is jointly measurable on `Θ × (NNReal × α)`. Mathlib writes `η.comp κ` for
first applying `κ` and then `η`, so the Chapman--Kolmogorov field has the orientation
`K θ (s + t) = (K θ t).comp (K θ s)`.
-/
structure ParameterizedSubMarkovKernelSemigroup (Theta alpha : Type*)
    [MeasurableSpace Theta] [MeasurableSpace alpha] where
  /-- The transition kernel at a parameter and nonnegative time. -/
  kernel : Theta → NNReal → Kernel alpha alpha
  /-- Joint measurability in parameter, time, and starting state. -/
  measurable_kernel : Measurable fun q : Theta × (NNReal × alpha) ↦
    kernel q.1 q.2.1 q.2.2
  /-- At time zero every parameter slice is the identity kernel. -/
  kernel_zero : ∀ theta, kernel theta 0 = Kernel.id
  /-- The Chapman--Kolmogorov law, in Mathlib's kernel-composition orientation. -/
  kernel_add : ∀ theta s t, kernel theta (s + t) = (kernel theta t).comp (kernel theta s)
  /-- Every transition measure has mass at most one. -/
  isSubMarkovKernel : ∀ theta t, IsSubMarkovKernel (kernel theta t)

namespace ParameterizedSubMarkovKernelSemigroup

variable {Theta alpha : Type*} [MeasurableSpace Theta] [MeasurableSpace alpha]

instance : CoeFun (ParameterizedSubMarkovKernelSemigroup Theta alpha)
    (fun _ ↦ Theta → NNReal → Kernel alpha alpha) where
  coe P := P.kernel

/-- Two parameterized semigroups are equal when all their kernel slices are equal. -/
@[ext]
theorem ext {P Q : ParameterizedSubMarkovKernelSemigroup Theta alpha}
    (h : ∀ theta t, P theta t = Q theta t) : P = Q := by
  cases P with
  | mk P _ _ _ _ =>
    cases Q with
    | mk Q _ _ _ _ =>
      have hPQ : P = Q := funext fun theta ↦ funext fun t ↦ h theta t
      cases hPQ
      rfl

variable (P : ParameterizedSubMarkovKernelSemigroup Theta alpha)

/-- The jointly measurable kernel with input ordered as parameter, then time and state. -/
def jointKernel : Kernel (Theta × (NNReal × alpha)) alpha where
  toFun q := P q.1 q.2.1 q.2.2
  measurable' := P.measurable_kernel

/-- Evaluation of the joint kernel is evaluation of the original parameter family. -/
@[simp]
theorem jointKernel_apply (q : Theta × (NNReal × alpha)) :
    P.jointKernel q = P q.1 q.2.1 q.2.2 :=
  rfl

/-- Evaluation of the joint kernel at an explicit parameter, time, and state. -/
@[simp]
theorem jointKernel_apply' (theta : Theta) (t : NNReal) (x : alpha) :
    P.jointKernel (theta, (t, x)) = P theta t x :=
  rfl

/-- Evaluation of the parameterized kernel on a measurable set is jointly measurable. -/
theorem measurable_measure {s : Set alpha} (hs : MeasurableSet s) :
    Measurable fun q : Theta × (NNReal × alpha) ↦ P q.1 q.2.1 q.2.2 s :=
  (Measure.measurable_coe hs).comp P.measurable_kernel

/-- The ordinary sub-Markov kernel semigroup at one fixed parameter. -/
def toSubMarkovKernelSemigroup (theta : Theta) : SubMarkovKernelSemigroup alpha where
  kernel := P theta
  measurable_kernel := by
    have hPair : Measurable fun p : NNReal × alpha ↦ (theta, p) :=
      (measurable_const : Measurable fun _ : NNReal × alpha ↦ theta).prod measurable_id
    exact P.measurable_kernel.comp hPair
  kernel_zero := P.kernel_zero theta
  kernel_add := P.kernel_add theta
  isSubMarkovKernel := P.isSubMarkovKernel theta

/-- A fixed-parameter slice evaluates to the original parameterized kernel. -/
@[simp]
theorem toSubMarkovKernelSemigroup_apply (theta : Theta) (t : NNReal) :
    toSubMarkovKernelSemigroup (P := P) theta t = P theta t :=
  rfl

/-- Every parameter slice is the identity kernel at time zero. -/
@[simp]
theorem zero (theta : Theta) : P theta 0 = Kernel.id :=
  P.kernel_zero theta

/-- The parameterwise Chapman--Kolmogorov law. -/
@[simp]
theorem add (theta : Theta) (s t : NNReal) :
    P theta (s + t) = (P theta t).comp (P theta s) :=
  P.kernel_add theta s t

/-- Transition kernels commute under composition at each fixed parameter. -/
theorem comp_comm (theta : Theta) (s t : NNReal) :
    (P theta t).comp (P theta s) = (P theta s).comp (P theta t) := by
  rw [← P.add theta s t, ← P.add theta t s, add_comm]

/-- Chapman--Kolmogorov as equality of parameterized transition measures. -/
theorem add_apply (theta : Theta) (s t : NNReal) (x : alpha) :
    P theta (s + t) x = (P theta s x).bind (P theta t) := by
  rw [P.add, Kernel.comp_apply]

/-- Chapman--Kolmogorov evaluated on a measurable set. -/
theorem add_apply' (theta : Theta) (s t : NNReal) (x : alpha)
    {u : Set alpha} (hu : MeasurableSet u) :
    P theta (s + t) x u = ∫⁻ y, P theta t y u ∂P theta s x := by
  rw [P.add, Kernel.comp_apply' _ _ _ hu]

/-- The tower form of Chapman--Kolmogorov for nonnegative measurable functions. -/
theorem lintegral_add (theta : Theta) (s t : NNReal) (x : alpha)
    {f : alpha → ℝ≥0∞} (hf : Measurable f) :
    ∫⁻ y, f y ∂P theta (s + t) x =
      ∫⁻ y, ∫⁻ z, f z ∂P theta t y ∂P theta s x := by
  rw [P.add, Kernel.lintegral_comp _ _ _ hf]

/-- Every parameterized transition measure has mass at most one. -/
theorem measure_univ_le_one (theta : Theta) (t : NNReal) (x : alpha) :
    P theta t x univ ≤ 1 :=
  P.isSubMarkovKernel theta t x

/-- Every parameterized transition measure assigns mass at most one to every set. -/
theorem measure_le_one (theta : Theta) (t : NNReal) (x : alpha) (s : Set alpha) :
    P theta t x s ≤ 1 :=
  (P.isSubMarkovKernel theta t).measure_le_one x s

end ParameterizedSubMarkovKernelSemigroup

end MarkovProcess
Source
https://github.com/scottnarmstrong/MarkovProcess/blob/1f8060caa137731fa08029592019eeaf9d997fe5/MarkovProcess/Parameterized/Semigroup.lean

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me