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

Commit ed33a99

Browse files
committed
chore(measure_theory/l1_space): make measure argument of integrable optional (#3508)
Other changes: * a few trivial lemmas; * fix notation for `∀ᵐ`: now Lean can use it for printing, not only for parsing.
1 parent 396a66a commit ed33a99

File tree

3 files changed

+25
-22
lines changed

3 files changed

+25
-22
lines changed

src/measure_theory/bochner_integration.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,6 +1267,9 @@ begin
12671267
simpa only [← simple_func.integral_eq_integral, *, simple_func.integral_add_meas] using hμ.add hν
12681268
end
12691269

1270+
@[simp] lemma integral_zero_meas (f : α → E) : ∫ x, f x ∂0 = 0 :=
1271+
norm_le_zero_iff.1 $ le_trans (norm_integral_le_lintegral_norm f) $ by simp
1272+
12701273
end properties
12711274

12721275
mk_simp_attribute integral_simps "Simp set for integral rules."

src/measure_theory/l1_space.lean

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ universes u v w
6161
variables {α : Type u} [measurable_space α] {μ ν : measure α}
6262
variables {β : Type v} [normed_group β] {γ : Type w} [normed_group γ]
6363

64-
/-- A function is `integrable` if the integral of its pointwise norm is less than infinity. -/
65-
def integrable (f : α → β) (μ : measure α) : Prop := ∫⁻ a, nnnorm (f a) ∂μ < ⊤
64+
/-- `integrable f μ` means that the integral `∫⁻ a, ∥f a∥ ∂μ` is finite; `integrable f` means
65+
`integrable f volume`. -/
66+
def integrable (f : α → β) (μ : measure α . volume_tac) : Prop := ∫⁻ a, nnnorm (f a) ∂μ < ⊤
6667

6768
lemma integrable_iff_norm (f : α → β) : integrable f μ ↔ ∫⁻ a, (ennreal.of_real ∥f a∥) ∂μ < ⊤ :=
6869
by simp only [integrable, of_real_norm_eq_coe_nnnorm]
@@ -79,13 +80,21 @@ begin
7980
end,
8081
by rw [integrable_iff_norm, lintegral_eq]
8182

82-
lemma integrable.congr {f g : α → β} (hf : integrable f μ) (h : f =ᵐ[μ] g) : integrable g μ :=
83+
lemma integrable.mono {f : α → β} {g : α → γ} (hg : integrable g μ) (h : ∀ᵐ a ∂μ, ∥f a∥ ≤ ∥g a∥) :
84+
integrable f μ :=
8385
begin
84-
simp only [integrable],
85-
convert hf using 1,
86-
exact lintegral_rw₁ (h.symm.fun_comp _) _
86+
simp only [integrable_iff_norm] at *,
87+
calc ∫⁻ a, (ennreal.of_real ∥f a∥) ∂μ ≤ ∫⁻ (a : α), (ennreal.of_real ∥g a∥) ∂μ :
88+
lintegral_mono_ae (h.mono $ assume a h, of_real_le_of_real h)
89+
... < ⊤ : hg
8790
end
8891

92+
lemma integrable.congr {f g : α → β} (hf : integrable f μ) (h : f =ᵐ[μ] g) : integrable g μ :=
93+
hf.mono $ h.rw (λ a b, ∥b∥ ≤ ∥f a∥) (eventually_le.refl _ $ λ x, ∥f x∥)
94+
95+
lemma integrable_congr {f g : α → β} (h : f =ᵐ[μ] g) : integrable f μ ↔ integrable g μ :=
96+
⟨λ hf, hf.congr h, λ hg, hg.congr h.symm⟩
97+
8998
lemma integrable_const {c : β} : integrable (λ x : α, c) μ ↔ c = 0 ∨ μ univ < ⊤ :=
9099
begin
91100
simp only [integrable, lintegral_const],
@@ -98,18 +107,6 @@ begin
98107
rwa [ne.def, nnnorm_eq_zero] }
99108
end
100109

101-
lemma integrable_congr {f g : α → β} (h : f =ᵐ[μ] g) : integrable f μ ↔ integrable g μ :=
102-
⟨λ hf, hf.congr h, λ hg, hg.congr h.symm⟩
103-
104-
lemma integrable.mono {f : α → β} {g : α → γ} (hg : integrable g μ) (h : ∀ᵐ a ∂μ, ∥f a∥ ≤ ∥g a∥) :
105-
integrable f μ :=
106-
begin
107-
simp only [integrable_iff_norm] at *,
108-
calc ∫⁻ a, (ennreal.of_real ∥f a∥) ∂μ ≤ ∫⁻ (a : α), (ennreal.of_real ∥g a∥) ∂μ :
109-
lintegral_mono_ae (h.mono $ assume a h, of_real_le_of_real h)
110-
... < ⊤ : hg
111-
end
112-
113110
lemma integrable.mono_meas {f : α → β} (h : integrable f ν) (hμ : μ ≤ ν) :
114111
integrable f μ :=
115112
lt_of_le_of_lt (lintegral_mono' hμ (le_refl _)) h

src/measure_theory/measure_space.lean

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,9 +1028,9 @@ end measure
10281028

10291029
variables {α : Type*} {β : Type*} [measurable_space α] {μ : measure α}
10301030

1031-
notation `∀ᵐ` binders `∂` μ `, ` r:(scoped P, μ.ae.eventually P) := r
1032-
notation f ` =ᵐ[`:50 μ:50 `] `:0 g:50 := f =ᶠ[μ.ae] g
1033-
notation f ` ≤ᵐ[`:50 μ:50 `] `:0 g:50 := f ≤ᶠ[μ.ae] g
1031+
notation `∀ᵐ` binders `∂` μ `, ` r:(scoped P, filter.eventually P (measure.ae μ)) := r
1032+
notation f ` =ᵐ[`:50 μ:50 `] `:0 g:50 := f =ᶠ[measure.ae μ] g
1033+
notation f ` ≤ᵐ[`:50 μ:50 `] `:0 g:50 := f ≤ᶠ[measure.ae μ] g
10341034

10351035
lemma mem_ae_iff {s : set α} : s ∈ μ.ae ↔ μ sᶜ = 0 := iff.rfl
10361036

@@ -1304,7 +1304,10 @@ add_decl_doc volume
13041304
section measure_space
13051305
variables {α : Type*} {ι : Type*} [measure_space α] {s₁ s₂ : set α}
13061306

1307-
notation `∀ᵐ` binders `, ` r:(scoped P, volume.ae.eventually P) := r
1307+
notation `∀ᵐ` binders `, ` r:(scoped P, filter.eventually P (measure.ae volume)) := r
1308+
1309+
/-- The tactic `exact volume`, to be used in optional (`auto_param`) arguments. -/
1310+
meta def volume_tac : tactic unit := `[exact measure_theory.measure_space.volume]
13081311

13091312
end measure_space
13101313

0 commit comments

Comments
 (0)