Lebesgue integral for ℝ≥0∞
-valued functions #
We define simple functions and show that each Borel measurable function on ℝ≥0∞
can be
approximated by a sequence of simple functions.
To prove something for an arbitrary measurable function into ℝ≥0∞
, the theorem
measurable.ennreal_induction
shows that is it sufficient to show that the property holds for
(multiples of) characteristic functions and is closed under addition and supremum of increasing
sequences of functions.
Notation #
We introduce the following notation for the lower Lebesgue integral of a function f : α → ℝ≥0∞
.
∫⁻ x, f x ∂μ
: integral of a functionf : α → ℝ≥0∞
with respect to a measureμ
;∫⁻ x, f x
: integral of a functionf : α → ℝ≥0∞
with respect to the canonical measurevolume
onα
;∫⁻ x in s, f x ∂μ
: integral of a functionf : α → ℝ≥0∞
over a sets
with respect to a measureμ
, defined as∫⁻ x, f x ∂(μ.restrict s)
;∫⁻ x in s, f x
: integral of a functionf : α → ℝ≥0∞
over a sets
with respect to the canonical measurevolume
, defined as∫⁻ x, f x ∂(volume.restrict s)
.
- to_fun : α → β
- measurable_set_fiber' : ∀ (x : β), measurable_set (c.to_fun ⁻¹' {x})
- finite_range' : (set.range c.to_fun).finite
A function f
from a measurable space to any type is called simple,
if every preimage f ⁻¹' {x}
is measurable, and the range is finite. This structure bundles
a function with these properties.
Equations
- measure_theory.simple_func.has_coe_to_fun = {F := λ (x : measure_theory.simple_func α β), α → β, coe := measure_theory.simple_func.to_fun β}
Range of a simple function α →ₛ β
as a finset β
.
Constant function as a simple_func
.
Equations
- measure_theory.simple_func.const α b = {to_fun := λ (a : α), b, measurable_set_fiber' := _, finite_range' := _}
Equations
A simple function is measurable
If-then-else as a simple_func
.
Equations
- measure_theory.simple_func.piecewise s hs f g = {to_fun := s.piecewise ⇑f ⇑g (λ (j : α), s.decidable_mem j), measurable_set_fiber' := _, finite_range' := _}
If f : α →ₛ β
is a simple function and g : β → α →ₛ γ
is a family of simple functions,
then f.bind g
binds the first argument of g
to f
. In other words, f.bind g a = g (f a) a
.
Equations
- f.bind g = {to_fun := λ (a : α), ⇑(g (⇑f a)) a, measurable_set_fiber' := _, finite_range' := _}
Given a function g : β → γ
and a simple function f : α →ₛ β
, f.map g
return the simple
function g ∘ f : α →ₛ γ
Equations
Composition of a simple_fun
and a measurable function is a simple_func
.
Equations
- f.comp g hgm = {to_fun := ⇑f ∘ g, measurable_set_fiber' := _, finite_range' := _}
If f
is a simple function taking values in β → γ
and g
is another simple function
with the same domain and codomain β
, then f.seq g = f a (g a)
.
Equations
- f.seq g = f.bind (λ (f : β → γ), measure_theory.simple_func.map f g)
Combine two simple functions f : α →ₛ β
and g : α →ₛ β
into λ a, (f a, g a)
.
Equations
- f.pair g = (measure_theory.simple_func.map prod.mk f).seq g
Equations
Equations
- measure_theory.simple_func.has_add = {add := λ (f g : measure_theory.simple_func α β), (measure_theory.simple_func.map has_add.add f).seq g}
Equations
- measure_theory.simple_func.has_mul = {mul := λ (f g : measure_theory.simple_func α β), (measure_theory.simple_func.map has_mul.mul f).seq g}
Equations
- measure_theory.simple_func.has_sup = {sup := λ (f g : measure_theory.simple_func α β), (measure_theory.simple_func.map has_sup.sup f).seq g}
Equations
- measure_theory.simple_func.has_inf = {inf := λ (f g : measure_theory.simple_func α β), (measure_theory.simple_func.map has_inf.inf f).seq g}
Equations
- measure_theory.simple_func.has_le = {le := λ (f g : measure_theory.simple_func α β), ∀ (a : α), ⇑f a ≤ ⇑g a}
Equations
- measure_theory.simple_func.add_monoid = function.injective.add_monoid (λ (f : measure_theory.simple_func α β), show α → β, from ⇑f) measure_theory.simple_func.coe_injective measure_theory.simple_func.add_monoid._proof_1 measure_theory.simple_func.add_monoid._proof_2
Equations
- measure_theory.simple_func.add_comm_monoid = function.injective.add_comm_monoid (λ (f : measure_theory.simple_func α β), show α → β, from ⇑f) measure_theory.simple_func.coe_injective measure_theory.simple_func.add_comm_monoid._proof_1 measure_theory.simple_func.add_comm_monoid._proof_2
Equations
Equations
- measure_theory.simple_func.has_sub = {sub := λ (f g : measure_theory.simple_func α β), (measure_theory.simple_func.map has_sub.sub f).seq g}
Equations
- measure_theory.simple_func.add_group = function.injective.add_group (λ (f : measure_theory.simple_func α β), show α → β, from ⇑f) measure_theory.simple_func.coe_injective measure_theory.simple_func.add_group._proof_1 measure_theory.simple_func.add_group._proof_2 measure_theory.simple_func.add_group._proof_3 measure_theory.simple_func.add_group._proof_4
Equations
- measure_theory.simple_func.add_comm_group = function.injective.add_comm_group (λ (f : measure_theory.simple_func α β), show α → β, from ⇑f) measure_theory.simple_func.coe_injective measure_theory.simple_func.add_comm_group._proof_1 measure_theory.simple_func.add_comm_group._proof_2 measure_theory.simple_func.add_comm_group._proof_3 measure_theory.simple_func.add_comm_group._proof_4
Equations
- measure_theory.simple_func.has_scalar = {smul := λ (k : K) (f : measure_theory.simple_func α β), measure_theory.simple_func.map (has_scalar.smul k) f}
Equations
- measure_theory.simple_func.module = function.injective.module K {to_fun := λ (f : measure_theory.simple_func α β), show α → β, from ⇑f, map_zero' := _, map_add' := _} measure_theory.simple_func.coe_injective measure_theory.simple_func.module._proof_3
Equations
- measure_theory.simple_func.preorder = {le := has_le.le measure_theory.simple_func.has_le, lt := λ (a b : measure_theory.simple_func α β), a ≤ b ∧ ¬b ≤ a, le_refl := _, le_trans := _, lt_iff_le_not_le := _}
Equations
Equations
Equations
Equations
- measure_theory.simple_func.semilattice_inf = {inf := has_inf.inf measure_theory.simple_func.has_inf, le := partial_order.le measure_theory.simple_func.partial_order, lt := partial_order.lt measure_theory.simple_func.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, inf_le_left := _, inf_le_right := _, le_inf := _}
Equations
- measure_theory.simple_func.semilattice_sup = {sup := has_sup.sup measure_theory.simple_func.has_sup, le := partial_order.le measure_theory.simple_func.partial_order, lt := partial_order.lt measure_theory.simple_func.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _}
Equations
- measure_theory.simple_func.semilattice_sup_bot = {bot := order_bot.bot measure_theory.simple_func.order_bot, le := semilattice_sup.le measure_theory.simple_func.semilattice_sup, lt := semilattice_sup.lt measure_theory.simple_func.semilattice_sup, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, bot_le := _, sup := semilattice_sup.sup measure_theory.simple_func.semilattice_sup, le_sup_left := _, le_sup_right := _, sup_le := _}
Equations
- measure_theory.simple_func.lattice = {sup := semilattice_sup.sup measure_theory.simple_func.semilattice_sup, le := semilattice_sup.le measure_theory.simple_func.semilattice_sup, lt := semilattice_sup.lt measure_theory.simple_func.semilattice_sup, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := semilattice_inf.inf measure_theory.simple_func.semilattice_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
Equations
- measure_theory.simple_func.bounded_lattice = {sup := lattice.sup measure_theory.simple_func.lattice, le := lattice.le measure_theory.simple_func.lattice, lt := lattice.lt measure_theory.simple_func.lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := lattice.inf measure_theory.simple_func.lattice, inf_le_left := _, inf_le_right := _, le_inf := _, top := order_top.top measure_theory.simple_func.order_top, le_top := _, bot := order_bot.bot measure_theory.simple_func.order_bot, bot_le := _}
Restrict a simple function f : α →ₛ β
to a set s
. If s
is measurable,
then f.restrict s a = if a ∈ s then f a else 0
, otherwise f.restrict s = const α 0
.
Equations
- f.restrict s = dite (measurable_set s) (λ (hs : measurable_set s), measure_theory.simple_func.piecewise s hs f 0) (λ (hs : ¬measurable_set s), 0)
Fix a sequence i : ℕ → β
. Given a function α → β
, its n
-th approximation
by simple functions is defined so that in case β = ℝ≥0∞
it sends each a
to the supremum
of the set {i k | k ≤ n ∧ i k ≤ f a}
, see approx_apply
and supr_approx_apply
for details.
Equations
- measure_theory.simple_func.approx i f n = (finset.range n).sup (λ (k : ℕ), (measure_theory.simple_func.const α (i k)).restrict {a : α | i k ≤ f a})
A sequence of ℝ≥0∞
s such that its range is the set of non-negative rational numbers.
Equations
Approximate a function α → ℝ≥0∞
by a sequence of simple functions.
Integral of a simple function whose codomain is ℝ≥0∞
.
Calculate the integral of (g ∘ f)
, where g : β → ℝ≥0∞
and f : α →ₛ β
.
Integral of a simple function α →ₛ ℝ≥0∞
as a bilinear map.
simple_func.lintegral
is monotone both in function and in measure.
simple_func.lintegral
depends only on the measures of f ⁻¹' {y}
.
If two simple functions are equal a.e., then their lintegral
s are equal.
The lintegral
of simple functions transforms appropriately under a measurable equivalence.
(Compare lintegral_map
, which applies to a broader class of transformations of the domain, but
requires measurability of the function being integrated.)
A simple_func
has finite measure support if it is equal to 0
outside of a set of finite
measure.
To prove something for an arbitrary simple function, it suffices to show that the property holds for (multiples of) characteristic functions and is closed under addition (of functions with disjoint support).
It is possible to make the hypotheses in h_add
a bit stronger, and such conditions can be added
once we need them (for example it is only necessary to consider the case where g
is a multiple
of a characteristic function, and that this multiple doesn't appear in the image of f
)
The lower Lebesgue integral of a function f
with respect to a measure μ
.
Equations
- measure_theory.lintegral μ f = ⨆ (g : measure_theory.simple_func α ℝ≥0∞) (hf : ⇑g ≤ f), g.lintegral μ
In the notation for integrals, an expression like ∫⁻ x, g ∥x∥ ∂μ
will not be parsed correctly,
and needs parentheses. We do not set the binding power of r
to 0
, because then
∫⁻ x, f x = 0
will be parsed incorrectly.
∫⁻ a in s, f a ∂μ
is defined as the supremum of integrals of simple functions
φ : α →ₛ ℝ≥0∞
such that φ ≤ f
. This lemma says that it suffices to take
functions φ : α →ₛ ℝ≥0
.
Monotone convergence theorem -- sometimes called Beppo-Levi convergence.
See lintegral_supr_directed
for a more general form.
Monotone convergence theorem -- sometimes called Beppo-Levi convergence. Version with ae_measurable functions.
If f
has finite integral, then ∫⁻ x in s, f x ∂μ
is absolutely continuous in s
: it tends
to zero as μ s
tends to zero. This lemma states states this fact in terms of ε
and δ
.
If f
has finite integral, then ∫⁻ x in s, f x ∂μ
is absolutely continuous in s
: it tends
to zero as μ s
tends to zero.
Chebyshev's inequality
Weaker version of the monotone convergence theorem
Monotone convergence theorem for nonincreasing sequences of functions
Monotone convergence theorem for nonincreasing sequences of functions
Known as Fatou's lemma, version with ae_measurable
functions
Known as Fatou's lemma
Dominated convergence theorem for nonnegative functions
Dominated convergence theorem for nonnegative functions which are just almost everywhere measurable.
Dominated convergence theorem for filters with a countable basis
Monotone convergence for a suprema over a directed family and indexed by an encodable type
The lintegral
transforms appropriately under a measurable equivalence g : α ≃ᵐ β
.
(Compare lintegral_map
, which applies to a wider class of functions g : α → β
, but requires
measurability of the function being integrated.)
Given a measure μ : measure α
and a function f : α → ℝ≥0∞
, μ.with_density f
is the
measure such that for a measurable set s
we have μ.with_density f s = ∫⁻ a in s, f a ∂μ
.
Equations
- μ.with_density f = measure_theory.measure.of_measurable (λ (s : set α) (hs : measurable_set s), ∫⁻ (a : α) in s, f a ∂μ) _ _
To prove something for an arbitrary measurable function into ℝ≥0∞
, it suffices to show
that the property holds for (multiples of) characteristic functions and is closed under addition
and supremum of increasing sequences of functions.
It is possible to make the hypotheses in the induction steps a bit stronger, and such conditions
can be added once we need them (for example in h_add
it is only necessary to consider the sum of
a simple function with a multiple of a characteristic function and that the intersection
of their images is a subset of {0}
.
This is Exercise 1.2.1 from [Tao10]. It allows you to express integration of a measurable
function with respect to (μ.with_density f)
as an integral with respect to μ
, called the base
measure. μ
is often the Lebesgue measure, and in this circumstance f
is the probability density
function, and (μ.with_density f)
represents any continuous random variable as a
probability measure, such as the uniform distribution between 0 and 1, the Gaussian distribution,
the exponential distribution, the Beta distribution, or the Cauchy distribution (see Section 2.4
of [wasserman2004]). Thus, this method shows how to one can calculate expectations, variances,
and other moments as a function of the probability density function.