Skip to main content
AlexKontorovich/PrimeNumberTheoremAnd
Source indexedtheorem · leanprover/lean4:v4.32.0

Kadiri.kadiriTestFn_decay

PrimeNumberTheoremAnd.IEANTN.Kadiri · PrimeNumberTheoremAnd/IEANTN/Kadiri.lean:2268 to 2341

Mathematical statement

Exact Lean statement

@[blueprint
  "kadiri-test-fn-decay"
  (title := "Decay condition (B) for the Kadiri test function")
  (statement := /-- For $f$ satisfying $(H_1)$ of \ref{kadiri-prop-2-1} and
  $s \in \mathbb{C}$ with $\Re s > 1$, the Kadiri test function
  $\varphi$ satisfies
  decay condition (B) of \ref{kadiri-thm-3-1-q1}: there exists $b > 0$
  (any $0 < b < \Re s - 1$ works) such that both $\varphi(x;\, s) e^{x/2}$ and
  $\varphi'(x;\, s) e^{x/2}$ are $O(e^{-(1/2 + b)|x|})$ as $|x| \to \infty$. -/)
  (proof := /-- For $x < 0$ both $\varphi(x;\, s)$ and $\varphi'(x;\, s)$ are identically
  $0$, so the bound holds trivially at $-\infty$. For $x > d$ (above the support of $f$),
  $\varphi(x;\, s) = f(0)\, e^{-x s}$ and $\varphi'(x;\, s) = -s\, f(0)\, e^{-x s}$, so
  $|\varphi(x;\, s) e^{x/2}| = |f(0)|\, e^{-x(\Re s - 1/2)}$ and similarly for the
  derivative with an extra factor $|s|$; both are $O(e^{-(1/2 + b) x})$ as $x \to +\infty$
  precisely when $\Re s - 1/2 \geq 1/2 + b$, i.e.\ $b \leq \Re s - 1$. Take any
  $0 < b < \Re s - 1$. To be formalised. -/)
  (latexEnv := "lemma")
  (discussion := 1485)]
theorem kadiriTestFn_decay {d : ℝ} {f : ℝ → ℝ} (hf_supp : tsupport f ⊆ .Ico 0 d)
    {s : ℂ} (hs : 1 < s.re) :
    ∃ b > 0,
      ((fun x : ℝ ↦ kadiriTestFn f s x * exp ((x : ℂ) / 2))
          =O[Filter.cocompact ℝ] fun x : ℝ ↦ Real.exp (-(1/2 + b) * |x|)) ∧
      ((fun x : ℝ ↦ deriv (kadiriTestFn f s) x * exp ((x : ℂ) / 2))
          =O[Filter.cocompact ℝ] fun x : ℝ ↦ Real.exp (-(1/2 + b) * |x|))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "kadiri-test-fn-decay"  (title := "Decay condition (B) for the Kadiri test function")  (statement := /-- For $f$ satisfying $(H_1)$ of \ref{kadiri-prop-2-1} and  $s \in \mathbb{C}$ with $\Re s > 1$, the Kadiri test function  $\varphi$ satisfies  decay condition (B) of \ref{kadiri-thm-3-1-q1}: there exists $b > 0$  (any $0 < b < \Re s - 1$ works) such that both $\varphi(x;\, s) e^{x/2}$ and  $\varphi'(x;\, s) e^{x/2}$ are $O(e^{-(1/2 + b)|x|})$ as $|x| \to \infty$. -/)  (proof := /-- For $x < 0$ both $\varphi(x;\, s)$ and $\varphi'(x;\, s)$ are identically  $0$, so the bound holds trivially at $-\infty$. For $x > d$ (above the support of $f$),  $\varphi(x;\, s) = f(0)\, e^{-x s}$ and $\varphi'(x;\, s) = -s\, f(0)\, e^{-x s}$, so  $|\varphi(x;\, s) e^{x/2}| = |f(0)|\, e^{-x(\Re s - 1/2)}$ and similarly for the  derivative with an extra factor $|s|$; both are $O(e^{-(1/2 + b) x})$ as $x \to +\infty$  precisely when $\Re s - 1/2 \geq 1/2 + b$, i.e.\ $b \leq \Re s - 1$. Take any  $0 < b < \Re s - 1$. To be formalised. -/)  (latexEnv := "lemma")  (discussion := 1485)]theorem kadiriTestFn_decay {d : } {f :   } (hf_supp : tsupport f  .Ico 0 d)    {s : ℂ} (hs : 1 < s.re) :     b > 0,      ((fun x :   kadiriTestFn f s x * exp ((x : ℂ) / 2))          =O[Filter.cocompact ] fun x :   Real.exp (-(1/2 + b) * |x|))       ((fun x :   deriv (kadiriTestFn f s) x * exp ((x : ℂ) / 2))          =O[Filter.cocompact ] fun x :   Real.exp (-(1/2 + b) * |x|)) := by  have hb : (0 : ) < (s.re - 1) / 2 := by linarith  have hre :  x : , (-s * (x : ℂ)).re = -(s.re * x) := fun x => by    simp [Complex.mul_re]  have hre2 :  x : , ((x : ℂ) / 2).re = x / 2 := fun x => by    have : (x : ℂ) / 2 = ((x / 2 : ) : ℂ) := by push_cast; ring    rw [this, Complex.ofReal_re]  have hexp :  x : , max d 0 < x       -(s.re * x) + x / 2  -(1 / 2 + (s.re - 1) / 2) * |x| := by    intro x hx    have hx0 : (0 : ) < x := (le_max_right d 0).trans_lt hx    rw [abs_of_pos hx0]    nlinarith [mul_nonneg hx0.le (sub_nonneg.2 hs.le)]  refine (s.re - 1) / 2, hb, ?_, ?_  · rw [cocompact_eq_atBot_atTop, Asymptotics.isBigO_sup]    constructor    · have h0 : (fun x :   kadiriTestFn f s x * exp ((x : ℂ) / 2))          =ᶠ[Filter.atBot] fun _ => (0 : ℂ) := by        filter_upwards [Filter.eventually_lt_atBot (0 : )] with x hx        simp [kadiriTestFn, not_le_of_gt hx]      exact h0.trans_isBigO (Asymptotics.isBigO_zero _ _)    · rw [Asymptotics.isBigO_iff]      refine ‖(f 0 : ℂ)‖, ?_      filter_upwards [Filter.eventually_gt_atTop (max d 0)] with x hx      have hx0 : (0 : ) < x := (le_max_right d 0).trans_lt hx      have hfx : f x = 0 :=        eq_zero_of_tsupport_subset_Ico_right hf_supp ((le_max_left d 0).trans_lt hx).le      have hval : kadiriTestFn f s x = (f 0 : ℂ) * exp (-s * (x : ℂ)) := by        simp [kadiriTestFn, hx0.le, hfx]      rw [hval, mul_assoc,  Complex.exp_add, norm_mul, Complex.norm_exp,        Real.norm_eq_abs, Real.abs_exp, Complex.add_re, hre, hre2]      exact mul_le_mul_of_nonneg_left (Real.exp_le_exp.2 (hexp x hx)) (norm_nonneg _)  · rw [cocompact_eq_atBot_atTop, Asymptotics.isBigO_sup]    constructor    · have h0 : (fun x :   deriv (kadiriTestFn f s) x * exp ((x : ℂ) / 2))          =ᶠ[Filter.atBot] fun _ => (0 : ℂ) := by        filter_upwards [Filter.eventually_lt_atBot (0 : )] with x hx        simp [kadiriTestFn_H1_deriv_of_lt_zero s hx]      exact h0.trans_isBigO (Asymptotics.isBigO_zero _ _)    · rw [Asymptotics.isBigO_iff]      refine ‖(f 0 : ℂ)‖ * ‖s‖, ?_      filter_upwards [Filter.eventually_gt_atTop (max d 0)] with x hx      rw [kadiriTestFn_deriv_of_gt_max hf_supp s hx]      have hnorm : ‖(f 0 : ℂ) * (-s * exp (-s * (x : ℂ))) * exp ((x : ℂ) / 2)‖ =          ‖(f 0 : ℂ)‖ * ‖s‖ * Real.exp (-(s.re * x) + x / 2) := by        rw [mul_assoc, mul_assoc,  Complex.exp_add, norm_mul, norm_mul, norm_neg,          Complex.norm_exp, Complex.add_re, hre, hre2]        ring      rw [hnorm, Real.norm_eq_abs, Real.abs_exp]      exact mul_le_mul_of_nonneg_left (Real.exp_le_exp.2 (hexp x hx)) (by positivity)