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

CH2.shift_upwards

PrimeNumberTheoremAnd.IEANTN.CH2.CH2_part1 · PrimeNumberTheoremAnd/IEANTN/CH2/CH2_part1.lean:3443 to 3586

Mathematical statement

Exact Lean statement

@[blueprint
  "shift-upwards"
  (title := "Contour shifting upwards")
  (statement := /-- If $x < 0$, then
\begin{multline}\label{eq:1.5}
\widehat{\varphi^{\pm}_{\nu}}(x) = \int_{-1+i\infty}^{-1} \bigl(\Phi^{\pm,\circ}_{\nu}(z) - \Phi^{\pm,\star}_{\nu}(z)\bigr) e(-zx)\, dz \\
+ \int_{1}^{1+i\infty} \bigl(\Phi^{\pm,\circ}_{\nu}(z) + \Phi^{\pm,\star}_{\nu}(z)\bigr) e(-zx)\, dz + 2\int_0^{i\infty} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz.
\end{multline}
  -/)
  (proof := /-- Since $\Phi^{\pm,\circ}_{\nu}(z) \pm \Phi^{\pm,\star}_{\nu}(z)$ has no poles in the upper half plane, we can shift contours upwards, as we may: for $\Im z \to \infty$, $e(-zx) = e^{-2\pi i z x}$ decays exponentially on $\Im z$, while, by Lemma~1.3, $\Phi^{\pm,\circ}_{\nu}(z) \pm \Phi^{\pm,\star}_{\nu}(z)$ grows at most linearly, and so the contribution of a moving horizontal segment goes to $0$ as $\Im z \to \infty$. -/)
  (latexEnv := "sublemma")
  (discussion := 1080)]
theorem shift_upwards (ν ε : ℝ) (hν : ν > 0) (x : ℝ) (hx : x < 0) :
    Filter.atTop.Tendsto
      (fun T : ℝ ↦
        (I * ∫ t in Set.Icc 0 T,
          (Phi_circ ν ε (-1 + I * t) - Phi_star ν ε (-1 + I * t)) * E (-(-1 + I * t) * x))
        - (I * ∫ t in Set.Icc 0 T,
          (Phi_circ ν ε (1 + I * t) + Phi_star ν ε (1 + I * t)) * E (-(1 + I * t) * x))
        + (2 * I * ∫ t in Set.Icc 0 T,
          Phi_star ν ε (I * t) * E (-(I * t) * x)))
      (nhds (𝓕 (ϕ_pm ν ε) x))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "shift-upwards"  (title := "Contour shifting upwards")  (statement := /-- If $x < 0$, then\begin{multline}\label{eq:1.5}\widehat{\varphi^{\pm}_{\nu}}(x) = \int_{-1+i\infty}^{-1} \bigl(\Phi^{\pm,\circ}_{\nu}(z) - \Phi^{\pm,\star}_{\nu}(z)\bigr) e(-zx)\, dz \\+ \int_{1}^{1+i\infty} \bigl(\Phi^{\pm,\circ}_{\nu}(z) + \Phi^{\pm,\star}_{\nu}(z)\bigr) e(-zx)\, dz + 2\int_0^{i\infty} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz.\end{multline}  -/)  (proof := /-- Since $\Phi^{\pm,\circ}_{\nu}(z) \pm \Phi^{\pm,\star}_{\nu}(z)$ has no poles in the upper half plane, we can shift contours upwards, as we may: for $\Im z \to \infty$, $e(-zx) = e^{-2\pi i z x}$ decays exponentially on $\Im z$, while, by Lemma~1.3, $\Phi^{\pm,\circ}_{\nu}(z) \pm \Phi^{\pm,\star}_{\nu}(z)$ grows at most linearly, and so the contribution of a moving horizontal segment goes to $0$ as $\Im z \to \infty$. -/)  (latexEnv := "sublemma")  (discussion := 1080)]theorem shift_upwards (ν ε : ) (hν : ν > 0) (x : ) (hx : x < 0) :    Filter.atTop.Tendsto      (fun T :          (I * ∫ t in Set.Icc 0 T,          (Phi_circ ν ε (-1 + I * t) - Phi_star ν ε (-1 + I * t)) * E (-(-1 + I * t) * x))        - (I * ∫ t in Set.Icc 0 T,          (Phi_circ ν ε (1 + I * t) + Phi_star ν ε (1 + I * t)) * E (-(1 + I * t) * x))        + (2 * I * ∫ t in Set.Icc 0 T,          Phi_star ν ε (I * t) * E (-(I * t) * x)))      (nhds (𝓕 (ϕ_pm ν ε) x)) := by  have hlam : ν  0 := by linarith  set A : ℂ :=    ∫ t in Set.Icc (-1 : ) 0, (Phi_circ ν ε t - Phi_star ν ε t) * E (-t * x)  set B : ℂ :=    ∫ t in Set.Icc 0 (1 : ), (Phi_circ ν ε t + Phi_star ν ε t) * E (-t * x)  have hfourier : 𝓕 (ϕ_pm ν ε) x = A + B := by    simpa [A, B] using varphi_fourier_ident ν ε hlam x  have h_exp_decay (T : ) (t : ) : ‖E (-(t + I * T) * x)‖ = Real.exp (2 * π * x * T) := by    dsimp [E]    rw [Complex.norm_exp]    simp; ring_nf  have hAshift :      Filter.atTop.Tendsto        (fun T :            (I * ∫ t in Set.Icc 0 T,            (Phi_circ ν ε (-1 + I * t) - Phi_star ν ε (-1 + I * t)) * E (-(-1 + I * t) * x))          - (I * ∫ t in Set.Icc 0 T,            (Phi_circ ν ε (I * t) - Phi_star ν ε (I * t)) * E (-(I * t) * x)))        (nhds A) := by    let f : ℂ := fun z  (Phi_circ ν ε z - Phi_star ν ε z) * E (-z * x)    have h_anal (U : ) (hU : 0  U) : HolomorphicOn f (Rectangle (↑(-1:)) (↑(0:) + I * U)) := by      intro z hz; have hi : 0  z.im := by        have hz_im : z.im  Set.uIcc 0 U := by simpa [Rectangle] using hz.2        rw [Set.uIcc_of_le hU] at hz_im        exact hz_im.1      exact (AnalyticAt.sub (Phi_circ.analyticAt_of_im_nonneg ν ε z hν hi) (Phi_star.analyticAt_of_im_nonneg ν ε z hν hi)).differentiableAt.mul        (by dsimp [E]; fun_prop)        |>.differentiableWithinAt    have h_shift := tendsto_contour_shift (σ := -1) (σ' := 0) (f := f) h_anal ?_ ?_ ?_    · have hA_eq : ∫ x in (-1:)..0, f x = A := by        dsimp [A]        rw [intervalIntegral.integral_of_le (by norm_num), MeasureTheory.integral_Icc_eq_integral_Ioc]      have h_final : (fun (T : )  (I * ∫ (t : ) in Set.Icc 0 T, f (-1 + I * ↑t)) - (I * ∫ (t : ) in Set.Icc 0 T, f (I * ↑t))) =          (fun (U : )  (I * ∫ (t : ) in Set.Icc 0 U, f (↑(-1 : ) + I * ↑t)) - (I * ∫ (t : ) in Set.Icc 0 U, f (↑(0 : ) + I * ↑t))) := by        ext U        have h1 : ∫ (t : ) in Set.Icc 0 U, f (-1 + I * ↑t) = ∫ (t : ) in Set.Icc 0 U, f (↑(-1 : ) + I * ↑t) := by congr 1; ext t; simp        have h2 : ∫ (t : ) in Set.Icc 0 U, f (I * ↑t) = ∫ (t : ) in Set.Icc 0 U, f (↑(0 : ) + I * ↑t) := by congr 1; ext t; simp        rw [h1, h2]      rw [hA_eq,  h_final] at h_shift      exact h_shift    · simp_rw [mul_comm _ I]      apply horizontal_integral_phi_fourier_vanish ν ε x (-1) 0 hν hx (Set.Icc_subset_Icc (by norm_num) (by norm_num)) (by norm_num) f      · intro T hT; convert (h_anal T (by linarith)).continuousOn using 2      · intro T hT t ht; dsimp [f]; rw [norm_mul]        exact mul_le_mul_of_nonneg_right (norm_sub_le _ _) (norm_nonneg _)    · apply integrable_phi_fourier_ray ν ε (-1) x hν (by norm_num) hx f (Or.inr rfl)    · apply integrable_phi_fourier_ray ν ε 0 x hν (by norm_num) hx f (Or.inr rfl)  have hBshift :      Filter.atTop.Tendsto        (fun T :            (- I * ∫ t in Set.Icc 0 T,            (Phi_circ ν ε (1 + I * t) + Phi_star ν ε (1 + I * t)) * E (-(1 + I * t) * x))          + (I * ∫ t in Set.Icc 0 T,            (Phi_circ ν ε (I * t) + Phi_star ν ε (I * t)) * E (-(I * t) * x)))        (nhds B) := by    let f : ℂ := fun z  (Phi_circ ν ε z + Phi_star ν ε z) * E (-z * x)    have h_anal (U : ) (hU : 0  U) : HolomorphicOn f (Rectangle (↑(0:)) (↑(1:) + I * U)) := by      intro z hz; have hi : 0  z.im := by        have hz_im : z.im  Set.uIcc 0 U := by simpa [Rectangle] using hz.2        rw [Set.uIcc_of_le hU] at hz_im        exact hz_im.1      exact (AnalyticAt.add (Phi_circ.analyticAt_of_im_nonneg ν ε z hν hi) (Phi_star.analyticAt_of_im_nonneg ν ε z hν hi)).differentiableAt.mul        (by dsimp [E]; fun_prop) |>.differentiableWithinAt    have h_shift := tendsto_contour_shift (σ := 0) (σ' := 1) (f := f) h_anal ?_ ?_ ?_    · have hB_eq : ∫ x in (0:)..1, f x = B := by        dsimp [B]        rw [intervalIntegral.integral_of_le zero_le_one, MeasureTheory.integral_Icc_eq_integral_Ioc]      have h_final : (fun (T : )  (-I * ∫ (t : ) in Set.Icc 0 T, f (1 + I * ↑t)) + (I * ∫ (t : ) in Set.Icc 0 T, f (I * ↑t))) =          (fun (U : )  (I * ∫ (t : ) in Set.Icc 0 U, f (↑(0 : ) + I * ↑t)) - (I * ∫ (t : ) in Set.Icc 0 U, f (↑(1 : ) + I * ↑t))) := by        ext U        have h1 : ∫ (t : ) in Set.Icc 0 U, f (1 + I * ↑t) = ∫ (t : ) in Set.Icc 0 U, f (↑(1 : ) + I * ↑t) := by congr 1        have h2 : ∫ (t : ) in Set.Icc 0 U, f (I * ↑t) = ∫ (t : ) in Set.Icc 0 U, f (↑(0 : ) + I * ↑t) := by congr 1; ext t; simp        rw [h1, h2]; ring      rw [hB_eq,  h_final] at h_shift      exact h_shift    · simp_rw [mul_comm _ I]      apply horizontal_integral_phi_fourier_vanish ν ε x 0 1 hν hx (Set.Icc_subset_Icc (by norm_num) (by norm_num)) (by norm_num) f      · intro T hT; convert (h_anal T (by linarith)).continuousOn using 2      · intro T hT t ht; dsimp [f]; rw [norm_mul]        exact mul_le_mul_of_nonneg_right (norm_add_le _ _) (norm_nonneg _)    · apply integrable_phi_fourier_ray ν ε 0 x hν (by norm_num) hx f (Or.inl rfl)    · apply integrable_phi_fourier_ray ν ε 1 x hν (by norm_num) hx f (Or.inl rfl)  have h_integrable_imag      (T : )      (F : ℂ  ℂ)      (hF :  t  Set.Icc (0 : ) T, ContinuousAt (fun y :   F (I * ↑y)) t) :      Integrable (fun t :   F (I * ↑t) * E (-(I * ↑t) * ↑x))        (volume.restrict (Set.Icc (0 : ) T)) := by    apply ContinuousOn.integrableOn_compact isCompact_Icc    apply continuousOn_of_forall_continuousAt    intro t ht    refine ContinuousAt.mul ?_ ?_    · exact hF t ht    · dsimp [E]      fun_prop  have hcombine (T : ) :      (I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (-1 + I * t) - Phi_star ν ε (-1 + I * t)) * E (-(-1 + I * t) * x))      - (I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (1 + I * t) + Phi_star ν ε (1 + I * t)) * E (-(1 + I * t) * x))      + (2 * I * ∫ t in Set.Icc 0 T, Phi_star ν ε (I * t) * E (-(I * t) * x)) =      ((I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (-1 + I * t) - Phi_star ν ε (-1 + I * t)) * E (-(-1 + I * t) * x))        - (I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (I * t) - Phi_star ν ε (I * t)) * E (-(I * t) * x))) +      ((- I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (1 + I * t) + Phi_star ν ε (1 + I * t)) * E (-(1 + I * t) * x))        + (I * ∫ t in Set.Icc 0 T, (Phi_circ ν ε (I * t) + Phi_star ν ε (I * t)) * E (-(I * t) * x))) := by    have hsub : ∫ t in Set.Icc 0 T,        (Phi_circ ν ε (I * ↑t) - Phi_star ν ε (I * ↑t)) * E (-(I * ↑t) * ↑x) =        (∫ t in Set.Icc 0 T, Phi_circ ν ε (I * ↑t) * E (-(I * ↑t) * ↑x)) -        (∫ t in Set.Icc 0 T, Phi_star ν ε (I * ↑t) * E (-(I * ↑t) * ↑x)) := by      simp_rw [sub_mul]      refine integral_sub ?_ ?_      · exact h_integrable_imag T (Phi_circ ν ε) (by intro t ht; exact Phi_circ.continuousAt_imag ν ε t ht.1 hν)      · exact h_integrable_imag T (Phi_star ν ε) (by intro t ht; exact Phi_star.continuousAt_imag ν ε t ht.1 hν)    have hadd : ∫ t in Set.Icc 0 T,        (Phi_circ ν ε (I * ↑t) + Phi_star ν ε (I * ↑t)) * E (-(I * ↑t) * ↑x) =        (∫ t in Set.Icc 0 T, Phi_circ ν ε (I * ↑t) * E (-(I * ↑t) * ↑x)) +        (∫ t in Set.Icc 0 T, Phi_star ν ε (I * ↑t) * E (-(I * ↑t) * ↑x)) := by      simp_rw [add_mul]      refine integral_add ?_ ?_      · exact h_integrable_imag T (Phi_circ ν ε) (by intro t ht; exact Phi_circ.continuousAt_imag ν ε t ht.1 hν)      · exact h_integrable_imag T (Phi_star ν ε) (by intro t ht; exact Phi_star.continuousAt_imag ν ε t ht.1 hν)    linear_combination I * hsub - I * hadd  have hcontour := (hAshift.add hBshift).congr' (Filter.Eventually.of_forall (fun T  (hcombine T).symm))  simpa [hfourier] using hcontour