Theorem: integrable_of_isBigO_exp_neg
File: Mathlib/MeasureTheory/Integral/ExpDecay.lean

tactic: cases' h2.isBigOWith with c h3
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
⊢ IntegrableOn f (Ioi a)

tactic: rw [Asymptotics.isBigOWith_iff, eventually_atTop] at h3
state_before: case intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c : ℝ
h3 : Asymptotics.IsBigOWith c atTop f fun x => exp (-b * x)
⊢ IntegrableOn f (Ioi a)

tactic: cases' h3 with r bdr
state_before: case intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c : ℝ
h3 : ∃ a, ∀ (b_1 : ℝ), b_1 ≥ a → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
⊢ IntegrableOn f (Ioi a)

tactic: let v := max a r
state_before: case intro.intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
⊢ IntegrableOn f (Ioi a)

tactic: have int_left : IntegrableOn f (Ioc a v) := 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).intervalIntegrable_of_Icc (le_max_left a r)
state_before: case intro.intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
⊢ IntegrableOn f (Ioi a)

tactic: 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
state_before: case intro.intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
⊢ IntegrableOn f (Ioi a)

tactic: constructor
state_before: case intro.intro
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
⊢ IntegrableOn f (Ioi v)

tactic: have : HasFiniteIntegral (fun x : ℝ => c * exp (-b * x)) (volume.restrict (Ioi v)) :=
  (exp_neg_integrableOn_Ioi v h0).hasFiniteIntegral.const_mul c
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
⊢ HasFiniteIntegral f

tactic: apply this.mono
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
⊢ HasFiniteIntegral f

tactic: refine' (ae_restrict_iff' measurableSet_Ioi).mpr _
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
⊢ ∀ᵐ (a : ℝ) ∂Measure.restrict volume (Ioi v), ‖f a‖ ≤ ‖c * exp (-b * a)‖

tactic: refine' ae_of_all _ fun x h1x => _
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
⊢ ∀ᵐ (x : ℝ), x ∈ Ioi v → ‖f x‖ ≤ ‖c * exp (-b * x)‖

tactic: rw [norm_mul, norm_eq_abs]
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
x : ℝ
h1x : x ∈ Ioi v
⊢ ‖f x‖ ≤ ‖c * exp (-b * x)‖

tactic: rw [mem_Ioi] at h1x
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
x : ℝ
h1x : x ∈ Ioi v
⊢ abs (f x) ≤ ‖c‖ * ‖exp (-b * x)‖

tactic: specialize bdr x ((le_max_right a r).trans h1x.le)
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
x : ℝ
h1x : v < x
⊢ abs (f x) ≤ ‖c‖ * ‖exp (-b * x)‖

tactic: exact bdr.trans (mul_le_mul_of_nonneg_right (le_abs_self c) (norm_nonneg _))
state_before: case intro.intro.right
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : HasFiniteIntegral fun x => c * exp (-b * x)
x : ℝ
h1x : v < x
bdr : ‖f x‖ ≤ c * ‖exp (-b * x)‖
⊢ abs (f x) ≤ ‖c‖ * ‖exp (-b * x)‖

tactic: rw [← intervalIntegrable_iff_integrable_Ioc_of_le (le_max_left a r)]
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
⊢ IntegrableOn f (Ioc a v)

tactic: have u : Icc a v ⊆ Ici a := Icc_subset_Ici_self
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
⊢ IntervalIntegrable f volume a (max a r)

tactic: exact (h1.mono u).intervalIntegrable_of_Icc (le_max_left a r)
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
u : Icc a v ⊆ Ici a
⊢ IntervalIntegrable f volume a (max a r)

tactic: have t := integrableOn_union.mpr ⟨int_left, this⟩
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : IntegrableOn f (Ioi v)
⊢ IntegrableOn f (Ioi a)

tactic: simpa only [Ioc_union_Ioi_eq_Ioi, le_max_iff, le_refl, true_or_iff] using t
state_before: f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
this : IntegrableOn f (Ioi v)
t : IntegrableOn f (Ioc a v ∪ Ioi v)
⊢ IntegrableOn f (Ioi a)

tactic: exact (h1.mono <| Ioi_subset_Ici <| le_max_left a r).aestronglyMeasurable measurableSet_Ioi
state_before: case intro.intro.left
f : ℝ → ℝ
a b : ℝ
h0 : 0 < b
h1 : ContinuousOn f (Ici a)
h2 : f =O[atTop] fun x => exp (-b * x)
c r : ℝ
bdr : ∀ (b_1 : ℝ), b_1 ≥ r → ‖f b_1‖ ≤ c * ‖exp (-b * b_1)‖
v : ℝ := max a r
int_left : IntegrableOn f (Ioc a v)
⊢ AEStronglyMeasurable f (Measure.restrict volume (Ioi v))