Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 69e861e

Browse files
Zhouhang Zhoumergify[bot]
authored andcommitted
feat(measure_theory/bochner_integration): connecting the Bochner integral with the integral on ennreal-valued functions (#1790)
* shorter proof * feat(measure_theory/bochner_integration): connecting the Bochner integral with the integral on `ennreal` This PR proves that `∫ f = ∫ f⁺ - ∫ f⁻`, with the first integral sign being the Bochner integral of a real-valued function `f : α → ℝ`, and second and third integral sign being the integral on `ennreal`-valued functions. See `integral_eq_lintegral_max_sub_lintegral_min`. I feel that most of the basic properties of the Bochner integral are proved. Please let me know if you think something else is needed. * various things : * add guides for typeclass inference; * add `norm_cast` tags; * prove some corollaries; * add doc strings; * other fixes * Update bochner_integration.lean * add some doc strings * Fix doc strings * Update bochner_integration.lean * Update bochner_integration.lean * fix doc strings * Update bochner_integration.lean * Use dot notation * use dot notation * Update Meas.lean
1 parent a8f6e23 commit 69e861e

File tree

10 files changed

+740
-232
lines changed

10 files changed

+740
-232
lines changed

src/algebra/order_functions.lean

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,29 @@ calc
251251
lemma max_le_add_of_nonneg {a b : α} (ha : a ≥ 0) (hb : b ≥ 0) : max a b ≤ a + b :=
252252
max_le_iff.2 (by split; simpa)
253253

254+
lemma max_zero_sub_eq_self (a : α) : max a 0 - max (-a) 0 = a :=
255+
begin
256+
rcases le_total a 0,
257+
{ rw [max_eq_right h, max_eq_left, zero_sub, neg_neg], { rwa [le_neg, neg_zero] } },
258+
{ rw [max_eq_left, max_eq_right, sub_zero], { rwa [neg_le, neg_zero] }, exact h }
259+
end
260+
261+
lemma abs_max_sub_max_le_abs (a b c : α) : abs (max a c - max b c) ≤ abs (a - b) :=
262+
begin
263+
simp only [max],
264+
split_ifs,
265+
{ rw [sub_self, abs_zero], exact abs_nonneg _ },
266+
{ calc abs (c - b) = - (c - b) : abs_of_neg (sub_neg_of_lt (lt_of_not_ge h_1))
267+
... = b - c : neg_sub _ _
268+
... ≤ b - a : by { rw sub_le_sub_iff_left, exact h }
269+
... = - (a - b) : by rw neg_sub
270+
... ≤ abs (a - b) : neg_le_abs_self _ },
271+
{ calc abs (a - c) = a - c : abs_of_pos (sub_pos_of_lt (lt_of_not_ge h))
272+
... ≤ a - b : by { rw sub_le_sub_iff_left, exact h_1 }
273+
... ≤ abs (a - b) : le_abs_self _ },
274+
{ refl }
275+
end
276+
254277
end decidable_linear_ordered_comm_group
255278

256279
section decidable_linear_ordered_semiring

src/measure_theory/ae_eq_fun.lean

Lines changed: 51 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,42 @@ import measure_theory.integration
88

99
/-!
1010
11-
# ALmost everywhere equal functions
11+
# Almost everywhere equal functions
1212
1313
Two measurable functions are treated as identical if they are almost everywhere equal. We form the
1414
set of equivalence classes under the relation of being almost everywhere equal, which is sometimes
15-
known as the L0 space.
15+
known as the `L⁰` space.
1616
17-
See `l1_space.lean` for L1 space.
17+
See `l1_space.lean` for `L¹` space.
1818
1919
2020
## Notation
2121
22-
* `α →ₘ β` is the type of L0 space, where `α` is a measure space and `β` is a measurable space.
23-
`f : α →ₘ β` is a "function" in L0. In comments, `[f]` is also used to denote an L0 function.
22+
* `α →ₘ β` is the type of `L⁰` space, where `α` is a measure space and `β` is a measurable space.
23+
`f : α →ₘ β` is a "function" in `L⁰`. In comments, `[f]` is also used to denote an `L⁰` function.
2424
2525
`ₘ` can be typed as `\_m`. Sometimes it is shown as a box if font is missing.
2626
2727
2828
## Main statements
2929
30-
* The linear structure of L0 :
31-
Addition and scalar multiplication are defined on L0 in the natural way, i.e.,
30+
* The linear structure of `L⁰` :
31+
Addition and scalar multiplication are defined on `L⁰` in the natural way, i.e.,
3232
`[f] + [g] := [f + g]`, `c • [f] := [c • f]`. So defined, `α →ₘ β` inherits the linear structure
3333
of `β`. For example, if `β` is a module, then `α →ₘ β` is a module over the same ring.
3434
3535
See `mk_add_mk`, `neg_mk`, `mk_sub_mk`, `smul_mk`,
3636
`add_to_fun`, `neg_to_fun`, `sub_to_fun`, `smul_to_fun`
3737
38-
* The order structure of L0 :
38+
* The order structure of `L⁰` :
3939
`≤` can be defined in a similar way: `[f] ≤ [g]` if `f a ≤ g a` for almost all `a` in domain.
4040
And `α →ₘ β` inherits the preorder and partial order of `β`.
4141
42-
TODO: Define `sup` and `inf` on L0 so that it forms a lattice. It seems that `β` must be a
42+
TODO: Define `sup` and `inf` on `L⁰` so that it forms a lattice. It seems that `β` must be a
4343
linear order, since otherwise `f ⊔ g` may not be a measurable function.
4444
45-
* Emetric on L0 :
46-
If `β` is an `emetric_space`, then L0 can be made into an `emetric_space`, where
45+
* Emetric on `L⁰` :
46+
If `β` is an `emetric_space`, then `L⁰` can be made into an `emetric_space`, where
4747
`edist [f] [g]` is defined to be `∫⁻ a, edist (f a) (g a)`.
4848
4949
The integral used here is `lintegral : (α → ennreal) → ennreal`, which is defined in the file
@@ -54,24 +54,22 @@ See `l1_space.lean` for L1 space.
5454
5555
## Implementation notes
5656
57-
`f.to_fun` : To find a representative of `f : α →ₘ β`, use `f.to_fun`.
58-
For each operation `op` in L0, there is a lemma called `op_to_fun`, characterizing,
57+
* `f.to_fun` : To find a representative of `f : α →ₘ β`, use `f.to_fun`.
58+
For each operation `op` in `L⁰`, there is a lemma called `op_to_fun`, characterizing,
5959
say, `(f op g).to_fun`.
60-
61-
`ae_eq_fun.mk` : To constructs an L0 function `α →ₘ β` from a measurable function `f : α → β`,
60+
* `ae_eq_fun.mk` : To constructs an `L⁰` function `α →ₘ β` from a measurable function `f : α → β`,
6261
use `ae_eq_fun.mk`
63-
64-
`comp` : Use `comp g f` to get `[g ∘ f]` from `g : β → γ` and `[f] : α →ₘ γ`
65-
66-
`comp₂` : Use `comp₂ g f₁ f₂ to get `[λa, g (f₁ a) (f₂ a)]`.
62+
* `comp` : Use `comp g f` to get `[g ∘ f]` from `g : β → γ` and `[f] : α →ₘ γ`
63+
* `comp₂` : Use `comp₂ g f₁ f₂ to get `[λa, g (f₁ a) (f₂ a)]`.
6764
For example, `[f + g]` is `comp₂ (+)`
6865
6966
7067
## Tags
7168
72-
function space, almost everywhere equal, L0, ae_eq_fun
69+
function space, almost everywhere equal, `L⁰`, ae_eq_fun
7370
7471
-/
72+
7573
noncomputable theory
7674
open_locale classical
7775

@@ -162,7 +160,7 @@ def comp₂ {γ δ : Type*} [measurable_space γ] [measurable_space δ]
162160
(g : β → γ → δ) (hg : measurable (λp:β×γ, g p.1 p.2)) (f₁ : α →ₘ β) (f₂ : α →ₘ γ) : α →ₘ δ :=
163161
begin
164162
refine quotient.lift_on₂ f₁ f₂ (λf₁ f₂, mk (λa, g (f₁.1 a) (f₂.1 a)) $ _) _,
165-
{ exact measurable.comp hg (measurable_prod_mk f₁.2 f₂.2) },
163+
{ exact measurable.comp hg (measurable.prod_mk f₁.2 f₂.2) },
166164
{ rintros ⟨f₁, hf₁⟩ ⟨f₂, hf₂⟩ ⟨g₁, hg₁⟩ ⟨g₂, hg₂⟩ h₁ h₂,
167165
refine quotient.sound _,
168166
filter_upwards [h₁, h₂],
@@ -172,13 +170,13 @@ end
172170
@[simp] lemma comp₂_mk_mk {γ δ : Type*} [measurable_space γ] [measurable_space δ]
173171
(g : β → γ → δ) (hg : measurable (λp:β×γ, g p.1 p.2)) (f₁ : α → β) (f₂ : α → γ) (hf₁ hf₂) :
174172
comp₂ g hg (mk f₁ hf₁) (mk f₂ hf₂) =
175-
mk (λa, g (f₁ a) (f₂ a)) (measurable.comp hg (measurable_prod_mk hf₁ hf₂)) :=
173+
mk (λa, g (f₁ a) (f₂ a)) (measurable.comp hg (measurable.prod_mk hf₁ hf₂)) :=
176174
rfl
177175

178176
lemma comp₂_eq_mk_to_fun {γ δ : Type*} [measurable_space γ] [measurable_space δ]
179177
(g : β → γ → δ) (hg : measurable (λp:β×γ, g p.1 p.2)) (f₁ : α →ₘ β) (f₂ : α →ₘ γ) :
180178
comp₂ g hg f₁ f₂ = mk (λa, g (f₁.to_fun a) (f₂.to_fun a))
181-
(hg.comp (measurable_prod_mk f₁.measurable f₂.measurable)) :=
179+
(hg.comp (measurable.prod_mk f₁.measurable f₂.measurable)) :=
182180
by conv_lhs { rw [self_eq_mk f₁, self_eq_mk f₂, comp₂_mk_mk] }
183181

184182
lemma comp₂_to_fun {γ δ : Type*} [measurable_space γ] [measurable_space δ]
@@ -199,8 +197,8 @@ end
199197
`(f a, g a)` for almost all `a` -/
200198
def lift_rel {γ : Type*} [measurable_space γ] (r : β → γ → Prop) (f : α →ₘ β) (g : α →ₘ γ) : Prop :=
201199
lift_pred (λp:β×γ, r p.1 p.2)
202-
(comp₂ prod.mk (measurable_prod_mk
203-
(measurable_fst measurable_id) (measurable_snd measurable_id)) f g)
200+
(comp₂ prod.mk (measurable.prod_mk
201+
(measurable.fst measurable_id) (measurable.snd measurable_id)) f g)
204202

205203
lemma lift_rel_mk_mk {γ : Type*} [measurable_space γ] (r : β → γ → Prop)
206204
(f : α → β) (g : α → γ) (hf hg) : lift_rel r (mk f hf) (mk g hg) ↔ ∀ₘ a, r (f a) (g a) :=
@@ -236,7 +234,7 @@ instance [partial_order β] : partial_order (α →ₘ β) :=
236234
end,
237235
.. ae_eq_fun.preorder }
238236

239-
/- TODO: Prove L0 space is a lattice if β is linear order.
237+
/- TODO: Prove `L⁰` space is a lattice if β is linear order.
240238
What if β is only a lattice? -/
241239

242240
-- instance [linear_order β] : semilattice_sup (α →ₘ β) :=
@@ -266,12 +264,12 @@ variables {γ : Type*}
266264
[topological_space γ] [second_countable_topology γ] [add_monoid γ] [topological_add_monoid γ]
267265

268266
protected def add : (α →ₘ γ) → (α →ₘ γ) → (α →ₘ γ) :=
269-
comp₂ (+) (measurable_add (measurable_fst measurable_id) (measurable_snd measurable_id))
267+
comp₂ (+) (measurable.add (measurable.fst measurable_id) (measurable.snd measurable_id))
270268

271269
instance : has_add (α →ₘ γ) := ⟨ae_eq_fun.add⟩
272270

273271
@[simp] lemma mk_add_mk (f g : α → γ) (hf hg) :
274-
(mk f hf) + (mk g hg) = mk (f + g) (measurable_add hf hg) := rfl
272+
(mk f hf) + (mk g hg) = mk (f + g) (measurable.add hf hg) := rfl
275273

276274
lemma add_to_fun (f g : α →ₘ γ) : ∀ₘ a, (f + g).to_fun a = f.to_fun a + g.to_fun a :=
277275
comp₂_to_fun _ _ _ _
@@ -300,11 +298,11 @@ section add_group
300298

301299
variables {γ : Type*} [topological_space γ] [add_group γ] [topological_add_group γ]
302300

303-
protected def neg : (α →ₘ γ) → (α →ₘ γ) := comp has_neg.neg (measurable_neg measurable_id)
301+
protected def neg : (α →ₘ γ) → (α →ₘ γ) := comp has_neg.neg (measurable.neg measurable_id)
304302

305303
instance : has_neg (α →ₘ γ) := ⟨ae_eq_fun.neg⟩
306304

307-
@[simp] lemma neg_mk (f : α → γ) (hf) : -(mk f hf) = mk (-f) (measurable_neg hf) := rfl
305+
@[simp] lemma neg_mk (f : α → γ) (hf) : -(mk f hf) = mk (-f) (measurable.neg hf) := rfl
308306

309307
lemma neg_to_fun (f : α →ₘ γ) : ∀ₘ a, (-f).to_fun a = - f.to_fun a := comp_to_fun _ _ _
310308

@@ -316,7 +314,7 @@ instance : add_group (α →ₘ γ) :=
316314
}
317315

318316
@[simp] lemma mk_sub_mk (f g : α → γ) (hf hg) :
319-
(mk f hf) - (mk g hg) = mk (λa, (f a) - (g a)) (measurable_sub hf hg) := rfl
317+
(mk f hf) - (mk g hg) = mk (λa, (f a) - (g a)) (measurable.sub hf hg) := rfl
320318

321319
lemma sub_to_fun (f g : α →ₘ γ) : ∀ₘ a, (f - g).to_fun a = f.to_fun a - g.to_fun a :=
322320
begin
@@ -403,8 +401,8 @@ instance : vector_space 𝕜 (α →ₘ γ) := { .. ae_eq_fun.semimodule }
403401

404402
end vector_space
405403

406-
/- TODO : Prove that L0 is a complete space if the codomain is complete. -/
407-
/- TODO : Multiplicative structure of L0 if useful -/
404+
/- TODO : Prove that `L⁰` is a complete space if the codomain is complete. -/
405+
/- TODO : Multiplicative structure of `L⁰` if useful -/
408406

409407
open ennreal
410408

@@ -541,6 +539,26 @@ end
541539

542540
end normed_space
543541

542+
section pos_part
543+
544+
variables {γ : Type*} [topological_space γ] [decidable_linear_order γ] [ordered_topology γ]
545+
[second_countable_topology γ] [has_zero γ]
546+
547+
/-- Positive part of an `ae_eq_fun`. -/
548+
def pos_part (f : α →ₘ γ) : α →ₘ γ :=
549+
comp₂ max (measurable.max (measurable.fst measurable_id) (measurable.snd measurable_id)) f 0
550+
551+
lemma pos_part_to_fun (f : α →ₘ γ) : ∀ₘ a, (pos_part f).to_fun a = max (f.to_fun a) (0:γ) :=
552+
begin
553+
filter_upwards [comp₂_to_fun max (measurable.max (measurable.fst measurable_id)
554+
(measurable.snd measurable_id)) f 0, @ae_eq_fun.zero_to_fun α γ],
555+
simp only [mem_set_of_eq],
556+
assume a h₁ h₂,
557+
rw [pos_part, h₁, h₂]
558+
end
559+
560+
end pos_part
561+
544562
end ae_eq_fun
545563

546564
end measure_theory

0 commit comments

Comments
 (0)