measure_theory.integral.exp_decayMathlib.MeasureTheory.Integral.ExpDecay

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -49,7 +49,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
     (h1 : ContinuousOn f (Ici a)) (h2 : f =O[atTop] fun x => exp (-b * x)) :
     IntegrableOn f (Ioi a) := by
   cases' h2.is_O_with with c h3
-  rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3 
+  rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3
   cases' h3 with r bdr
   let v := max a r
   -- show integrable on `(a, v]` from continuity
@@ -72,7 +72,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
   refine' ae_of_all _ fun x h1x => _
   rw [norm_mul, norm_eq_abs]
-  rw [mem_Ioi] at h1x 
+  rw [mem_Ioi] at h1x
   specialize bdr x ((le_max_right a r).trans h1x.le)
   exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
 #align integrable_of_is_O_exp_neg integrable_of_isBigO_exp_neg
Diff
@@ -55,7 +55,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   -- show integrable on `(a, v]` from continuity
   have int_left : integrable_on f (Ioc a v) :=
     by
-    rw [← intervalIntegrable_iff_integrable_Ioc_of_le (le_max_left a r)]
+    rw [← intervalIntegrable_iff_integrableOn_Ioc_of_le (le_max_left a r)]
     have u : Icc a v ⊆ Ici a := Icc_subset_Ici_self
     exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
   suffices integrable_on f (Ioi v)
Diff
@@ -33,7 +33,7 @@ open scoped Topology
 theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
     IntegrableOn (fun x : ℝ => exp (-b * x)) (Ioi a) :=
   by
-  have : tendsto (fun x => -exp (-b * x) / b) at_top (𝓝 (-0 / b)) :=
+  have : tendsto (fun x => -NormedSpace.exp (-b * x) / b) at_top (𝓝 (-0 / b)) :=
     by
     refine' tendsto.div_const (tendsto.neg _) _
     exact tendsto_exp_at_bot.comp (tendsto_id.neg_const_mul_at_top (Right.neg_neg_iff.2 h))
@@ -65,7 +65,8 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   -- now show integrable on `(v, ∞)` from asymptotic
   constructor
   · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).AEStronglyMeasurable measurableSet_Ioi
-  have : has_finite_integral (fun x : ℝ => c * exp (-b * x)) (volume.restrict (Ioi v)) :=
+  have :
+    has_finite_integral (fun x : ℝ => c * NormedSpace.exp (-b * x)) (volume.restrict (Ioi v)) :=
     (exp_neg_integrableOn_Ioi v h0).HasFiniteIntegral.const_mul c
   apply this.mono
   refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 David Loeffler. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
 -/
-import Mathbin.MeasureTheory.Integral.IntervalIntegral
-import Mathbin.MeasureTheory.Integral.IntegralEqImproper
+import MeasureTheory.Integral.IntervalIntegral
+import MeasureTheory.Integral.IntegralEqImproper
 
 #align_import measure_theory.integral.exp_decay from "leanprover-community/mathlib"@"fd4551cfe4b7484b81c2c9ba3405edae27659676"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 David Loeffler. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
-
-! This file was ported from Lean 3 source module measure_theory.integral.exp_decay
-! leanprover-community/mathlib commit fd4551cfe4b7484b81c2c9ba3405edae27659676
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.MeasureTheory.Integral.IntervalIntegral
 import Mathbin.MeasureTheory.Integral.IntegralEqImproper
 
+#align_import measure_theory.integral.exp_decay from "leanprover-community/mathlib"@"fd4551cfe4b7484b81c2c9ba3405edae27659676"
+
 /-!
 # Integrals with exponential decay at ∞
 
Diff
@@ -31,6 +31,7 @@ open Real intervalIntegral MeasureTheory Set Filter
 
 open scoped Topology
 
+#print exp_neg_integrableOn_Ioi /-
 /-- `exp (-b * x)` is integrable on `(a, ∞)`. -/
 theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
     IntegrableOn (fun x : ℝ => exp (-b * x)) (Ioi a) :=
@@ -42,7 +43,9 @@ theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
   refine' integrable_on_Ioi_deriv_of_nonneg' (fun x hx => _) (fun x hx => (exp_pos _).le) this
   simpa [h.ne'] using ((hasDerivAt_id x).const_mul b).neg.exp.neg.div_const b
 #align exp_neg_integrable_on_Ioi exp_neg_integrableOn_Ioi
+-/
 
+#print integrable_of_isBigO_exp_neg /-
 /-- If `f` is continuous on `[a, ∞)`, and is `O (exp (-b * x))` at `∞` for some `b > 0`, then
 `f` is integrable on `(a, ∞)`. -/
 theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
@@ -75,4 +78,5 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   specialize bdr x ((le_max_right a r).trans h1x.le)
   exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
 #align integrable_of_is_O_exp_neg integrable_of_isBigO_exp_neg
+-/
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
 
 ! This file was ported from Lean 3 source module measure_theory.integral.exp_decay
-! leanprover-community/mathlib commit d4817f8867c368d6c5571f7379b3888aaec1d95a
+! leanprover-community/mathlib commit fd4551cfe4b7484b81c2c9ba3405edae27659676
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.MeasureTheory.Integral.IntegralEqImproper
 /-!
 # Integrals with exponential decay at ∞
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 As easy special cases of general theorems in the library, we prove the following test
 for integrability:
 
Diff
@@ -46,7 +46,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
     (h1 : ContinuousOn f (Ici a)) (h2 : f =O[atTop] fun x => exp (-b * x)) :
     IntegrableOn f (Ioi a) := by
   cases' h2.is_O_with with c h3
-  rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3
+  rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3 
   cases' h3 with r bdr
   let v := max a r
   -- show integrable on `(a, v]` from continuity
@@ -68,7 +68,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
   refine' ae_of_all _ fun x h1x => _
   rw [norm_mul, norm_eq_abs]
-  rw [mem_Ioi] at h1x
+  rw [mem_Ioi] at h1x 
   specialize bdr x ((le_max_right a r).trans h1x.le)
   exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
 #align integrable_of_is_O_exp_neg integrable_of_isBigO_exp_neg
Diff
@@ -26,7 +26,7 @@ noncomputable section
 
 open Real intervalIntegral MeasureTheory Set Filter
 
-open Topology
+open scoped Topology
 
 /-- `exp (-b * x)` is integrable on `(a, ∞)`. -/
 theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
Diff
@@ -61,7 +61,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
     simpa only [Ioc_union_Ioi_eq_Ioi, le_max_iff, le_refl, true_or_iff] using t
   -- now show integrable on `(v, ∞)` from asymptotic
   constructor
-  · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).AeStronglyMeasurable measurableSet_Ioi
+  · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).AEStronglyMeasurable measurableSet_Ioi
   have : has_finite_integral (fun x : ℝ => c * exp (-b * x)) (volume.restrict (Ioi v)) :=
     (exp_neg_integrableOn_Ioi v h0).HasFiniteIntegral.const_mul c
   apply this.mono
Diff
@@ -29,7 +29,7 @@ open Real intervalIntegral MeasureTheory Set Filter
 open Topology
 
 /-- `exp (-b * x)` is integrable on `(a, ∞)`. -/
-theorem expNegIntegrableOnIoi (a : ℝ) {b : ℝ} (h : 0 < b) :
+theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
     IntegrableOn (fun x : ℝ => exp (-b * x)) (Ioi a) :=
   by
   have : tendsto (fun x => -exp (-b * x) / b) at_top (𝓝 (-0 / b)) :=
@@ -38,13 +38,13 @@ theorem expNegIntegrableOnIoi (a : ℝ) {b : ℝ} (h : 0 < b) :
     exact tendsto_exp_at_bot.comp (tendsto_id.neg_const_mul_at_top (Right.neg_neg_iff.2 h))
   refine' integrable_on_Ioi_deriv_of_nonneg' (fun x hx => _) (fun x hx => (exp_pos _).le) this
   simpa [h.ne'] using ((hasDerivAt_id x).const_mul b).neg.exp.neg.div_const b
-#align exp_neg_integrable_on_Ioi expNegIntegrableOnIoi
+#align exp_neg_integrable_on_Ioi exp_neg_integrableOn_Ioi
 
 /-- If `f` is continuous on `[a, ∞)`, and is `O (exp (-b * x))` at `∞` for some `b > 0`, then
 `f` is integrable on `(a, ∞)`. -/
-theorem integrableOfIsOExpNeg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b) (h1 : ContinuousOn f (Ici a))
-    (h2 : f =O[atTop] fun x => exp (-b * x)) : IntegrableOn f (Ioi a) :=
-  by
+theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
+    (h1 : ContinuousOn f (Ici a)) (h2 : f =O[atTop] fun x => exp (-b * x)) :
+    IntegrableOn f (Ioi a) := by
   cases' h2.is_O_with with c h3
   rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3
   cases' h3 with r bdr
@@ -54,7 +54,7 @@ theorem integrableOfIsOExpNeg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b) (h1 : C
     by
     rw [← intervalIntegrable_iff_integrable_Ioc_of_le (le_max_left a r)]
     have u : Icc a v ⊆ Ici a := Icc_subset_Ici_self
-    exact (h1.mono u).intervalIntegrableOfIcc (le_max_left a r)
+    exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
   suffices integrable_on f (Ioi v)
     by
     have t : integrable_on f (Ioc a v ∪ Ioi v) := integrable_on_union.mpr ⟨int_left, this⟩
@@ -63,7 +63,7 @@ theorem integrableOfIsOExpNeg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b) (h1 : C
   constructor
   · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).AeStronglyMeasurable measurableSet_Ioi
   have : has_finite_integral (fun x : ℝ => c * exp (-b * x)) (volume.restrict (Ioi v)) :=
-    (expNegIntegrableOnIoi v h0).HasFiniteIntegral.const_mul c
+    (exp_neg_integrableOn_Ioi v h0).HasFiniteIntegral.const_mul c
   apply this.mono
   refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
   refine' ae_of_all _ fun x h1x => _
@@ -71,5 +71,5 @@ theorem integrableOfIsOExpNeg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b) (h1 : C
   rw [mem_Ioi] at h1x
   specialize bdr x ((le_max_right a r).trans h1x.le)
   exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
-#align integrable_of_is_O_exp_neg integrableOfIsOExpNeg
+#align integrable_of_is_O_exp_neg integrable_of_isBigO_exp_neg
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
 
 ! This file was ported from Lean 3 source module measure_theory.integral.exp_decay
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit d4817f8867c368d6c5571f7379b3888aaec1d95a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -26,37 +26,18 @@ noncomputable section
 
 open Real intervalIntegral MeasureTheory Set Filter
 
-/-- Integral of `exp (-b * x)` over `(a, X)` is bounded as `X → ∞`. -/
-theorem integral_exp_neg_le {b : ℝ} (a X : ℝ) (h2 : 0 < b) :
-    (∫ x in a..X, exp (-b * x)) ≤ exp (-b * a) / b :=
-  by
-  rw [integral_deriv_eq_sub' fun x => -exp (-b * x) / b]
-  -- goal 1/4: F(X) - F(a) is bounded
-  · simp only [tsub_le_iff_right]
-    rw [neg_div b (exp (-b * a)), neg_div b (exp (-b * X)), add_neg_self, neg_le, neg_zero]
-    exact (div_pos (exp_pos _) h2).le
-  -- goal 2/4: the derivative of F is exp(-b x)
-  · ext1
-    simp [h2.ne']
-  -- goal 3/4: F is differentiable
-  · intro x hx
-    simp [h2.ne']
-  -- goal 4/4: exp(-b x) is continuous
-  · apply Continuous.continuousOn
-    continuity
-#align integral_exp_neg_le integral_exp_neg_le
+open Topology
 
 /-- `exp (-b * x)` is integrable on `(a, ∞)`. -/
 theorem expNegIntegrableOnIoi (a : ℝ) {b : ℝ} (h : 0 < b) :
     IntegrableOn (fun x : ℝ => exp (-b * x)) (Ioi a) :=
   by
-  have : ∀ X : ℝ, integrable_on (fun x : ℝ => exp (-b * x)) (Ioc a X) :=
+  have : tendsto (fun x => -exp (-b * x) / b) at_top (𝓝 (-0 / b)) :=
     by
-    intro X
-    exact (continuous_const.mul continuous_id).exp.integrableOnIoc
-  apply integrable_on_Ioi_of_interval_integral_norm_bounded (exp (-b * a) / b) a this tendsto_id
-  simp only [eventually_at_top, norm_of_nonneg (exp_pos _).le]
-  exact ⟨a, fun b2 hb2 => integral_exp_neg_le a b2 h⟩
+    refine' tendsto.div_const (tendsto.neg _) _
+    exact tendsto_exp_at_bot.comp (tendsto_id.neg_const_mul_at_top (Right.neg_neg_iff.2 h))
+  refine' integrable_on_Ioi_deriv_of_nonneg' (fun x hx => _) (fun x hx => (exp_pos _).le) this
+  simpa [h.ne'] using ((hasDerivAt_id x).const_mul b).neg.exp.neg.div_const b
 #align exp_neg_integrable_on_Ioi expNegIntegrableOnIoi
 
 /-- If `f` is continuous on `[a, ∞)`, and is `O (exp (-b * x))` at `∞` for some `b > 0`, then
Diff
@@ -65,7 +65,7 @@ theorem integrableOfIsOExpNeg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b) (h1 : C
     (h2 : f =O[atTop] fun x => exp (-b * x)) : IntegrableOn f (Ioi a) :=
   by
   cases' h2.is_O_with with c h3
-  rw [Asymptotics.isOWith_iff, eventually_at_top] at h3
+  rw [Asymptotics.isBigOWith_iff, eventually_at_top] at h3
   cases' h3 with r bdr
   let v := max a r
   -- show integrable on `(a, v]` from continuity

Changes in mathlib4

mathlib3
mathlib4
feat: bounding integrals by asymptotics, part 2: corollaries (#10388)

Shortcuts for linearly ordered domains and/or continuous functions. As an example, I golf the existing integrable_of_isBigO_exp_neg.

Another example usage: https://github.com/AlexKontorovich/PrimeNumberTheoremAnd/blob/1909a40253607bd2df18a738fc504fe81b132974/PrimeNumberTheoremAnd/PerronFormula.lean#L414-L436

Co-authored-by: L Lllvvuu <git@llllvvuu.dev>

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2022 David Loeffler. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
 -/
+import Mathlib.MeasureTheory.Integral.Asymptotics
 import Mathlib.MeasureTheory.Integral.IntervalIntegral
 import Mathlib.MeasureTheory.Integral.IntegralEqImproper
 
@@ -38,31 +39,10 @@ theorem exp_neg_integrableOn_Ioi (a : ℝ) {b : ℝ} (h : 0 < b) :
 /-- If `f` is continuous on `[a, ∞)`, and is `O (exp (-b * x))` at `∞` for some `b > 0`, then
 `f` is integrable on `(a, ∞)`. -/
 theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
-    (h1 : ContinuousOn f (Ici a)) (h2 : f =O[atTop] fun x => exp (-b * x)) :
-    IntegrableOn f (Ioi a) := by
-  cases' h2.isBigOWith with c h3
-  rw [Asymptotics.isBigOWith_iff, eventually_atTop] at h3
-  cases' h3 with r bdr
-  let v := max a r
-  -- show integrable on `(a, v]` from continuity
-  have int_left : IntegrableOn f (Ioc a v) := by
-    rw [← intervalIntegrable_iff_integrableOn_Ioc_of_le (le_max_left a r)]
-    have u : Icc a v ⊆ Ici a := Icc_subset_Ici_self
-    exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
-  suffices IntegrableOn f (Ioi v) by
-    have t := integrableOn_union.mpr ⟨int_left, this⟩
-    simpa only [v, Ioc_union_Ioi_eq_Ioi, le_max_iff, le_refl, true_or_iff] using t
-  -- now show integrable on `(v, ∞)` from asymptotic
-  constructor
-  · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).aestronglyMeasurable measurableSet_Ioi
-  have : HasFiniteIntegral (fun x : ℝ => c * exp (-b * x)) (volume.restrict (Ioi v)) :=
-    (exp_neg_integrableOn_Ioi v h0).hasFiniteIntegral.const_mul c
-  apply this.mono
-  refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
-  filter_upwards with x h1x
-  rw [norm_mul, norm_eq_abs]
-  rw [mem_Ioi] at h1x
-  specialize bdr x ((le_max_right a r).trans h1x.le)
-  exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
+    (hf : ContinuousOn f (Ici a)) (ho : f =O[atTop] fun x => exp (-b * x)) :
+    IntegrableOn f (Ioi a) :=
+  integrableOn_Ici_iff_integrableOn_Ioi.mp <|
+    (hf.locallyIntegrableOn measurableSet_Ici).integrableOn_of_isBigO_atTop
+    ho ⟨Ioi b, Ioi_mem_atTop b, exp_neg_integrableOn_Ioi b h0⟩
 set_option linter.uppercaseLean3 false in
 #align integrable_of_is_O_exp_neg integrable_of_isBigO_exp_neg
chore: golf using filter_upwards (#11208)

This is presumably not exhaustive, but covers about a hundred instances.

Style opinions (e.g., why a particular change is great/not a good idea) are very welcome; I'm still forming my own.

Diff
@@ -59,7 +59,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
     (exp_neg_integrableOn_Ioi v h0).hasFiniteIntegral.const_mul c
   apply this.mono
   refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
-  refine' ae_of_all _ fun x h1x => _
+  filter_upwards with x h1x
   rw [norm_mul, norm_eq_abs]
   rw [mem_Ioi] at h1x
   specialize bdr x ((le_max_right a r).trans h1x.le)
chore: more backporting of simp changes from #10995 (#11001)

Co-authored-by: Patrick Massot <patrickmassot@free.fr> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -51,7 +51,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
     exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
   suffices IntegrableOn f (Ioi v) by
     have t := integrableOn_union.mpr ⟨int_left, this⟩
-    simpa only [Ioc_union_Ioi_eq_Ioi, le_max_iff, le_refl, true_or_iff] using t
+    simpa only [v, Ioc_union_Ioi_eq_Ioi, le_max_iff, le_refl, true_or_iff] using t
   -- now show integrable on `(v, ∞)` from asymptotic
   constructor
   · exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).aestronglyMeasurable measurableSet_Ioi
feat: non-integrability results of derivatives on [a, +oo) (#8712)

We have in the library the lemma not_intervalIntegrable_of_tendsto_norm_atTop_of_deriv_isBigO_filter, saying that if a function tends to infinity at a point in an interval [a, b], then its derivative is not interval-integrable on [a, b]. We generalize this result to allow for any set instead of [a, b], and apply it to half-infinite intervals.

In particular, we characterize integrability of x^s on [a, +oo), and deduce that x^s is never integrable on [0, +oo). This makes it possible to remove one assumption in Lemma mellin_comp_rpow on the Mellin transform.

Diff
@@ -46,7 +46,7 @@ theorem integrable_of_isBigO_exp_neg {f : ℝ → ℝ} {a b : ℝ} (h0 : 0 < b)
   let v := max a r
   -- show integrable on `(a, v]` from continuity
   have int_left : IntegrableOn f (Ioc a v) := by
-    rw [← intervalIntegrable_iff_integrable_Ioc_of_le (le_max_left a r)]
+    rw [← intervalIntegrable_iff_integrableOn_Ioc_of_le (le_max_left a r)]
     have u : Icc a v ⊆ Ici a := Icc_subset_Ici_self
     exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
   suffices IntegrableOn f (Ioi v) by
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 David Loeffler. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Loeffler
-
-! This file was ported from Lean 3 source module measure_theory.integral.exp_decay
-! leanprover-community/mathlib commit d4817f8867c368d6c5571f7379b3888aaec1d95a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.MeasureTheory.Integral.IntervalIntegral
 import Mathlib.MeasureTheory.Integral.IntegralEqImproper
 
+#align_import measure_theory.integral.exp_decay from "leanprover-community/mathlib"@"d4817f8867c368d6c5571f7379b3888aaec1d95a"
+
 /-!
 # Integrals with exponential decay at ∞
 
feat: port MeasureTheory.Integral.ExpDecay (#4905)

Dependencies 12 + 1092

1093 files ported (98.9%)
497969 lines ported (98.9%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file