Almost everywhere equal functions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We build a space of equivalence classes of functions, where two functions are treated as identical
if they are almost everywhere equal. We form the set of equivalence classes under the relation of
being almost everywhere equal, which is sometimes known as the L⁰
space.
To use this space as a basis for the L^p
spaces and for the Bochner integral, we consider
equivalence classes of strongly measurable functions (or, equivalently, of almost everywhere
strongly measurable functions.)
See l1_space.lean
for L¹
space.
Notation #
-
α →ₘ[μ] β
is the type ofL⁰
space, whereα
is a measurable space,β
is a topological space, andμ
is a measure onα
.f : α →ₘ β
is a "function" inL⁰
. In comments,[f]
is also used to denote anL⁰
function.ₘ
can be typed as\_m
. Sometimes it is shown as a box if font is missing.
Main statements #
-
The linear structure of
L⁰
: Addition and scalar multiplication are defined onL⁰
in the natural way, i.e.,[f] + [g] := [f + g]
,c • [f] := [c • f]
. So defined,α →ₘ β
inherits the linear structure ofβ
. For example, ifβ
is a module, thenα →ₘ β
is a module over the same ring.See
mk_add_mk
,neg_mk
,mk_sub_mk
,smul_mk
,add_to_fun
,neg_to_fun
,sub_to_fun
,smul_to_fun
-
The order structure of
L⁰
:≤
can be defined in a similar way:[f] ≤ [g]
iff a ≤ g a
for almost alla
in domain. Andα →ₘ β
inherits the preorder and partial order ofβ
.TODO: Define
sup
andinf
onL⁰
so that it forms a lattice. It seems thatβ
must be a linear order, since otherwisef ⊔ g
may not be a measurable function.
Implementation notes #
f.to_fun
: To find a representative off : α →ₘ β
, use the coercion(f : α → β)
, which is implemented asf.to_fun
. For each operationop
inL⁰
, there is a lemma calledcoe_fn_op
, characterizing, say,(f op g : α → β)
.ae_eq_fun.mk
: To constructs anL⁰
functionα →ₘ β
from an almost everywhere strongly measurable functionf : α → β
, useae_eq_fun.mk
comp
: Usecomp g f
to get[g ∘ f]
fromg : β → γ
and[f] : α →ₘ γ
wheng
is continuous. Usecomp_measurable
ifg
is only measurable (this requires the target space to be second countable).comp₂
: Usecomp₂ g f₁ f₂ to get
[λ a, g (f₁ a) (f₂ a)]. For example,
[f + g]is
comp₂ (+)`
Tags #
function space, almost everywhere equal, L⁰
, ae_eq_fun
The equivalence relation of being almost everywhere equal for almost everywhere strongly measurable functions.
Equations
- measure_theory.measure.ae_eq_setoid β μ = {r := λ (f g : {f // measure_theory.ae_strongly_measurable f μ}), ↑f =ᵐ[μ] ↑g, iseqv := _}
The space of equivalence classes of almost everywhere strongly measurable functions, where two
strongly measurable functions are equivalent if they agree almost everywhere, i.e.,
they differ on a set of measure 0
.
Equations
- (α →ₘ[μ] β) = quotient (measure_theory.measure.ae_eq_setoid β μ)
Instances for measure_theory.ae_eq_fun
- measure_theory.ae_eq_fun.has_coe_to_fun
- measure_theory.ae_eq_fun.preorder
- measure_theory.ae_eq_fun.partial_order
- measure_theory.ae_eq_fun.has_sup
- measure_theory.ae_eq_fun.has_inf
- measure_theory.ae_eq_fun.lattice
- measure_theory.ae_eq_fun.inhabited
- measure_theory.ae_eq_fun.has_one
- measure_theory.ae_eq_fun.has_zero
- measure_theory.ae_eq_fun.has_smul
- measure_theory.ae_eq_fun.smul_comm_class
- measure_theory.ae_eq_fun.is_scalar_tower
- measure_theory.ae_eq_fun.is_central_scalar
- measure_theory.ae_eq_fun.has_mul
- measure_theory.ae_eq_fun.has_add
- measure_theory.ae_eq_fun.add_monoid
- measure_theory.ae_eq_fun.add_comm_monoid
- measure_theory.ae_eq_fun.nat.has_pow
- measure_theory.ae_eq_fun.monoid
- measure_theory.ae_eq_fun.comm_monoid
- measure_theory.ae_eq_fun.has_inv
- measure_theory.ae_eq_fun.has_neg
- measure_theory.ae_eq_fun.has_div
- measure_theory.ae_eq_fun.has_sub
- measure_theory.ae_eq_fun.has_int_pow
- measure_theory.ae_eq_fun.add_group
- measure_theory.ae_eq_fun.add_comm_group
- measure_theory.ae_eq_fun.group
- measure_theory.ae_eq_fun.comm_group
- measure_theory.ae_eq_fun.mul_action
- measure_theory.ae_eq_fun.distrib_mul_action
- measure_theory.ae_eq_fun.module
Construct the equivalence class [f]
of an almost everywhere measurable function f
, based
on the equivalence relation of being almost everywhere equal.
Equations
- measure_theory.ae_eq_fun.mk f hf = quotient.mk' ⟨f, hf⟩
A measurable representative of an ae_eq_fun
[f]
Equations
- measure_theory.ae_eq_fun.has_coe_to_fun = {coe := λ (f : α →ₘ[μ] β), measure_theory.ae_strongly_measurable.mk (quotient.out' f).val _}
Given a continuous function g : β → γ
, and an almost everywhere equal function [f] : α →ₘ β
,
return the equivalence class of g ∘ f
, i.e., the almost everywhere equal function
[g ∘ f] : α →ₘ γ
.
Equations
- measure_theory.ae_eq_fun.comp g hg f = quotient.lift_on' f (λ (f : {f // measure_theory.ae_strongly_measurable f μ}), measure_theory.ae_eq_fun.mk (g ∘ ↑f) _) _
Given a measurable function g : β → γ
, and an almost everywhere equal function [f] : α →ₘ β
,
return the equivalence class of g ∘ f
, i.e., the almost everywhere equal function
[g ∘ f] : α →ₘ γ
. This requires that γ
has a second countable topology.
Equations
- measure_theory.ae_eq_fun.comp_measurable g hg f = quotient.lift_on' f (λ (f' : {f // measure_theory.ae_strongly_measurable f μ}), measure_theory.ae_eq_fun.mk (g ∘ ↑f') _) _
The class of x ↦ (f x, g x)
.
Equations
- f.pair g = quotient.lift_on₂' f g (λ (f : {f // measure_theory.ae_strongly_measurable f μ}) (g : {f // measure_theory.ae_strongly_measurable f μ}), measure_theory.ae_eq_fun.mk (λ (x : α), (f.val x, g.val x)) _) measure_theory.ae_eq_fun.pair._proof_2
Given a continuous function g : β → γ → δ
, and almost everywhere equal functions
[f₁] : α →ₘ β
and [f₂] : α →ₘ γ
, return the equivalence class of the function
λ a, g (f₁ a) (f₂ a)
, i.e., the almost everywhere equal function
[λ a, g (f₁ a) (f₂ a)] : α →ₘ γ
Equations
- measure_theory.ae_eq_fun.comp₂ g hg f₁ f₂ = measure_theory.ae_eq_fun.comp (function.uncurry g) hg (f₁.pair f₂)
Given a measurable function g : β → γ → δ
, and almost everywhere equal functions
[f₁] : α →ₘ β
and [f₂] : α →ₘ γ
, return the equivalence class of the function
λ a, g (f₁ a) (f₂ a)
, i.e., the almost everywhere equal function
[λ a, g (f₁ a) (f₂ a)] : α →ₘ γ
. This requires δ
to have second-countable topology.
Equations
- measure_theory.ae_eq_fun.comp₂_measurable g hg f₁ f₂ = measure_theory.ae_eq_fun.comp_measurable (function.uncurry g) hg (f₁.pair f₂)
Interpret f : α →ₘ[μ] β
as a germ at μ.ae
forgetting that f
is almost everywhere
strongly measurable.
Equations
- f.to_germ = quotient.lift_on' f (λ (f : {f // measure_theory.ae_strongly_measurable f μ}), ↑↑f) measure_theory.ae_eq_fun.to_germ._proof_1
Given a predicate p
and an equivalence class [f]
, return true if p
holds of f a
for almost all a
Equations
Given a relation r
and equivalence class [f]
and [g]
, return true if r
holds of
(f a, g a)
for almost all a
Equations
Equations
- measure_theory.ae_eq_fun.has_sup = {sup := λ (f g : α →ₘ[μ] β), measure_theory.ae_eq_fun.comp₂ has_sup.sup measure_theory.ae_eq_fun.has_sup._proof_1 f g}
Equations
- measure_theory.ae_eq_fun.has_inf = {inf := λ (f g : α →ₘ[μ] β), measure_theory.ae_eq_fun.comp₂ has_inf.inf measure_theory.ae_eq_fun.has_inf._proof_1 f g}
Equations
- measure_theory.ae_eq_fun.lattice = {sup := has_sup.sup measure_theory.ae_eq_fun.has_sup, le := partial_order.le measure_theory.ae_eq_fun.partial_order, lt := partial_order.lt measure_theory.ae_eq_fun.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf measure_theory.ae_eq_fun.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
The equivalence class of a constant function: [λ a:α, b]
, based on the equivalence relation of
being almost everywhere equal
Equations
Equations
Equations
Equations
- measure_theory.ae_eq_fun.has_smul = {smul := λ (c : 𝕜) (f : α →ₘ[μ] γ), measure_theory.ae_eq_fun.comp (has_smul.smul c) _ f}
Equations
- measure_theory.ae_eq_fun.add_monoid = function.injective.add_monoid measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.add_monoid._proof_1 measure_theory.ae_eq_fun.add_monoid._proof_2 measure_theory.ae_eq_fun.add_monoid._proof_3
Equations
- measure_theory.ae_eq_fun.add_comm_monoid = function.injective.add_comm_monoid measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.add_comm_monoid._proof_2 measure_theory.ae_eq_fun.add_comm_monoid._proof_3 measure_theory.ae_eq_fun.add_comm_monoid._proof_4
Equations
- measure_theory.ae_eq_fun.nat.has_pow = {pow := λ (f : α →ₘ[μ] γ) (n : ℕ), measure_theory.ae_eq_fun.comp (λ (a : γ), a ^ n) _ f}
Equations
- measure_theory.ae_eq_fun.monoid = function.injective.monoid measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.monoid._proof_1 measure_theory.ae_eq_fun.monoid._proof_2 measure_theory.ae_eq_fun.pow_to_germ
ae_eq_fun.to_germ
as a monoid_hom
.
Equations
- measure_theory.ae_eq_fun.to_germ_monoid_hom = {to_fun := measure_theory.ae_eq_fun.to_germ _inst_3, map_one' := _, map_mul' := _}
ae_eq_fun.to_germ
as an add_monoid_hom
.
Equations
- measure_theory.ae_eq_fun.to_germ_add_monoid_hom = {to_fun := measure_theory.ae_eq_fun.to_germ _inst_3, map_zero' := _, map_add' := _}
Equations
- measure_theory.ae_eq_fun.comm_monoid = function.injective.comm_monoid measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.comm_monoid._proof_1 measure_theory.ae_eq_fun.comm_monoid._proof_2 measure_theory.ae_eq_fun.comm_monoid._proof_3
Equations
- measure_theory.ae_eq_fun.has_neg = {neg := measure_theory.ae_eq_fun.comp has_neg.neg measure_theory.ae_eq_fun.has_neg._proof_1}
Equations
- measure_theory.ae_eq_fun.has_inv = {inv := measure_theory.ae_eq_fun.comp has_inv.inv measure_theory.ae_eq_fun.has_inv._proof_1}
Equations
- measure_theory.ae_eq_fun.has_sub = {sub := measure_theory.ae_eq_fun.comp₂ has_sub.sub measure_theory.ae_eq_fun.has_sub._proof_1}
Equations
- measure_theory.ae_eq_fun.has_div = {div := measure_theory.ae_eq_fun.comp₂ has_div.div measure_theory.ae_eq_fun.has_div._proof_1}
Equations
- measure_theory.ae_eq_fun.has_int_pow = {pow := λ (f : α →ₘ[μ] γ) (n : ℤ), measure_theory.ae_eq_fun.comp (λ (a : γ), a ^ n) _ f}
Equations
- measure_theory.ae_eq_fun.add_group = function.injective.add_group measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.add_group._proof_2 measure_theory.ae_eq_fun.add_group._proof_3 measure_theory.ae_eq_fun.neg_to_germ measure_theory.ae_eq_fun.sub_to_germ measure_theory.ae_eq_fun.add_group._proof_4 measure_theory.ae_eq_fun.add_group._proof_5
Equations
- measure_theory.ae_eq_fun.add_comm_group = function.injective.add_comm_group measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.add_comm_group._proof_4 measure_theory.ae_eq_fun.add_comm_group._proof_5 measure_theory.ae_eq_fun.add_comm_group._proof_6 measure_theory.ae_eq_fun.add_comm_group._proof_7 measure_theory.ae_eq_fun.add_comm_group._proof_8 measure_theory.ae_eq_fun.add_comm_group._proof_9
Equations
- measure_theory.ae_eq_fun.group = function.injective.group measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.group._proof_1 measure_theory.ae_eq_fun.group._proof_2 measure_theory.ae_eq_fun.inv_to_germ measure_theory.ae_eq_fun.div_to_germ measure_theory.ae_eq_fun.group._proof_3 measure_theory.ae_eq_fun.zpow_to_germ
Equations
- measure_theory.ae_eq_fun.comm_group = function.injective.comm_group measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.comm_group._proof_3 measure_theory.ae_eq_fun.comm_group._proof_4 measure_theory.ae_eq_fun.comm_group._proof_5 measure_theory.ae_eq_fun.comm_group._proof_6 measure_theory.ae_eq_fun.comm_group._proof_7 measure_theory.ae_eq_fun.comm_group._proof_8
Equations
- measure_theory.ae_eq_fun.mul_action = function.injective.mul_action measure_theory.ae_eq_fun.to_germ measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.mul_action._proof_1
Equations
- measure_theory.ae_eq_fun.distrib_mul_action = function.injective.distrib_mul_action measure_theory.ae_eq_fun.to_germ_add_monoid_hom measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.distrib_mul_action._proof_1
Equations
- measure_theory.ae_eq_fun.module = function.injective.module 𝕜 measure_theory.ae_eq_fun.to_germ_add_monoid_hom measure_theory.ae_eq_fun.to_germ_injective measure_theory.ae_eq_fun.module._proof_1
For f : α → ℝ≥0∞
, define ∫ [f]
to be ∫ f
Equations
- f.lintegral = quotient.lift_on' f (λ (f : {f // measure_theory.ae_strongly_measurable f μ}), ∫⁻ (a : α), ↑f a ∂μ) measure_theory.ae_eq_fun.lintegral._proof_1
Positive part of an ae_eq_fun
.
Equations
- f.pos_part = measure_theory.ae_eq_fun.comp (λ (x : γ), linear_order.max x 0) measure_theory.ae_eq_fun.pos_part._proof_1 f
The equivalence class of μ
-almost-everywhere measurable functions associated to a continuous
map.
Equations
The add_hom
from the group of continuous maps from α
to β
to the group of
equivalence classes of μ
-almost-everywhere measurable functions.
Equations
- continuous_map.to_ae_eq_fun_add_hom μ = {to_fun := continuous_map.to_ae_eq_fun μ _inst_6, map_zero' := _, map_add' := _}
The mul_hom
from the group of continuous maps from α
to β
to the group of equivalence
classes of μ
-almost-everywhere measurable functions.
Equations
- continuous_map.to_ae_eq_fun_mul_hom μ = {to_fun := continuous_map.to_ae_eq_fun μ _inst_6, map_one' := _, map_mul' := _}
The linear map from the group of continuous maps from α
to β
to the group of equivalence
classes of μ
-almost-everywhere measurable functions.
Equations
- continuous_map.to_ae_eq_fun_linear_map μ = {to_fun := (continuous_map.to_ae_eq_fun_add_hom μ).to_fun, map_add' := _, map_smul' := _}