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

Commit 19ae317

Browse files
committed
feat(measure_theory/interval_integral): strong version of FTC-2 (#7978)
The equality `∫ y in a..b, f' y = f b - f a` is currently proved in mathlib assuming that `f'` is continuous. We weaken the assumption, assuming only that `f'` is integrable.
1 parent 737b208 commit 19ae317

File tree

4 files changed

+394
-144
lines changed

4 files changed

+394
-144
lines changed

archive/100-theorems-list/9_area_of_a_circle.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ begin
7979
have hf : continuous f := by continuity,
8080
suffices : ∫ x in -r..r, 2 * f x = nnreal.pi * r ^ 2,
8181
{ have h : integrable_on f (Ioc (-r) r) :=
82-
(hf.integrable_on_compact is_compact_Icc).mono_set Ioc_subset_Icc_self,
82+
hf.integrable_on_Icc.mono_set Ioc_subset_Icc_self,
8383
calc volume (disc r)
8484
= volume (region_between (λ x, -f x) f (Ioc (-r) r)) : by rw disc_eq_region_between
8585
... = ennreal.of_real (∫ x in Ioc (-r:ℝ) r, (f - has_neg.neg ∘ f) x) :
@@ -108,8 +108,8 @@ begin
108108
... = 1 : inv_mul_cancel hlt.ne' },
109109
{ nlinarith } },
110110
have hcont := (by continuity : continuous F).continuous_on,
111-
have hcont' := (continuous_const.mul hf).continuous_on,
112111
calc ∫ x in -r..r, 2 * f x
113-
= F r - F (-r) : integral_eq_sub_of_has_deriv_at'_of_le (neg_le_self r.2) hcont hderiv hcont'
112+
= F r - F (-r) : integral_eq_sub_of_has_deriv_at_of_le (neg_le_self r.2)
113+
hcont hderiv (continuous_const.mul hf).continuous_on.interval_integrable
114114
... = nnreal.pi * r ^ 2 : by norm_num [F, inv_mul_cancel hlt.ne', ← mul_div_assoc, mul_comm π],
115115
end

src/analysis/special_functions/integrals.lean

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,10 @@ lemma integral_log (h : (0:ℝ) ∉ interval a b) :
232232
begin
233233
obtain ⟨h', heq⟩ := ⟨λ x hx, ne_of_mem_of_not_mem hx h, λ x hx, mul_inv_cancel (h' x hx)⟩,
234234
convert integral_mul_deriv_eq_deriv_mul (λ x hx, has_deriv_at_log (h' x hx))
235-
(λ x hx, has_deriv_at_id x) (continuous_on_inv'.mono $ subset_compl_singleton_iff.mpr h)
236-
continuous_on_const using 1; simp [integral_congr heq, mul_comm, ← sub_add],
235+
(λ x hx, has_deriv_at_id x)
236+
(continuous_on_inv'.mono $ subset_compl_singleton_iff.mpr h).interval_integrable
237+
continuous_on_const.interval_integrable using 1;
238+
simp [integral_congr heq, mul_comm, ← sub_add],
237239
end
238240

239241
@[simp]
@@ -257,7 +259,8 @@ by rw integral_deriv_eq_sub'; norm_num [continuous_on_cos]
257259
lemma integral_cos_sq_sub_sin_sq :
258260
∫ x in a..b, cos x ^ 2 - sin x ^ 2 = sin b * cos b - sin a * cos a :=
259261
by simpa only [sq, sub_eq_add_neg, neg_mul_eq_mul_neg] using integral_deriv_mul_eq_sub
260-
(λ x hx, has_deriv_at_sin x) (λ x hx, has_deriv_at_cos x) continuous_on_cos continuous_on_sin.neg
262+
(λ x hx, has_deriv_at_sin x) (λ x hx, has_deriv_at_cos x) continuous_on_cos.interval_integrable
263+
continuous_on_sin.neg.interval_integrable
261264

262265
@[simp]
263266
lemma integral_inv_one_add_sq : ∫ x : ℝ in a..b, (1 + x^2)⁻¹ = arctan b - arctan a :=
@@ -293,7 +296,7 @@ begin
293296
← pow_add, add_comm]
294297
... = C + (n + 1) * (∫ x in a..b, sin x ^ n) - (n + 1) * ∫ x in a..b, sin x ^ (n + 2) :
295298
by rw [integral_sub, mul_sub, add_sub_assoc]; apply continuous.interval_integrable; continuity,
296-
all_goals { apply continuous.continuous_on, continuity },
299+
all_goals { apply continuous.interval_integrable, continuity },
297300
end
298301

299302
/-- The reduction formula for the integral of `sin x ^ n` for any natural `n ≥ 2`. -/
@@ -361,7 +364,7 @@ begin
361364
← pow_add, add_comm]
362365
... = C + (n + 1) * (∫ x in a..b, cos x ^ n) - (n + 1) * ∫ x in a..b, cos x ^ (n + 2) :
363366
by rw [integral_sub, mul_sub, add_sub_assoc]; apply continuous.interval_integrable; continuity,
364-
all_goals { apply continuous.continuous_on, continuity },
367+
all_goals { apply continuous.interval_integrable, continuity },
365368
end
366369

367370
/-- The reduction formula for the integral of `cos x ^ n` for any natural `n ≥ 2`. -/

src/measure_theory/integral/integrable_on.lean

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -384,28 +384,42 @@ begin
384384
{ apply_instance }
385385
end
386386

387-
lemma measure_theory.integrable_on.mul_continuous_on
388-
[topological_space α] [opens_measurable_space α] [t2_space α]
389-
{μ : measure α} {s : set α} {f g : α → ℝ}
390-
(hf : integrable_on f s μ) (hg : continuous_on g s) (hs : is_compact s) :
387+
section
388+
variables [topological_space α] [opens_measurable_space α]
389+
{μ : measure α} {s t : set α} {f g : α → ℝ}
390+
391+
lemma measure_theory.integrable_on.mul_continuous_on_of_subset
392+
(hf : integrable_on f s μ) (hg : continuous_on g t)
393+
(hs : measurable_set s) (ht : is_compact t) (hst : s ⊆ t) :
391394
integrable_on (λ x, f x * g x) s μ :=
392395
begin
393-
rcases is_compact.exists_bound_of_continuous_on hs hg with ⟨C, hC⟩,
396+
rcases is_compact.exists_bound_of_continuous_on ht hg with ⟨C, hC⟩,
394397
rw [integrable_on, ← mem_ℒp_one_iff_integrable] at hf ⊢,
395398
have : ∀ᵐ x ∂(μ.restrict s), ∥f x * g x∥ ≤ C * ∥f x∥,
396-
{ filter_upwards [ae_restrict_mem hs.measurable_set],
399+
{ filter_upwards [ae_restrict_mem hs],
397400
assume x hx,
398401
rw [real.norm_eq_abs, abs_mul, mul_comm, real.norm_eq_abs],
399-
apply mul_le_mul_of_nonneg_right (hC x hx) (abs_nonneg _) },
400-
exact mem_ℒp.of_le_mul hf (hf.ae_measurable.mul (hg.ae_measurable hs.measurable_set)) this
402+
apply mul_le_mul_of_nonneg_right (hC x (hst hx)) (abs_nonneg _) },
403+
exact mem_ℒp.of_le_mul hf (hf.ae_measurable.mul ((hg.mono hst).ae_measurable hs)) this,
401404
end
402405

403-
lemma measure_theory.integrable_on.continuous_on_mul
404-
[topological_space α] [opens_measurable_space α] [t2_space α]
405-
{μ : measure α} {s : set α} {f g : α → ℝ}
406+
lemma measure_theory.integrable_on.mul_continuous_on [t2_space α]
407+
(hf : integrable_on f s μ) (hg : continuous_on g s) (hs : is_compact s) :
408+
integrable_on (λ x, f x * g x) s μ :=
409+
hf.mul_continuous_on_of_subset hg hs.measurable_set hs (subset.refl _)
410+
411+
lemma measure_theory.integrable_on.continuous_on_mul_of_subset
412+
(hf : integrable_on f s μ) (hg : continuous_on g t)
413+
(hs : measurable_set s) (ht : is_compact t) (hst : s ⊆ t) :
414+
integrable_on (λ x, g x * f x) s μ :=
415+
by simpa [mul_comm] using hf.mul_continuous_on_of_subset hg hs ht hst
416+
417+
lemma measure_theory.integrable_on.continuous_on_mul [t2_space α]
406418
(hf : integrable_on f s μ) (hg : continuous_on g s) (hs : is_compact s) :
407419
integrable_on (λ x, g x * f x) s μ :=
408-
by simpa [mul_comm] using hf.mul_continuous_on hg hs
420+
hf.continuous_on_mul_of_subset hg hs.measurable_set hs (subset.refl _)
421+
422+
end
409423

410424
section monotone
411425

0 commit comments

Comments
 (0)