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_toFunThe order structure of
L⁰:≤can be defined in a similar way:[f] ≤ [g]iff a ≤ g afor almost allain domain. Andα →ₘ βinherits the preorder and partial order ofβ.TODO: Define
supandinfonL⁰so that it forms a lattice. It seems thatβmust be a linear order, since otherwisef ⊔ gmay 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 operationopinL⁰, 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.mkcomp: Usecomp g fto get[g ∘ f]fromg : β → γand[f] : α →ₘ γwhengis continuous. Usecomp_measurableifgis 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 := ⋯ }
Instances For
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
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.
Instances For
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⟩
Instances For
Coercion from a space of equivalence classes of almost everywhere strongly measurable functions to functions.
Equations
Instances For
A measurable representative of an AEEqFun [f]
Equations
- MeasureTheory.AEEqFun.instCoeFun = { coe := MeasureTheory.AEEqFun.cast }
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) ⋯) ⋯
Instances For
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 ⋯
Instances For
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) ⋯) ⋯
Instances For
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') ⋯) ⋯
Instances For
The class of x ↦ (f x, g x).
Equations
- One or more equations did not get rendered due to their size.
Instances For
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₂)
Instances For
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₂)
Instances For
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) ⋯
Instances For
Given a predicate p and an equivalence class [f], return true if p holds of f a
for almost all a
Equations
- MeasureTheory.AEEqFun.LiftPred p f = Filter.Germ.LiftPred p f.toGerm
Instances For
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
Instances For
Equations
- MeasureTheory.AEEqFun.instPreorder = Preorder.lift MeasureTheory.AEEqFun.toGerm
Equations
- MeasureTheory.AEEqFun.instPartialOrder = PartialOrder.lift MeasureTheory.AEEqFun.toGerm ⋯
Equations
- MeasureTheory.AEEqFun.instSup = { sup := fun (f g : α →ₘ[μ] β) => MeasureTheory.AEEqFun.comp₂ (fun (x x_1 : β) => x ⊔ x_1) ⋯ f g }
Equations
- MeasureTheory.AEEqFun.instInf = { inf := fun (f g : α →ₘ[μ] β) => MeasureTheory.AEEqFun.comp₂ (fun (x x_1 : β) => x ⊓ x_1) ⋯ f g }
Equations
- MeasureTheory.AEEqFun.instLattice = let __src := MeasureTheory.AEEqFun.instPartialOrder; Lattice.mk ⋯ ⋯ ⋯
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) ⋯
Instances For
Equations
- MeasureTheory.AEEqFun.instInhabited = { default := MeasureTheory.AEEqFun.const α default }
Equations
- MeasureTheory.AEEqFun.instZero = { zero := MeasureTheory.AEEqFun.const α 0 }
Equations
- MeasureTheory.AEEqFun.instOne = { one := MeasureTheory.AEEqFun.const α 1 }
Equations
- MeasureTheory.AEEqFun.instSMul = { smul := fun (c : 𝕜) (f : α →ₘ[μ] γ) => MeasureTheory.AEEqFun.comp (fun (x : γ) => c • x) ⋯ f }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- MeasureTheory.AEEqFun.instAdd = { add := MeasureTheory.AEEqFun.comp₂ (fun (x x_1 : γ) => x + x_1) ⋯ }
Equations
- MeasureTheory.AEEqFun.instMul = { mul := MeasureTheory.AEEqFun.comp₂ (fun (x x_1 : γ) => x * x_1) ⋯ }
Equations
- MeasureTheory.AEEqFun.instAddMonoid = Function.Injective.addMonoid MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instAddCommMonoid = Function.Injective.addCommMonoid MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instMonoid = Function.Injective.monoid MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯
AEEqFun.toGerm as an AddMonoidHom.
Equations
- MeasureTheory.AEEqFun.toGermAddMonoidHom = { toFun := MeasureTheory.AEEqFun.toGerm, map_zero' := ⋯, map_add' := ⋯ }
Instances For
AEEqFun.toGerm as a MonoidHom.
Equations
- MeasureTheory.AEEqFun.toGermMonoidHom = { toFun := MeasureTheory.AEEqFun.toGerm, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Equations
- MeasureTheory.AEEqFun.instCommMonoid = Function.Injective.commMonoid MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instNeg = { neg := MeasureTheory.AEEqFun.comp Neg.neg ⋯ }
Equations
- MeasureTheory.AEEqFun.instInv = { inv := MeasureTheory.AEEqFun.comp Inv.inv ⋯ }
Equations
- MeasureTheory.AEEqFun.instSub = { sub := MeasureTheory.AEEqFun.comp₂ Sub.sub ⋯ }
Equations
- MeasureTheory.AEEqFun.instDiv = { div := MeasureTheory.AEEqFun.comp₂ Div.div ⋯ }
Equations
- MeasureTheory.AEEqFun.instAddGroup = Function.Injective.addGroup MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instAddCommGroup = AddCommGroup.mk ⋯
Equations
- MeasureTheory.AEEqFun.instGroup = Function.Injective.group MeasureTheory.AEEqFun.toGerm ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instCommGroup = CommGroup.mk ⋯
Equations
- MeasureTheory.AEEqFun.instMulAction = Function.Injective.mulAction MeasureTheory.AEEqFun.toGerm ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instDistribMulAction = Function.Injective.distribMulAction MeasureTheory.AEEqFun.toGermAddMonoidHom ⋯ ⋯
Equations
- MeasureTheory.AEEqFun.instModule = Function.Injective.module 𝕜 MeasureTheory.AEEqFun.toGermAddMonoidHom ⋯ ⋯
For f : α → ℝ≥0∞, define ∫ [f] to be ∫ f
Equations
- f.lintegral = Quotient.liftOn' f (fun (f : { f : α → ENNReal // MeasureTheory.AEStronglyMeasurable f μ }) => ∫⁻ (a : α), ↑f a ∂μ) ⋯
Instances For
Positive part of an AEEqFun.
Equations
- f.posPart = MeasureTheory.AEEqFun.comp (fun (x : γ) => max x 0) ⋯ f
Instances For
The equivalence class of μ-almost-everywhere measurable functions associated to a continuous
map.
Equations
Instances For
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' := ⋯ }
Instances For
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' := ⋯ }
Instances For
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 μ = let __src := ContinuousMap.toAEEqFunAddHom μ; { toFun := (↑__src).toFun, map_add' := ⋯, map_smul' := ⋯ }