mathlib3 documentation

measure_theory.constructions.prod.basic

The product measure #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file we define and prove properties about the binary product measure. If α and β have σ-finite measures μ resp. ν then α × β can be equipped with a σ-finite measure μ.prod ν that satisfies (μ.prod ν) s = ∫⁻ x, ν {y | (x, y) ∈ s} ∂μ. We also have (μ.prod ν) (s ×ˢ t) = μ s * ν t, i.e. the measure of a rectangle is the product of the measures of the sides.

We also prove Tonelli's theorem.

Main definition #

Main results #

Implementation Notes #

Many results are proven twice, once for functions in curried form (α → β → γ) and one for functions in uncurried form (α × β → γ). The former often has an assumption measurable (uncurry f), which could be inconvenient to discharge, but for the latter it is more common that the function has to be given explicitly, since Lean cannot synthesize the function by itself. We name the lemmas about the uncurried form with a prime. Tonelli's theorem has a different naming scheme, since the version for the uncurried version is reversed.

Tags #

product measure, Tonelli's theorem, Fubini-Tonelli theorem

theorem is_pi_system.prod {α : Type u_1} {β : Type u_3} {C : set (set α)} {D : set (set β)} (hC : is_pi_system C) (hD : is_pi_system D) :

Rectangles formed by π-systems form a π-system.

theorem is_countably_spanning.prod {α : Type u_1} {β : Type u_3} {C : set (set α)} {D : set (set β)} (hC : is_countably_spanning C) (hD : is_countably_spanning D) :

Rectangles of countably spanning sets are countably spanning.

Measurability #

Before we define the product measure, we can talk about the measurability of operations on binary functions. We show that if f is a binary measurable function, then the function that integrates along one of the variables (using either the Lebesgue or Bochner integral) is measurable.

The product of generated σ-algebras is the one generated by rectangles, if both generating sets are countably spanning.

If C and D generate the σ-algebras on α resp. β, then rectangles formed by C and D generate the σ-algebra on α × β.

The product σ-algebra is generated from boxes, i.e. s ×ˢ t for sets s : set α and t : set β.

theorem is_pi_system_prod {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] :

Rectangles form a π-system.

theorem measurable_measure_prod_mk_left_finite {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ν : measure_theory.measure β} [measure_theory.is_finite_measure ν] {s : set × β)} (hs : measurable_set s) :
measurable (λ (x : α), ν (prod.mk x ⁻¹' s))

If ν is a finite measure, and s ⊆ α × β is measurable, then x ↦ ν { y | (x, y) ∈ s } is a measurable function. measurable_measure_prod_mk_left is strictly more general.

theorem measurable_measure_prod_mk_left {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {s : set × β)} (hs : measurable_set s) :
measurable (λ (x : α), ν (prod.mk x ⁻¹' s))

If ν is a σ-finite measure, and s ⊆ α × β is measurable, then x ↦ ν { y | (x, y) ∈ s } is a measurable function.

theorem measurable_measure_prod_mk_right {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} [measure_theory.sigma_finite μ] {s : set × β)} (hs : measurable_set s) :
measurable (λ (y : β), μ ((λ (x : α), (x, y)) ⁻¹' s))

If μ is a σ-finite measure, and s ⊆ α × β is measurable, then y ↦ μ { x | (x, y) ∈ s } is a measurable function.

theorem measurable.map_prod_mk_right {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} [measure_theory.sigma_finite μ] :
measurable (λ (y : β), measure_theory.measure.map (λ (x : α), (x, y)) μ)
theorem measurable_embedding.prod_mk {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {mα : measurable_space α} {mβ : measurable_space β} {mγ : measurable_space γ} {mδ : measurable_space δ} {f : α β} {g : γ δ} (hg : measurable_embedding g) (hf : measurable_embedding f) :
measurable_embedding (λ (x : γ × α), (g x.fst, f x.snd))
theorem measurable.lintegral_prod_right' {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {f : α × β ennreal} (hf : measurable f) :
measurable (λ (x : α), ∫⁻ (y : β), f (x, y) ν)

The Lebesgue integral is measurable. This shows that the integrand of (the right-hand-side of) Tonelli's theorem is measurable.

theorem measurable.lintegral_prod_right {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {f : α β ennreal} (hf : measurable (function.uncurry f)) :
measurable (λ (x : α), ∫⁻ (y : β), f x y ν)

The Lebesgue integral is measurable. This shows that the integrand of (the right-hand-side of) Tonelli's theorem is measurable. This version has the argument f in curried form.

theorem measurable.lintegral_prod_left' {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} [measure_theory.sigma_finite μ] {f : α × β ennreal} (hf : measurable f) :
measurable (λ (y : β), ∫⁻ (x : α), f (x, y) μ)

The Lebesgue integral is measurable. This shows that the integrand of (the right-hand-side of) the symmetric version of Tonelli's theorem is measurable.

theorem measurable.lintegral_prod_left {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} [measure_theory.sigma_finite μ] {f : α β ennreal} (hf : measurable (function.uncurry f)) :
measurable (λ (y : β), ∫⁻ (x : α), f x y μ)

The Lebesgue integral is measurable. This shows that the integrand of (the right-hand-side of) the symmetric version of Tonelli's theorem is measurable. This version has the argument f in curried form.

The product measure #

theorem measure_theory.measure.prod_apply {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {s : set × β)} (hs : measurable_set s) :
(μ.prod ν) s = ∫⁻ (x : α), ν (prod.mk x ⁻¹' s) μ
@[simp]
theorem measure_theory.measure.prod_prod {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] (s : set α) (t : set β) :
(μ.prod ν) (s ×ˢ t) = μ s * ν t

The product measure of the product of two sets is the product of their measures. Note that we do not need the sets to be measurable.

theorem measure_theory.measure.ae_measure_lt_top {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {s : set × β)} (hs : measurable_set s) (h2s : (μ.prod ν) s ) :
∀ᵐ (x : α) μ, ν (prod.mk x ⁻¹' s) <
theorem measure_theory.measure.measure_prod_null {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {s : set × β)} (hs : measurable_set s) :
(μ.prod ν) s = 0 (λ (x : α), ν (prod.mk x ⁻¹' s)) =ᵐ[μ] 0

Note: the assumption hs cannot be dropped. For a counterexample, see Walter Rudin Real and Complex Analysis, example (c) in section 8.9.

theorem measure_theory.measure.measure_ae_null_of_prod_null {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {s : set × β)} (h : (μ.prod ν) s = 0) :
(λ (x : α), ν (prod.mk x ⁻¹' s)) =ᵐ[μ] 0

Note: the converse is not true without assuming that s is measurable. For a counterexample, see Walter Rudin Real and Complex Analysis, example (c) in section 8.9.

theorem measure_theory.measure.ae_ae_of_ae_prod {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {p : α × β Prop} (h : ∀ᵐ (z : α × β) μ.prod ν, p z) :
∀ᵐ (x : α) μ, ∀ᵐ (y : β) ν, p (x, y)

Note: the converse is not true. For a counterexample, see Walter Rudin Real and Complex Analysis, example (c) in section 8.9.

μ.prod ν has finite spanning sets in rectangles of finite spanning sets.

Equations
theorem measure_theory.measure.prod_eq_generate_from {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} {C : set (set α)} {D : set (set β)} (hC : measurable_space.generate_from C = _inst_1) (hD : measurable_space.generate_from D = _inst_3) (h2C : is_pi_system C) (h2D : is_pi_system D) (h3C : μ.finite_spanning_sets_in C) (h3D : ν.finite_spanning_sets_in D) {μν : measure_theory.measure × β)} (h₁ : (s : set α), s C (t : set β), t D μν (s ×ˢ t) = μ s * ν t) :
μ.prod ν = μν

A measure on a product space equals the product measure if they are equal on rectangles with as sides sets that generate the corresponding σ-algebras.

theorem measure_theory.measure.prod_eq {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] {μν : measure_theory.measure × β)} (h : (s : set α) (t : set β), measurable_set s measurable_set t μν (s ×ˢ t) = μ s * ν t) :
μ.prod ν = μν

A measure on a product space equals the product measure if they are equal on rectangles.

theorem measure_theory.measure.prod_apply_symm {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] {s : set × β)} (hs : measurable_set s) :
(μ.prod ν) s = ∫⁻ (y : β), μ ((λ (x : α), (x, y)) ⁻¹' s) ν

The product of specific measures #

@[simp]
theorem measure_theory.measure.zero_prod {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] (ν : measure_theory.measure β) :
0.prod ν = 0
@[simp]
theorem measure_theory.measure.prod_zero {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] (μ : measure_theory.measure α) :
μ.prod 0 = 0
theorem measure_theory.measure_preserving.skew_product {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {δ : Type u_7} [measurable_space δ] {μa : measure_theory.measure α} {μb : measure_theory.measure β} {μc : measure_theory.measure γ} {μd : measure_theory.measure δ} [measure_theory.sigma_finite μb] [measure_theory.sigma_finite μd] {f : α β} (hf : measure_theory.measure_preserving f μa μb) {g : α γ δ} (hgm : measurable (function.uncurry g)) (hg : ∀ᵐ (x : α) μa, measure_theory.measure.map (g x) μc = μd) :
measure_theory.measure_preserving (λ (p : α × γ), (f p.fst, g p.fst p.snd)) (μa.prod μc) (μb.prod μd)
@[protected]

If f : α → β sends the measure μa to μb and g : γ → δ sends the measure μc to μd, then prod.map f g sends μa.prod μc to μb.prod μd.

theorem ae_measurable.prod_swap {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite μ] [measure_theory.sigma_finite ν] {f : β × α γ} (hf : ae_measurable f (ν.prod μ)) :
ae_measurable (λ (z : α × β), f z.swap) (μ.prod ν)
theorem ae_measurable.fst {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {f : α γ} (hf : ae_measurable f μ) :
ae_measurable (λ (z : α × β), f z.fst) (μ.prod ν)
theorem ae_measurable.snd {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {f : β γ} (hf : ae_measurable f ν) :
ae_measurable (λ (z : α × β), f z.snd) (μ.prod ν)

The Lebesgue integral on a product #

theorem measure_theory.lintegral_prod_swap {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] (f : α × β ennreal) (hf : ae_measurable f (μ.prod ν)) :
∫⁻ (z : β × α), f z.swap ν.prod μ = ∫⁻ (z : α × β), f z μ.prod ν
theorem measure_theory.lintegral_prod_of_measurable {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] (f : α × β ennreal) (hf : measurable f) :
∫⁻ (z : α × β), f z μ.prod ν = ∫⁻ (x : α), ∫⁻ (y : β), f (x, y) ν μ

Tonelli's Theorem: For ℝ≥0∞-valued measurable functions on α × β, the integral of f is equal to the iterated integral.

theorem measure_theory.lintegral_prod {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] (f : α × β ennreal) (hf : ae_measurable f (μ.prod ν)) :
∫⁻ (z : α × β), f z μ.prod ν = ∫⁻ (x : α), ∫⁻ (y : β), f (x, y) ν μ

Tonelli's Theorem: For ℝ≥0∞-valued almost everywhere measurable functions on α × β, the integral of f is equal to the iterated integral.

theorem measure_theory.lintegral_prod_symm {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] (f : α × β ennreal) (hf : ae_measurable f (μ.prod ν)) :
∫⁻ (z : α × β), f z μ.prod ν = ∫⁻ (y : β), ∫⁻ (x : α), f (x, y) μ ν

The symmetric verion of Tonelli's Theorem: For ℝ≥0∞-valued almost everywhere measurable functions on α × β, the integral of f is equal to the iterated integral, in reverse order.

theorem measure_theory.lintegral_prod_symm' {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] (f : α × β ennreal) (hf : measurable f) :
∫⁻ (z : α × β), f z μ.prod ν = ∫⁻ (y : β), ∫⁻ (x : α), f (x, y) μ ν

The symmetric verion of Tonelli's Theorem: For ℝ≥0∞-valued measurable functions on α × β, the integral of f is equal to the iterated integral, in reverse order.

theorem measure_theory.lintegral_lintegral {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] ⦃f : α β ennreal (hf : ae_measurable (function.uncurry f) (μ.prod ν)) :
∫⁻ (x : α), ∫⁻ (y : β), f x y ν μ = ∫⁻ (z : α × β), f z.fst z.snd μ.prod ν

The reversed version of Tonelli's Theorem. In this version f is in curried form, which makes it easier for the elaborator to figure out f automatically.

theorem measure_theory.lintegral_lintegral_symm {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] ⦃f : α β ennreal (hf : ae_measurable (function.uncurry f) (μ.prod ν)) :
∫⁻ (x : α), ∫⁻ (y : β), f x y ν μ = ∫⁻ (z : β × α), f z.snd z.fst ν.prod μ

The reversed version of Tonelli's Theorem (symmetric version). In this version f is in curried form, which makes it easier for the elaborator to figure out f automatically.

theorem measure_theory.lintegral_lintegral_swap {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] [measure_theory.sigma_finite μ] ⦃f : α β ennreal (hf : ae_measurable (function.uncurry f) (μ.prod ν)) :
∫⁻ (x : α), ∫⁻ (y : β), f x y ν μ = ∫⁻ (y : β), ∫⁻ (x : α), f x y μ ν

Change the order of Lebesgue integration.

theorem measure_theory.lintegral_prod_mul {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {μ : measure_theory.measure α} {ν : measure_theory.measure β} [measure_theory.sigma_finite ν] {f : α ennreal} {g : β ennreal} (hf : ae_measurable f μ) (hg : ae_measurable g ν) :
∫⁻ (z : α × β), f z.fst * g z.snd μ.prod ν = ∫⁻ (x : α), f x μ * ∫⁻ (y : β), g y ν

Marginals of a measure defined on a product #

noncomputable def measure_theory.measure.fst {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] (ρ : measure_theory.measure × β)) :

Marginal measure on α obtained from a measure ρ on α × β, defined by ρ.map prod.fst.

Equations
Instances for measure_theory.measure.fst
theorem measure_theory.measure.fst_apply {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ρ : measure_theory.measure × β)} {s : set α} (hs : measurable_set s) :
(ρ.fst) s = ρ (prod.fst ⁻¹' s)
theorem measure_theory.measure.fst_map_prod_mk₀ {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {X : α β} {Y : α γ} {μ : measure_theory.measure α} (hX : ae_measurable X μ) (hY : ae_measurable Y μ) :
(measure_theory.measure.map (λ (a : α), (X a, Y a)) μ).fst = measure_theory.measure.map X μ
theorem measure_theory.measure.fst_map_prod_mk {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {X : α β} {Y : α γ} {μ : measure_theory.measure α} (hX : measurable X) (hY : measurable Y) :
(measure_theory.measure.map (λ (a : α), (X a, Y a)) μ).fst = measure_theory.measure.map X μ
noncomputable def measure_theory.measure.snd {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] (ρ : measure_theory.measure × β)) :

Marginal measure on β obtained from a measure on ρ α × β, defined by ρ.map prod.snd.

Equations
Instances for measure_theory.measure.snd
theorem measure_theory.measure.snd_apply {α : Type u_1} {β : Type u_3} [measurable_space α] [measurable_space β] {ρ : measure_theory.measure × β)} {s : set β} (hs : measurable_set s) :
(ρ.snd) s = ρ (prod.snd ⁻¹' s)
theorem measure_theory.measure.snd_map_prod_mk₀ {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {X : α β} {Y : α γ} {μ : measure_theory.measure α} (hX : ae_measurable X μ) (hY : ae_measurable Y μ) :
(measure_theory.measure.map (λ (a : α), (X a, Y a)) μ).snd = measure_theory.measure.map Y μ
theorem measure_theory.measure.snd_map_prod_mk {α : Type u_1} {β : Type u_3} {γ : Type u_5} [measurable_space α] [measurable_space β] [measurable_space γ] {X : α β} {Y : α γ} {μ : measure_theory.measure α} (hX : measurable X) (hY : measurable Y) :
(measure_theory.measure.map (λ (a : α), (X a, Y a)) μ).snd = measure_theory.measure.map Y μ