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

Commit 9e6d4ae

Browse files
committed
feat(analysis/mellin_transform): Mellin transforms (#18822)
This PR defines the Mellin transform of a locally integrable function, and proves it is holomorphic on a suitable vertical strip.
1 parent b599f4e commit 9e6d4ae

File tree

2 files changed

+332
-0
lines changed

2 files changed

+332
-0
lines changed

src/analysis/mellin_transform.lean

Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
/-
2+
Copyright (c) 2023 David Loeffler. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: David Loeffler
5+
-/
6+
7+
import analysis.special_functions.improper_integrals
8+
import analysis.calculus.parametric_integral
9+
10+
/-! # The Mellin transform
11+
12+
We define the Mellin transform of a locally integrable function on `Ioi 0`, and show it is
13+
differentiable in a suitable vertical strip.
14+
15+
## Main statements
16+
17+
- `mellin` : the Mellin transform `∫ (t : ℝ) in Ioi 0, t ^ (s - 1) • f t`,
18+
where `s` is a complex number.
19+
- `mellin_differentiable_at_of_is_O_rpow` : if `f` is `O(x ^ (-a))` at infinity, and
20+
`O(x ^ (-b))` at 0, then `mellin f` is holomorphic on the domain `b < re s < a`.
21+
22+
-/
23+
24+
open measure_theory set filter asymptotics topological_space
25+
26+
open_locale topology
27+
28+
noncomputable theory
29+
30+
section defs
31+
32+
variables {E : Type*} [normed_add_comm_group E]
33+
34+
/-- The Mellin transform of a function `f` (for a complex exponent `s`), defined as the integral of
35+
`t ^ (s - 1) • f` over `Ioi 0`. -/
36+
def mellin [normed_space ℂ E] [complete_space E] (f : ℝ → E) (s : ℂ) : E :=
37+
∫ t : ℝ in Ioi 0, (t : ℂ) ^ (s - 1) • f t
38+
39+
end defs
40+
41+
open real complex (hiding exp log abs_of_nonneg)
42+
43+
variables {E : Type*} [normed_add_comm_group E]
44+
45+
section mellin_convergent
46+
/-! ## Convergence of Mellin transform integrals -/
47+
48+
/-- Auxiliary lemma to reduce convergence statements from vector-valued functions to real
49+
scalar-valued functions. -/
50+
lemma mellin_convergent_iff_norm [normed_space ℂ E] {f : ℝ → E}
51+
{T : set ℝ} (hT : T ⊆ Ioi 0) (hT' : measurable_set T)
52+
(hfc : ae_strongly_measurable f $ volume.restrict $ Ioi 0) {s : ℂ} :
53+
integrable_on (λ t : ℝ, (t : ℂ) ^ (s - 1) • f t) T
54+
↔ integrable_on (λ t : ℝ, t ^ (s.re - 1) * ‖f t‖) T :=
55+
begin
56+
have : ae_strongly_measurable (λ t : ℝ, (t : ℂ) ^ (s - 1) • f t) (volume.restrict T),
57+
{ refine ((continuous_at.continuous_on _).ae_strongly_measurable hT').smul (hfc.mono_set hT),
58+
exact λ t ht, continuous_at_of_real_cpow_const _ _ (or.inr $ ne_of_gt (hT ht)) },
59+
rw [integrable_on, ←integrable_norm_iff this, ←integrable_on],
60+
refine integrable_on_congr_fun (λ t ht, _) hT',
61+
simp_rw [norm_smul, complex.norm_eq_abs, abs_cpow_eq_rpow_re_of_pos (hT ht), sub_re, one_re],
62+
end
63+
64+
/-- If `f` is a locally integrable real-valued function which is `O(x ^ (-a))` at `∞`, then for any
65+
`s < a`, its Mellin transform converges on some neighbourhood of `+∞`. -/
66+
lemma mellin_convergent_top_of_is_O
67+
{f : ℝ → ℝ} (hfc : ae_strongly_measurable f $ volume.restrict (Ioi 0))
68+
{a s : ℝ} (hf : is_O at_top f (λ t, t ^ (-a))) (hs : s < a) :
69+
∃ (c : ℝ), 0 < c ∧ integrable_on (λ t : ℝ, t ^ (s - 1) * f t) (Ioi c) :=
70+
begin
71+
obtain ⟨d, hd, hd'⟩ := hf.exists_pos,
72+
simp_rw [is_O_with, eventually_at_top] at hd',
73+
obtain ⟨e, he⟩ := hd',
74+
have he' : 0 < max e 1, from zero_lt_one.trans_le (le_max_right _ _),
75+
refine ⟨max e 1, he', _, _⟩,
76+
{ refine ae_strongly_measurable.mul _ (hfc.mono_set (Ioi_subset_Ioi he'.le)),
77+
refine (continuous_at.continuous_on (λ t ht, _)).ae_strongly_measurable measurable_set_Ioi,
78+
exact continuous_at_rpow_const _ _ (or.inl $ (he'.trans ht).ne') },
79+
{ have : ∀ᵐ (t : ℝ) ∂volume.restrict (Ioi $ max e 1),
80+
‖t ^ (s - 1) * f t‖ ≤ t ^ ((s - 1) + -a) * d,
81+
{ refine (ae_restrict_iff' measurable_set_Ioi).mpr (ae_of_all _ (λ t ht, _)),
82+
have ht' : 0 < t, from he'.trans ht,
83+
rw [norm_mul, rpow_add ht', ←norm_of_nonneg (rpow_nonneg_of_nonneg ht'.le (-a)),
84+
mul_assoc, mul_comm _ d, norm_of_nonneg (rpow_nonneg_of_nonneg ht'.le _)],
85+
exact mul_le_mul_of_nonneg_left (he t ((le_max_left e 1).trans_lt ht).le)
86+
(rpow_pos_of_pos ht' _).le },
87+
refine (has_finite_integral.mul_const _ _).mono' this,
88+
exact (integrable_on_Ioi_rpow_of_lt (by linarith) he').has_finite_integral }
89+
end
90+
91+
/-- If `f` is a locally integrable real-valued function which is `O(x ^ (-b))` at `0`, then for any
92+
`b < s`, its Mellin transform converges on some right neighbourhood of `0`. -/
93+
lemma mellin_convergent_zero_of_is_O
94+
{b : ℝ} {f : ℝ → ℝ} (hfc : ae_strongly_measurable f $ volume.restrict (Ioi 0))
95+
(hf : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) {s : ℝ} (hs : b < s) :
96+
∃ (c : ℝ), 0 < c ∧ integrable_on (λ t : ℝ, t ^ (s - 1) * f t) (Ioc 0 c) :=
97+
begin
98+
obtain ⟨d, hd, hd'⟩ := hf.exists_pos,
99+
simp_rw [is_O_with, eventually_nhds_within_iff, metric.eventually_nhds_iff, gt_iff_lt] at hd',
100+
obtain ⟨ε, hε, hε'⟩ := hd',
101+
refine ⟨ε, hε, integrable_on_Ioc_iff_integrable_on_Ioo.mpr ⟨_, _⟩⟩,
102+
{ refine ae_strongly_measurable.mul _ (hfc.mono_set Ioo_subset_Ioi_self),
103+
refine (continuous_at.continuous_on (λ t ht, _)).ae_strongly_measurable measurable_set_Ioo,
104+
exact continuous_at_rpow_const _ _ (or.inl ht.1.ne') },
105+
{ apply has_finite_integral.mono',
106+
{ show has_finite_integral (λ t, d * t ^ (s - b - 1)) _,
107+
refine (integrable.has_finite_integral _).const_mul _,
108+
rw [←integrable_on, ←integrable_on_Ioc_iff_integrable_on_Ioo,
109+
←interval_integrable_iff_integrable_Ioc_of_le hε.le],
110+
exact interval_integral.interval_integrable_rpow' (by linarith) },
111+
{ refine (ae_restrict_iff' measurable_set_Ioo).mpr (eventually_of_forall $ λ t ht, _),
112+
rw [mul_comm, norm_mul],
113+
specialize hε' _ ht.1,
114+
{ rw [dist_eq_norm, sub_zero, norm_of_nonneg (le_of_lt ht.1)],
115+
exact ht.2 },
116+
{ refine (mul_le_mul_of_nonneg_right hε' (norm_nonneg _)).trans _,
117+
simp_rw [norm_of_nonneg (rpow_nonneg_of_nonneg (le_of_lt ht.1) _), mul_assoc],
118+
refine mul_le_mul_of_nonneg_left (le_of_eq _) hd.le,
119+
rw ←rpow_add ht.1,
120+
congr' 1,
121+
abel } } },
122+
end
123+
124+
/-- If `f` is a locally integrable real-valued function on `Ioi 0` which is `O(x ^ (-a))` at `∞`
125+
and `O(x ^ (-b))` at `0`, then its Mellin transform integral converges for `b < s < a`. -/
126+
lemma mellin_convergent_of_is_O_scalar
127+
{a b : ℝ} {f : ℝ → ℝ} {s : ℝ}
128+
(hfc : locally_integrable_on f $ Ioi 0)
129+
(hf_top : is_O at_top f (λ t, t ^ (-a))) (hs_top : s < a)
130+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s) :
131+
integrable_on (λ t : ℝ, t ^ (s - 1) * f t) (Ioi 0) :=
132+
begin
133+
obtain ⟨c1, hc1, hc1'⟩ := mellin_convergent_top_of_is_O hfc.ae_strongly_measurable hf_top hs_top,
134+
obtain ⟨c2, hc2, hc2'⟩ := mellin_convergent_zero_of_is_O hfc.ae_strongly_measurable hf_bot hs_bot,
135+
have : Ioi 0 = Ioc 0 c2 ∪ Ioc c2 c1 ∪ Ioi c1,
136+
{ rw [union_assoc, Ioc_union_Ioi (le_max_right _ _), Ioc_union_Ioi
137+
((min_le_left _ _).trans (le_max_right _ _)), min_eq_left (lt_min hc2 hc1).le] },
138+
rw [this, integrable_on_union, integrable_on_union],
139+
refine ⟨⟨hc2', integrable_on_Icc_iff_integrable_on_Ioc.mp _⟩, hc1'⟩,
140+
refine (hfc.continuous_on_mul _ is_open_Ioi).integrable_on_compact_subset
141+
(λ t ht, (hc2.trans_le ht.1 : 0 < t)) is_compact_Icc,
142+
exact continuous_at.continuous_on (λ t ht, continuous_at_rpow_const _ _ $ or.inl $ ne_of_gt ht),
143+
end
144+
145+
lemma mellin_convergent_of_is_O_rpow [normed_space ℂ E]
146+
{a b : ℝ} {f : ℝ → E} {s : ℂ}
147+
(hfc : locally_integrable_on f $ Ioi 0)
148+
(hf_top : is_O at_top f (λ t, t ^ (-a))) (hs_top : s.re < a)
149+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s.re) :
150+
integrable_on (λ t : ℝ, (t : ℂ) ^ (s - 1) • f t) (Ioi 0) :=
151+
begin
152+
rw mellin_convergent_iff_norm (subset_refl _) measurable_set_Ioi
153+
hfc.ae_strongly_measurable,
154+
exact mellin_convergent_of_is_O_scalar
155+
hfc.norm hf_top.norm_left hs_top hf_bot.norm_left hs_bot,
156+
end
157+
158+
end mellin_convergent
159+
160+
section mellin_diff
161+
162+
/-- If `f` is `O(x ^ (-a))` as `x → +∞`, then `log • f` is `O(x ^ (-b))` for every `b < a`. -/
163+
lemma is_O_rpow_top_log_smul [normed_space ℝ E] {a b : ℝ} {f : ℝ → E}
164+
(hab : b < a) (hf : is_O at_top f (λ t, t ^ (-a))) :
165+
is_O at_top (λ t : ℝ, log t • f t) (λ t, t ^ (-b)) :=
166+
begin
167+
refine ((is_o_log_rpow_at_top (sub_pos.mpr hab)).is_O.smul hf).congr'
168+
(eventually_of_forall (λ t, by refl))
169+
((eventually_gt_at_top 0).mp (eventually_of_forall (λ t ht, _))),
170+
rw [smul_eq_mul, ←rpow_add ht, ←sub_eq_add_neg, sub_eq_add_neg a, add_sub_cancel'],
171+
end
172+
173+
/-- If `f` is `O(x ^ (-a))` as `x → 0`, then `log • f` is `O(x ^ (-b))` for every `a < b`. -/
174+
lemma is_O_rpow_zero_log_smul [normed_space ℝ E] {a b : ℝ} {f : ℝ → E}
175+
(hab : a < b) (hf : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-a))) :
176+
is_O (𝓝[Ioi 0] 0) (λ t : ℝ, log t • f t) (λ t, t ^ (-b)) :=
177+
begin
178+
have : is_o (𝓝[Ioi 0] 0) log (λ t : ℝ, t ^ (a - b)),
179+
{ refine ((is_o_log_rpow_at_top (sub_pos.mpr hab)).neg_left.comp_tendsto
180+
tendsto_inv_zero_at_top).congr'
181+
(eventually_nhds_within_iff.mpr $ eventually_of_forall (λ t ht, _))
182+
(eventually_nhds_within_iff.mpr $ eventually_of_forall (λ t ht, _)),
183+
{ simp_rw [function.comp_app, ←one_div, log_div one_ne_zero (ne_of_gt ht), real.log_one,
184+
zero_sub, neg_neg] },
185+
{ simp_rw [function.comp_app, inv_rpow (le_of_lt ht), ←rpow_neg (le_of_lt ht), neg_sub] } },
186+
refine (this.is_O.smul hf).congr'
187+
(eventually_of_forall (λ t, by refl))
188+
(eventually_nhds_within_iff.mpr (eventually_of_forall (λ t ht, _))),
189+
simp_rw [smul_eq_mul, ←rpow_add ht],
190+
congr' 1,
191+
abel,
192+
end
193+
194+
/-- Suppose `f` is locally integrable on `(0, ∞)`, is `O(x ^ (-a))` as `x → ∞`, and is
195+
`O(x ^ (-b))` as `x → 0`. Then its Mellin transform is differentiable on the domain `b < re s < a`,
196+
with derivative equal to the Mellin transform of `log • f`. -/
197+
theorem mellin_has_deriv_of_is_O_rpow [complete_space E] [normed_space ℂ E]
198+
{a b : ℝ} {f : ℝ → E} {s : ℂ}
199+
(hfc : locally_integrable_on f $ Ioi 0)
200+
(hf_top : is_O at_top f (λ t, t ^ (-a))) (hs_top : s.re < a)
201+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s.re) :
202+
has_deriv_at (mellin f) (mellin (λ t, (log t : ℂ) • f t) s) s :=
203+
begin
204+
let F : ℂ → ℝ → E := λ z t, (t : ℂ) ^ (z - 1) • f t,
205+
let F' : ℂ → ℝ → E := λ z t, ((t : ℂ) ^ (z - 1) * log t) • f t,
206+
have hab : b < a := hs_bot.trans hs_top,
207+
-- A convenient radius of ball within which we can uniformly bound the derivative.
208+
obtain ⟨v, hv0, hv1, hv2⟩ : ∃ (v : ℝ), (0 < v) ∧ (v < s.re - b) ∧ (v < a - s.re),
209+
{ obtain ⟨w, hw1, hw2⟩ := exists_between (sub_pos.mpr hs_top),
210+
obtain ⟨w', hw1', hw2'⟩ := exists_between (sub_pos.mpr hs_bot),
211+
exact ⟨min w w', lt_min hw1 hw1',
212+
(min_le_right _ _).trans_lt hw2', (min_le_left _ _).trans_lt hw2⟩ },
213+
let bound : ℝ → ℝ := λ t : ℝ, (t ^ (s.re + v - 1) + t ^ (s.re - v - 1)) * |log t| * ‖f t‖,
214+
have h1 : ∀ᶠ (z : ℂ) in 𝓝 s, ae_strongly_measurable (F z) (volume.restrict $ Ioi 0),
215+
{ refine eventually_of_forall (λ z, ae_strongly_measurable.smul _ hfc.ae_strongly_measurable),
216+
refine continuous_on.ae_strongly_measurable _ measurable_set_Ioi,
217+
refine continuous_at.continuous_on (λ t ht, _),
218+
exact (continuous_at_of_real_cpow_const _ _ (or.inr $ ne_of_gt ht)), },
219+
have h2 : integrable_on (F s) (Ioi 0),
220+
{ exact mellin_convergent_of_is_O_rpow hfc hf_top hs_top hf_bot hs_bot },
221+
have h3 : ae_strongly_measurable (F' s) (volume.restrict $ Ioi 0),
222+
{ apply locally_integrable_on.ae_strongly_measurable,
223+
refine hfc.continuous_on_smul is_open_Ioi ((continuous_at.continuous_on (λ t ht, _)).mul _),
224+
{ exact continuous_at_of_real_cpow_const _ _ (or.inr $ ne_of_gt ht) },
225+
{ refine continuous_of_real.comp_continuous_on _,
226+
exact continuous_on_log.mono (subset_compl_singleton_iff.mpr not_mem_Ioi_self) } },
227+
have h4 : (∀ᵐ (t : ℝ) ∂volume.restrict (Ioi 0), ∀ (z : ℂ),
228+
z ∈ metric.ball s v → ‖F' z t‖ ≤ bound t),
229+
{ refine (ae_restrict_iff' measurable_set_Ioi).mpr (ae_of_all _ $ λ t ht z hz, _),
230+
simp_rw [bound, F', norm_smul, norm_mul, complex.norm_eq_abs (log _), complex.abs_of_real,
231+
mul_assoc],
232+
refine mul_le_mul_of_nonneg_right _ (mul_nonneg (abs_nonneg _) (norm_nonneg _)),
233+
rw [complex.norm_eq_abs, abs_cpow_eq_rpow_re_of_pos ht],
234+
rcases le_or_lt 1 t,
235+
{ refine le_add_of_le_of_nonneg (rpow_le_rpow_of_exponent_le h _)
236+
(rpow_nonneg_of_nonneg (zero_le_one.trans h) _),
237+
rw [sub_re, one_re, sub_le_sub_iff_right],
238+
rw [mem_ball_iff_norm, complex.norm_eq_abs] at hz,
239+
have hz' := (re_le_abs _).trans hz.le,
240+
rwa [sub_re, sub_le_iff_le_add'] at hz' },
241+
{ refine le_add_of_nonneg_of_le (rpow_pos_of_pos ht _).le
242+
(rpow_le_rpow_of_exponent_ge ht h.le _),
243+
rw [sub_re, one_re, sub_le_iff_le_add, sub_add_cancel],
244+
rw [mem_ball_iff_norm', complex.norm_eq_abs] at hz,
245+
have hz' := (re_le_abs _).trans hz.le,
246+
rwa [sub_re, sub_le_iff_le_add, ←sub_le_iff_le_add'] at hz', } },
247+
have h5 : integrable_on bound (Ioi 0),
248+
{ simp_rw [bound, add_mul, mul_assoc],
249+
suffices : ∀ {j : ℝ} (hj : b < j) (hj' : j < a),
250+
integrable_on (λ (t : ℝ), t ^ (j - 1) * (|log t| * ‖f t‖)) (Ioi 0) volume,
251+
{ refine integrable.add (this _ _) (this _ _),
252+
all_goals { linarith } },
253+
{ intros j hj hj',
254+
obtain ⟨w, hw1, hw2⟩ := exists_between hj,
255+
obtain ⟨w', hw1', hw2'⟩ := exists_between hj',
256+
refine mellin_convergent_of_is_O_scalar _ _ hw1' _ hw2,
257+
{ simp_rw mul_comm,
258+
refine hfc.norm.mul_continuous_on _ is_open_Ioi,
259+
refine continuous.comp_continuous_on continuous_abs (continuous_on_log.mono _),
260+
exact subset_compl_singleton_iff.mpr not_mem_Ioi_self },
261+
{ refine (is_O_rpow_top_log_smul hw2' hf_top).norm_left.congr' _ (eventually_eq.refl _ _),
262+
refine (eventually_gt_at_top 0).mp (eventually_of_forall (λ t ht, _)),
263+
simp only [norm_smul, real.norm_eq_abs] },
264+
{ refine (is_O_rpow_zero_log_smul hw1 hf_bot).norm_left.congr' _ (eventually_eq.refl _ _),
265+
refine eventually_nhds_within_iff.mpr (eventually_of_forall (λ t ht, _)),
266+
simp only [norm_smul, real.norm_eq_abs] } } },
267+
have h6 : ∀ᵐ (t : ℝ) ∂volume.restrict (Ioi 0), ∀ (y : ℂ),
268+
y ∈ metric.ball s v → has_deriv_at (λ (z : ℂ), F z t) (F' y t) y,
269+
{ dsimp only [F, F'],
270+
refine (ae_restrict_iff' measurable_set_Ioi).mpr (ae_of_all _ $ λ t ht y hy, _),
271+
have ht' : (t : ℂ) ≠ 0 := of_real_ne_zero.mpr (ne_of_gt ht),
272+
have u1 : has_deriv_at (λ z : ℂ, (t : ℂ) ^ (z - 1)) (t ^ (y - 1) * log t) y,
273+
{ convert ((has_deriv_at_id' y).sub_const 1).const_cpow (or.inl ht') using 1,
274+
rw of_real_log (le_of_lt ht),
275+
ring },
276+
exact u1.smul_const (f t) },
277+
simpa only [F', mellin, mul_smul] using
278+
(has_deriv_at_integral_of_dominated_loc_of_deriv_le hv0 h1 h2 h3 h4 h5 h6).2,
279+
end
280+
281+
/-- Suppose `f` is locally integrable on `(0, ∞)`, is `O(x ^ (-a))` as `x → ∞`, and is
282+
`O(x ^ (-b))` as `x → 0`. Then its Mellin transform is differentiable on the domain `b < re s < a`.
283+
-/
284+
lemma mellin_differentiable_at_of_is_O_rpow [complete_space E] [normed_space ℂ E]
285+
{a b : ℝ} {f : ℝ → E} {s : ℂ}
286+
(hfc : locally_integrable_on f $ Ioi 0)
287+
(hf_top : is_O at_top f (λ t, t ^ (-a))) (hs_top : s.re < a)
288+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s.re) :
289+
differentiable_at ℂ (mellin f) s :=
290+
(mellin_has_deriv_of_is_O_rpow hfc hf_top hs_top hf_bot hs_bot).differentiable_at
291+
292+
end mellin_diff
293+
294+
section exp_decay
295+
296+
/-- If `f` is locally integrable, decays exponentially at infinity, and is `O(x ^ (-b))` at 0, then
297+
its Mellin transform converges for `b < s.re`. -/
298+
lemma mellin_convergent_of_is_O_rpow_exp [normed_space ℂ E]
299+
{a b : ℝ} (ha : 0 < a) {f : ℝ → E} {s : ℂ}
300+
(hfc : locally_integrable_on f $ Ioi 0)
301+
(hf_top : is_O at_top f (λ t, exp (-a * t)))
302+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s.re) :
303+
integrable_on (λ t : ℝ, (t : ℂ) ^ (s - 1) • f t) (Ioi 0) :=
304+
mellin_convergent_of_is_O_rpow hfc (hf_top.trans (is_o_exp_neg_mul_rpow_at_top ha _).is_O)
305+
(lt_add_one _) hf_bot hs_bot
306+
307+
/-- If `f` is locally integrable, decays exponentially at infinity, and is `O(x ^ (-b))` at 0, then
308+
its Mellin transform is holomorphic on `b < s.re`. -/
309+
lemma mellin_differentiable_at_of_is_O_rpow_exp [complete_space E] [normed_space ℂ E]
310+
{a b : ℝ} (ha : 0 < a) {f : ℝ → E} {s : ℂ}
311+
(hfc : locally_integrable_on f $ Ioi 0)
312+
(hf_top : is_O at_top f (λ t, exp (-a * t)))
313+
(hf_bot : is_O (𝓝[Ioi 0] 0) f (λ t, t ^ (-b))) (hs_bot : b < s.re) :
314+
differentiable_at ℂ (mellin f) s :=
315+
mellin_differentiable_at_of_is_O_rpow hfc (hf_top.trans (is_o_exp_neg_mul_rpow_at_top ha _).is_O)
316+
(lt_add_one _) hf_bot hs_bot
317+
318+
end exp_decay

src/analysis/special_functions/pow.lean

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,6 +1180,20 @@ by simpa using is_o_zpow_exp_pos_mul_at_top k hb
11801180
lemma is_o_rpow_exp_at_top (s : ℝ) : (λ x : ℝ, x ^ s) =o[at_top] exp :=
11811181
by simpa only [one_mul] using is_o_rpow_exp_pos_mul_at_top s one_pos
11821182

1183+
/-- `exp (-a * x) = o(x ^ s)` as `x → ∞`, for any positive `a` and real `s`. -/
1184+
lemma is_o_exp_neg_mul_rpow_at_top {a : ℝ} (ha : 0 < a) (b : ℝ) :
1185+
is_o at_top (λ x : ℝ, exp (-a * x)) (λ x : ℝ, x ^ b) :=
1186+
begin
1187+
apply is_o_of_tendsto',
1188+
{ refine (eventually_gt_at_top 0).mp (eventually_of_forall $ λ t ht h, _),
1189+
rw rpow_eq_zero_iff_of_nonneg ht.le at h,
1190+
exact (ht.ne' h.1).elim },
1191+
{ refine (tendsto_exp_mul_div_rpow_at_top (-b) a ha).inv_tendsto_at_top.congr' _,
1192+
refine (eventually_ge_at_top 0).mp (eventually_of_forall $ λ t ht, _),
1193+
dsimp only,
1194+
rw [pi.inv_apply, inv_div, ←inv_div_inv, neg_mul, real.exp_neg, rpow_neg ht, inv_inv] }
1195+
end
1196+
11831197
lemma is_o_log_rpow_at_top {r : ℝ} (hr : 0 < r) : log =o[at_top] (λ x, x ^ r) :=
11841198
calc log =O[at_top] (λ x, r * log x) : is_O_self_const_mul _ hr.ne' _ _
11851199
... =ᶠ[at_top] (λ x, log (x ^ r)) :

0 commit comments

Comments
 (0)