Almost everywhere equal functions #
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 L1Space.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_toFun
,neg_toFun
,sub_toFun
,smul_toFun
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.toFun
: To find a representative off : α →ₘ β
, use the coercion(f : α → β)
, which is implemented asf.toFun
. 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[fun a ↦ g (f₁ a) (f₂ a)]
. For example,[f + g]
iscomp₂ (+)
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
- MeasureTheory.Measure.aeEqSetoid β μ = { r := fun (f g : { f : α → β // MeasureTheory.AEStronglyMeasurable 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 (MeasureTheory.Measure.aeEqSetoid β μ)
Instances For
- MeasureTheory.AEEqFun.instAdd
- MeasureTheory.AEEqFun.instAddCommGroup
- MeasureTheory.AEEqFun.instAddCommMonoid
- MeasureTheory.AEEqFun.instAddGroup
- MeasureTheory.AEEqFun.instAddMonoid
- MeasureTheory.AEEqFun.instCoeFun
- MeasureTheory.AEEqFun.instCommGroup
- MeasureTheory.AEEqFun.instCommMonoid
- MeasureTheory.AEEqFun.instDistribMulAction
- MeasureTheory.AEEqFun.instDiv
- MeasureTheory.AEEqFun.instGroup
- MeasureTheory.AEEqFun.instInf
- MeasureTheory.AEEqFun.instInhabited
- MeasureTheory.AEEqFun.instInv
- MeasureTheory.AEEqFun.instIsCentralScalar
- MeasureTheory.AEEqFun.instIsScalarTower
- MeasureTheory.AEEqFun.instLattice
- MeasureTheory.AEEqFun.instModule
- MeasureTheory.AEEqFun.instMonoid
- MeasureTheory.AEEqFun.instMul
- MeasureTheory.AEEqFun.instMulAction
- MeasureTheory.AEEqFun.instNeg
- MeasureTheory.AEEqFun.instOne
- MeasureTheory.AEEqFun.instPartialOrder
- MeasureTheory.AEEqFun.instPowInt
- MeasureTheory.AEEqFun.instPowNat
- MeasureTheory.AEEqFun.instPreorder
- MeasureTheory.AEEqFun.instSMul
- MeasureTheory.AEEqFun.instSMulCommClass
- MeasureTheory.AEEqFun.instSub
- MeasureTheory.AEEqFun.instSup
- MeasureTheory.AEEqFun.instZero
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
- One or more equations did not get rendered due to their size.
Construct the equivalence class [f]
of an almost everywhere measurable function f
, based
on the equivalence relation of being almost everywhere equal.
Equations
- MeasureTheory.AEEqFun.mk f hf = Quotient.mk'' ⟨f, hf⟩
Coercion from a space of equivalence classes of almost everywhere strongly measurable
functions to functions. We ensure that if f
has a constant representative,
then we choose that one.
Equations
- ↑f = if h : ∃ (b : β), f = MeasureTheory.AEEqFun.mk (Function.const α b) ⋯ then Function.const α (Classical.choose h) else MeasureTheory.AEStronglyMeasurable.mk ↑(Quotient.out f) ⋯
A measurable representative of an AEEqFun
[f]
Equations
Composition of an a.e. equal function with a (quasi) measure preserving function #
Composition of an almost everywhere equal function and a quasi measure preserving function.
See also AEEqFun.compMeasurePreserving
.
Equations
- g.compQuasiMeasurePreserving f hf = Quotient.liftOn' g (fun (g : { f : β → γ // MeasureTheory.AEStronglyMeasurable f ν }) => MeasureTheory.AEEqFun.mk (↑g ∘ f) ⋯) ⋯
Composition of an almost everywhere equal function and a quasi measure preserving function.
This is an important special case of AEEqFun.compQuasiMeasurePreserving
. We use a separate
definition so that lemmas that need f
to be measure preserving can be @[simp]
lemmas.
Equations
- g.compMeasurePreserving f hf = g.compQuasiMeasurePreserving f ⋯
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
- MeasureTheory.AEEqFun.comp g hg f = Quotient.liftOn' f (fun (f : { f : α → β // MeasureTheory.AEStronglyMeasurable f μ }) => MeasureTheory.AEEqFun.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
- MeasureTheory.AEEqFun.compMeasurable g hg f = Quotient.liftOn' f (fun (f' : { f : α → β // MeasureTheory.AEStronglyMeasurable f μ }) => MeasureTheory.AEEqFun.mk (g ∘ ↑f') ⋯) ⋯
The class of x ↦ (f x, g x)
.
Equations
- One or more equations did not get rendered due to their size.
Given a continuous function g : β → γ → δ
, and almost everywhere equal functions
[f₁] : α →ₘ β
and [f₂] : α →ₘ γ
, return the equivalence class of the function
fun a => g (f₁ a) (f₂ a)
, i.e., the almost everywhere equal function
[fun a => g (f₁ a) (f₂ a)] : α →ₘ γ
Equations
- MeasureTheory.AEEqFun.comp₂ g hg f₁ f₂ = MeasureTheory.AEEqFun.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
fun a => g (f₁ a) (f₂ a)
, i.e., the almost everywhere equal function
[fun a => g (f₁ a) (f₂ a)] : α →ₘ γ
. This requires δ
to have second-countable topology.
Equations
- MeasureTheory.AEEqFun.comp₂Measurable g hg f₁ f₂ = MeasureTheory.AEEqFun.compMeasurable (Function.uncurry g) hg (f₁.pair f₂)
Interpret f : α →ₘ[μ] β
as a germ at ae μ
forgetting that f
is almost everywhere
strongly measurable.
Equations
- f.toGerm = Quotient.liftOn' f (fun (f : { f : α → β // MeasureTheory.AEStronglyMeasurable f μ }) => ↑↑f) ⋯
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
- MeasureTheory.AEEqFun.LiftRel r f g = Filter.Germ.LiftRel r f.toGerm g.toGerm
Equations
- MeasureTheory.AEEqFun.instSup = { max := fun (f g : α →ₘ[μ] β) => MeasureTheory.AEEqFun.comp₂ (fun (x1 x2 : β) => x1 ⊔ x2) ⋯ f g }
Equations
- MeasureTheory.AEEqFun.instInf = { min := fun (f g : α →ₘ[μ] β) => MeasureTheory.AEEqFun.comp₂ (fun (x1 x2 : β) => x1 ⊓ x2) ⋯ f g }
Equations
The equivalence class of a constant function: [fun _ : α => b]
, based on the equivalence
relation of being almost everywhere equal
Equations
- MeasureTheory.AEEqFun.const α b = MeasureTheory.AEEqFun.mk (fun (x : α) => b) ⋯
If the measure is nonzero, we can strengthen coeFn_const
to get an equality.
Equations
- MeasureTheory.AEEqFun.instInhabited = { default := MeasureTheory.AEEqFun.const α default }
Equations
- MeasureTheory.AEEqFun.instOne = { one := MeasureTheory.AEEqFun.const α 1 }
Equations
- MeasureTheory.AEEqFun.instZero = { zero := MeasureTheory.AEEqFun.const α 0 }
Equations
- MeasureTheory.AEEqFun.instSMul = { smul := fun (c : 𝕜) (f : α →ₘ[μ] γ) => MeasureTheory.AEEqFun.comp (fun (x : γ) => c • x) ⋯ f }
Equations
- MeasureTheory.AEEqFun.instMul = { mul := MeasureTheory.AEEqFun.comp₂ (fun (x1 x2 : γ) => x1 * x2) ⋯ }
Equations
- MeasureTheory.AEEqFun.instAdd = { add := MeasureTheory.AEEqFun.comp₂ (fun (x1 x2 : γ) => x1 + x2) ⋯ }
Equations
- MeasureTheory.AEEqFun.instPowNat = { pow := fun (f : α →ₘ[μ] γ) (n : ℕ) => MeasureTheory.AEEqFun.comp (fun (a : γ) => a ^ n) ⋯ f }
AEEqFun.toGerm
as a MonoidHom
.
Equations
- MeasureTheory.AEEqFun.toGermMonoidHom = { toFun := MeasureTheory.AEEqFun.toGerm, map_one' := ⋯, map_mul' := ⋯ }
AEEqFun.toGerm
as an AddMonoidHom
.
Equations
- MeasureTheory.AEEqFun.toGermAddMonoidHom = { toFun := MeasureTheory.AEEqFun.toGerm, map_zero' := ⋯, map_add' := ⋯ }
Equations
- MeasureTheory.AEEqFun.instInv = { inv := MeasureTheory.AEEqFun.comp Inv.inv ⋯ }
Equations
- MeasureTheory.AEEqFun.instNeg = { neg := MeasureTheory.AEEqFun.comp Neg.neg ⋯ }
Equations
- MeasureTheory.AEEqFun.instDiv = { div := MeasureTheory.AEEqFun.comp₂ Div.div ⋯ }
Equations
- MeasureTheory.AEEqFun.instSub = { sub := MeasureTheory.AEEqFun.comp₂ Sub.sub ⋯ }
Equations
- MeasureTheory.AEEqFun.instPowInt = { pow := fun (f : α →ₘ[μ] γ) (n : ℤ) => MeasureTheory.AEEqFun.comp (fun (a : γ) => a ^ n) ⋯ f }
Equations
Equations
Equations
For f : α → ℝ≥0∞
, define ∫ [f]
to be ∫ f
Positive part of an AEEqFun
.
Equations
- f.posPart = MeasureTheory.AEEqFun.comp (fun (x : γ) => x ⊔ 0) ⋯ f
The ae-limit is ae-unique.
The equivalence class of μ
-almost-everywhere measurable functions associated to a continuous
map.
Equations
The MulHom
from the group of continuous maps from α
to β
to the group of equivalence
classes of μ
-almost-everywhere measurable functions.
Equations
- ContinuousMap.toAEEqFunMulHom μ = { toFun := ContinuousMap.toAEEqFun μ, map_one' := ⋯, map_mul' := ⋯ }
The AddHom
from the group of continuous maps from α
to β
to the group of
equivalence classes of μ
-almost-everywhere measurable functions.
Equations
- ContinuousMap.toAEEqFunAddHom μ = { toFun := ContinuousMap.toAEEqFun μ, map_zero' := ⋯, map_add' := ⋯ }
The linear map from the group of continuous maps from α
to β
to the group of equivalence
classes of μ
-almost-everywhere measurable functions.
Equations
- ContinuousMap.toAEEqFunLinearMap μ = { toFun := (↑(ContinuousMap.toAEEqFunAddHom μ)).toFun, map_add' := ⋯, map_smul' := ⋯ }