mathlib documentation

measure_theory.giry_monad

The Giry monad #

Let X be a measurable space. The collection of all measures on X again forms a measurable space. This construction forms a monad on measurable spaces and measurable functions, called the Giry monad.

Note that most sources use the term "Giry monad" for the restriction to probability measures. Here we include all measures on X.

See also measure_theory/category/Meas.lean, containing an upgrade of the type-level monad to an honest monad of the functor Measure : MeasMeas.

References #

Tags #

giry monad

@[protected, instance]

Measurability structure on measure: Measures are measurable w.r.t. all projections

Equations
theorem measure_theory.measure.measurable_coe {α : Type u_1} [measurable_space α] {s : set α} (hs : measurable_set s) :
theorem measure_theory.measure.measurable_of_measurable_coe {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (f : β → measure_theory.measure α) (h : ∀ (s : set α), measurable_set smeasurable (λ (b : β), (f b) s)) :
theorem measure_theory.measure.measurable_measure {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {μ : α → measure_theory.measure β} :
measurable μ ∀ (s : set β), measurable_set smeasurable (λ (b : α), (μ b) s)
theorem measure_theory.measure.measurable_map {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (f : α → β) (hf : measurable f) :
theorem measure_theory.measure.measurable_lintegral {α : Type u_1} [measurable_space α] {f : α → ℝ≥0∞} (hf : measurable f) :
measurable (λ (μ : measure_theory.measure α), ∫⁻ (x : α), f x μ)

Monadic join on measure in the category of measurable spaces and measurable functions.

Equations
@[simp]
theorem measure_theory.measure.join_zero {α : Type u_1} [measurable_space α] :
0.join = 0
theorem measure_theory.measure.lintegral_join {α : Type u_1} [measurable_space α] {m : measure_theory.measure (measure_theory.measure α)} {f : α → ℝ≥0∞} (hf : measurable f) :
∫⁻ (x : α), f x m.join = ∫⁻ (μ : measure_theory.measure α), ∫⁻ (x : α), f x μ m
def measure_theory.measure.bind {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (m : measure_theory.measure α) (f : α → measure_theory.measure β) :

Monadic bind on measure, only works in the category of measurable spaces and measurable functions. When the function f is not measurable the result is not well defined.

Equations
@[simp]
theorem measure_theory.measure.bind_zero_left {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (f : α → measure_theory.measure β) :
0.bind f = 0
@[simp]
theorem measure_theory.measure.bind_zero_right {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (m : measure_theory.measure α) :
m.bind 0 = 0
@[simp]
theorem measure_theory.measure.bind_zero_right' {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] (m : measure_theory.measure α) :
m.bind (λ (_x : α), 0) = 0
@[simp]
theorem measure_theory.measure.bind_apply {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {m : measure_theory.measure α} {f : α → measure_theory.measure β} {s : set β} (hs : measurable_set s) (hf : measurable f) :
(m.bind f) s = ∫⁻ (a : α), (f a) s m
theorem measure_theory.measure.measurable_bind' {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {g : α → measure_theory.measure β} (hg : measurable g) :
theorem measure_theory.measure.lintegral_bind {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {m : measure_theory.measure α} {μ : α → measure_theory.measure β} {f : β → ℝ≥0∞} (hμ : measurable μ) (hf : measurable f) :
∫⁻ (x : β), f x m.bind μ = ∫⁻ (a : α), ∫⁻ (x : β), f x μ a m
theorem measure_theory.measure.bind_bind {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {γ : Type u_3} [measurable_space γ] {m : measure_theory.measure α} {f : α → measure_theory.measure β} {g : β → measure_theory.measure γ} (hf : measurable f) (hg : measurable g) :
(m.bind f).bind g = m.bind (λ (a : α), (f a).bind g)
theorem measure_theory.measure.bind_dirac {α : Type u_1} {β : Type u_2} [measurable_space α] [measurable_space β] {f : α → measure_theory.measure β} (hf : measurable f) (a : α) :