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

CH2.second_contour_limit

PrimeNumberTheoremAnd.IEANTN.CH2.CH2_part1 · PrimeNumberTheoremAnd/IEANTN/CH2/CH2_part1.lean:4653 to 4736

Mathematical statement

Exact Lean statement

@[blueprint
  "second-contour-limit"
  (title := "Second contour limit")
  (statement := /--
\[
-\int_{-\frac{1}{2}-i\infty}^{-\frac{1}{2}} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz - \int_{-\frac{1}{2}}^{0} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz = \int_0^{-i\infty} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz.
\]
  -/)
  (proof := /-- Again by Cauchy's theorem and decay as $\Im z \to -\infty$ -/)
  (latexEnv := "sublemma")
  (discussion := 1086)]
theorem second_contour_limit (ν ε : ℝ) (hν : ν > 0) (x : ℝ) (hx : x > 0) :
    Filter.atTop.Tendsto (fun T : ℝ ↦
      (-(I * ∫ t in Set.Icc 0 T, ((Phi_star ν ε (-1/2 - I * t)) * E (-(-1/2 - I * ↑t) * x))))
        - (∫ t in Set.Icc (-1/2 : ℝ) 0, (Phi_star ν ε t * E (-t * x)))
        + (I * ∫ t in Set.Icc 0 T, ((Phi_star ν ε (-I * t)) * E (-(-I * ↑t) * x))))
      (nhds 0)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "second-contour-limit"  (title := "Second contour limit")  (statement := /--\[-\int_{-\frac{1}{2}-i\infty}^{-\frac{1}{2}} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz - \int_{-\frac{1}{2}}^{0} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz = \int_0^{-i\infty} \Phi^{\pm,\star}_{\nu}(z)\, e(-zx)\, dz.\]  -/)  (proof := /-- Again by Cauchy's theorem and decay as $\Im z \to -\infty$ -/)  (latexEnv := "sublemma")  (discussion := 1086)]theorem second_contour_limit (ν ε : ) (hν : ν > 0) (x : ) (hx : x > 0) :    Filter.atTop.Tendsto (fun T :        (-(I * ∫ t in Set.Icc 0 T, ((Phi_star ν ε (-1/2 - I * t)) * E (-(-1/2 - I * ↑t) * x))))        - (∫ t in Set.Icc (-1/2 : ) 0, (Phi_star ν ε t * E (-t * x)))        + (I * ∫ t in Set.Icc 0 T, ((Phi_star ν ε (-I * t)) * E (-(-I * ↑t) * x))))      (nhds 0) := by  let f : ℂ := fun z  Phi_star ν ε z * E (-z * x)  have h_anal (T : ) (hT : T  0) : HolomorphicOn f (Rectangle (↑(-1/2 : )) (↑(0 : ) - I * ↑T)) := by    simpa only [f] using second_contour_integrand_holomorphicOn ν ε x T hT  have h_rect_zero (T : ) (hT : T  0) : RectangleIntegral f (↑(-1/2 : )) (↑(0 : ) - I * ↑T) = 0 :=    HolomorphicOn.vanishesOnRectangle (h_anal T hT) subset_rfl  have h_goal_eq_bottom (T : ) (hT : 0  T) :      (-(I * ∫ t in Set.Icc 0 T, f (-1/2 - I * t)))        - (∫ t in Set.Icc (-1/2 : ) 0, f t)        + (I * ∫ t in Set.Icc 0 T, f (-I * t)) =      - ∫ t in (-1/2 : )..0, f (t - I * T) := by    have := h_rect_zero T hT    simp only [RectangleIntegral, HIntegral, VIntegral, smul_eq_mul] at this    push_cast at this    simp only [neg_re, neg_im, mul_re, mul_im, I_re, I_im, ofReal_re, ofReal_im,      ofReal_neg, mul_zero, mul_one, add_zero,      sub_zero, zero_sub, neg_zero, mul_comm I] at this    have h1 : ∫ t in Set.Icc (0 : ) T, f (-1 / 2 - I * t) = - ∫ y in 0..-T, f (-1 / 2 + I * y) := by      rw [MeasureTheory.integral_Icc_eq_integral_Ioc,  intervalIntegral.integral_of_le hT]      ring_nf      simp_rw [show  x : , f (-1/2 - I * ↑x) = f (-1/2 + I * ↑(-x)) from        fun x => by congr 1; push_cast; ring]      rw [intervalIntegral.integral_comp_neg (fun y => f (-1/2 + I * ↑y))]      rw [intervalIntegral.integral_symm, neg_zero]    have h2 : ∫ t in Set.Icc (0 : ) T, f (- I * t) = - ∫ y in 0..-T, f (I * y) := by      rw [MeasureTheory.integral_Icc_eq_integral_Ioc,  intervalIntegral.integral_of_le hT]      simp_rw [show  t : , f (-I * ↑t) = f (I * ↑(-t)) from        fun t => by congr 1; push_cast; ring]      rw [intervalIntegral.integral_comp_neg (fun y => f (I * ↑y)),          intervalIntegral.integral_symm, neg_zero]    have h3 : ∫ t in Set.Icc (-1 / 2 : ) (0 : ), f t = ∫ x in (-1 / 2 : )..0, f x := by      rw [MeasureTheory.integral_Icc_eq_integral_Ioc,  intervalIntegral.integral_of_le (by norm_num)]    calc      (-(I * ∫ t in Set.Icc 0 T, f (-1 / 2 - I * ↑t)) - ∫ (t : ) in Set.Icc (-1 / 2) 0, f ↑t) +          I * ∫ (t : ) in Set.Icc 0 T, f (-I * ↑t)        = (I * ∫ y in 0..-T, f (-1 / 2 + I * y)) - (∫ x in -1 / 2..0, f x) - (I * ∫ y in 0..-T, f (I * y)) := by          rw [h1, h2, h3]; ring      _ = - ∫ x in -1 / 2..0, f (x - I * T) := by          simp only [show ((-1 / 2 : ℂ)).re = -1 / 2 from by norm_num,                    show ((-1 / 2 : ℂ)).im = 0 from by norm_num,                    zero_mul, add_zero, zero_add, ofReal_zero] at this          have hI1 : ∫ (y : ) in 0..-T, f ((y : ℂ) * I) =                    ∫ (y : ) in 0..-T, f (I * (y : ℂ)) := by            congr 1; ext (y : ); ring_nf          have hI2 : ∫ (y : ) in 0..-T, f ((-1 / 2 : ℂ) + (y : ℂ) * I) =                    ∫ (y : ) in 0..-T, f ((-1 / 2 : ℂ) + I * (y : ℂ)) := by            congr 1; ext (y : ); ring_nf          have hI3 : ∫ (x : ) in -1 / 2..0, f ((x : ℂ) + -(T : ℂ) * I) =                    ∫ (x : ) in -1 / 2..0, f ((x : ℂ) - I * (T : ℂ)) := by            congr 1; ext (x : ); ring_nf          rw [hI1] at this          push_cast at this          rw [hI2, hI3] at this          linear_combination -this  have h_bottom : Filter.Tendsto (fun T :   ∫ t in (-1/2 : )..0, f (t - I * T))      Filter.atTop (nhds 0) :=    horizontal_integral_phi_fourier_vanish_downwards ν ε x (-1/2) 0 hν hx      (Set.Icc_subset_Icc (by norm_num) (by norm_num)) (by norm_num) f      (fun T hT  (h_anal T (by linarith)).continuousOn)      (Filter.Eventually.of_forall fun T t _  by        simp only [f]; rw [norm_mul]        exact mul_le_mul_of_nonneg_right (le_add_of_nonneg_left (norm_nonneg _)) (norm_nonneg _))  refine Filter.Tendsto.congr'    (f₁ := fun (T : )  - ∫ t in (-1/2 : )..0, f (↑t - I * ↑T)) ?_    (by simpa using h_bottom.neg)  filter_upwards [Filter.eventually_ge_atTop 0] with T hT  simp only [f] at h_goal_eq_bottom   exact (h_goal_eq_bottom T hT).symm