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

Kadiri.identity_16_complex_weighted

PrimeNumberTheoremAnd.IEANTN.Kadiri · PrimeNumberTheoremAnd/IEANTN/Kadiri.lean:2495 to 2635

Source documentation

Weighted complex form of equation (16), derived from the explicit formula kadiri_thm_3_1_q1 at the Kadiri test function. The zero sum carries the multiplicities that the residue calculus produces; the set-sum form of identity_16_complex follows when every zero in the strip is simple. The two hypotheses are the explicit formula's convergence inputs, instantiated at the test function (dischargeable through the F₂(s-z)/(s-z)² representation).

Exact Lean statement

theorem identity_16_complex_weighted {d : ℝ} (hd : 0 < d) {f : ℝ → ℝ}
    (hf_C2 : ContDiffOn ℝ 2 f (.Icc 0 d))
    (hf_supp : tsupport f ⊆ .Ico 0 d)
    (hf_d : f d = 0)
    (hf_deriv_0 : derivWithin f (Set.Icc 0 d) 0 = 0)
    (hf_deriv_d : derivWithin f (Set.Icc 0 d) d = 0)
    {s : ℂ} (hs : 1 < s.re)
    (hΦ_sum : Summable (fun ρ : riemannZeta.zeroes_rect (.Ioo 0 1) (.univ : Set ℝ) ↦
      (∫ y, kadiriTestFn f s y * exp (ρ.val * (y : ℂ)) ∂volume) *
        (riemannZeta.order ρ.val : ℂ)))
    (hΓ_int : MeasureTheory.Integrable (fun t : ℝ ↦
      ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *
        ∫ y, kadiriTestFn f s y *
          exp ((1 / 2 + (t : ℂ) * I) * (y : ℂ)) ∂volume)) :
    (∑' n : ℕ, (Λ n : ℂ) / (n : ℂ) ^ s * ((f (Real.log n) : ℝ) : ℂ)) =
      (f 0 : ℂ) * ((∑' n : ℕ, (Λ n : ℂ) / (n : ℂ) ^ s) - 1 / (s - 1))
      + riemannZeta.zeroes_sum (.Ioo 0 1) (.univ : Set ℝ)
          (fun ρ ↦ (f 0 : ℂ) / (s - ρ) - laplaceTransform f (s - ρ))
      + laplaceTransform f (s - 1)
      + ((1 / (2 * (Real.pi : ℂ))) *
          (∫ t : ℝ,
            ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *
              laplaceTransform (fun u ↦ deriv (deriv f) u) (s - (1 / 2 + (t : ℂ) * I))
              / (s - (1 / 2 + (t : ℂ) * I)) ^ 2)
          + laplaceTransform (fun u ↦ deriv (deriv f) u) s / s ^ 2)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem identity_16_complex_weighted {d : } (hd : 0 < d) {f :   }    (hf_C2 : ContDiffOn  2 f (.Icc 0 d))    (hf_supp : tsupport f  .Ico 0 d)    (hf_d : f d = 0)    (hf_deriv_0 : derivWithin f (Set.Icc 0 d) 0 = 0)    (hf_deriv_d : derivWithin f (Set.Icc 0 d) d = 0)    {s : ℂ} (hs : 1 < s.re)    (hΦ_sum : Summable (fun ρ : riemannZeta.zeroes_rect (.Ioo 0 1) (.univ : Set )       (∫ y, kadiriTestFn f s y * exp (ρ.val * (y : ℂ)) ∂volume) *        (riemannZeta.order ρ.val : ℂ)))    (hΓ_int : MeasureTheory.Integrable (fun t :        ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *        ∫ y, kadiriTestFn f s y *          exp ((1 / 2 + (t : ℂ) * I) * (y : ℂ)) ∂volume)) :    (∑' n : , (Λ n : ℂ) / (n : ℂ) ^ s * ((f (Real.log n) : ) : ℂ)) =      (f 0 : ℂ) * ((∑' n : , (Λ n : ℂ) / (n : ℂ) ^ s) - 1 / (s - 1))      + riemannZeta.zeroes_sum (.Ioo 0 1) (.univ : Set )          (fun ρ  (f 0 : ℂ) / (s - ρ) - laplaceTransform f (s - ρ))      + laplaceTransform f (s - 1)      + ((1 / (2 * (Real.pi : ℂ))) *          (∫ t : ,            ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *              laplaceTransform (fun u  deriv (deriv f) u) (s - (1 / 2 + (t : ℂ) * I))              / (s - (1 / 2 + (t : ℂ) * I)) ^ 2)          + laplaceTransform (fun u  deriv (deriv f) u) s / s ^ 2) := by  have hs0 : s  0 := by    intro h    rw [h] at hs    norm_num at hs  -- the explicit formula at the test function  obtain b, hb, hdecay, hdecay' := kadiriTestFn_decay hf_supp hs  have hform := kadiri_thm_3_1_q1    (kadiriTestFn_contDiff hd hf_C2 hf_supp hf_d hf_deriv_0 hf_deriv_d s)    hb hdecay hdecay' hΦ_sum hΓ_int  dsimp only at hform  -- the pole value  have hΦ1 : (∫ y, kadiriTestFn f s y *      exp (-(-1 : ℂ) * (y : ℂ)) ∂volume) =      (f 0 : ℂ) / (s - 1) - laplaceTransform f (s - 1) := by    have hre : (0 : ) < (s + (-1 : ℂ)).re := by      simp only [Complex.add_re, Complex.neg_re, Complex.one_re]      linarith    rw [kadiriTestFn_laplaceTransform hd hf_C2 hf_supp s (-1) hre,      show s + (-1 : ℂ) = s - 1 by ring]  -- the value at zero, collapsed by integration by parts  have hΦ0 : (∫ y, kadiriTestFn f s y *      exp (-(0 : ℂ) * (y : ℂ)) ∂volume) =      -(laplaceTransform (fun u  deriv (deriv f) u) s / s ^ 2) := by    have hre : (0 : ) < (s + (0 : ℂ)).re := by      simp only [Complex.add_re, Complex.zero_re]      linarith    rw [kadiriTestFn_laplaceTransform hd hf_C2 hf_supp s 0 hre,      show s + (0 : ℂ) = s by ring,      laplaceTransform_ibp hd hf_C2 hf_supp hf_d hf_deriv_0 hf_deriv_d hs0]    ring  -- the zero packet values  have hzero : riemannZeta.zeroes_sum (.Ioo 0 1) (.univ : Set )      (fun ρ  ∫ y, kadiriTestFn f s y *        exp (-(-ρ) * (y : ℂ)) ∂volume) =      riemannZeta.zeroes_sum (.Ioo 0 1) (.univ : Set )        (fun ρ  (f 0 : ℂ) / (s - ρ) - laplaceTransform f (s - ρ)) := by    unfold riemannZeta.zeroes_sum    refine tsum_congr fun ρ  ?_    change (∫ y, kadiriTestFn f s y *        exp (-(-ρ.val) * (y : ℂ)) ∂volume) * (riemannZeta.order ρ.val : ℂ) =      ((f 0 : ℂ) / (s - ρ.val) - laplaceTransform f (s - ρ.val)) *        (riemannZeta.order ρ.val : ℂ)    congr 1    have hlt : (ρ.val : ℂ).re < 1 := ρ.property.1.2    have hre : (0 : ) < (s + -ρ.val).re := by      simp only [Complex.add_re, Complex.neg_re]      linarith    rw [kadiriTestFn_laplaceTransform hd hf_C2 hf_supp s (-ρ.val) hre,      show s + -ρ.val = s - ρ.val by ring]  -- the test function vanishes at zero  have hφ0 : kadiriTestFn f s 0 = 0 := by    simp [kadiriTestFn]  -- the reflected sum vanishes  have hrefl : (∑' n : , ((Λ n : ℂ) / (n : ℂ)) * kadiriTestFn f s (-Real.log n)) = 0 := by    have hterm :  n : , ((Λ n : ℂ) / (n : ℂ)) * kadiriTestFn f s (-Real.log n) = 0 := by      intro n      match n with      | 0 => simp      | 1 => simp [Nat.cast_one, Real.log_one, neg_zero, hφ0]      | (k + 2) =>        have hlog : (0 : ) < Real.log ((k : ) + 2) := by          apply Real.log_pos          have hk : (0 : )  (k : ) := Nat.cast_nonneg k          linarith        have hle : ¬ Real.log ((k : ) + 2)  0 := not_le.mpr hlog        simp [kadiriTestFn, hle]    rw [tsum_congr hterm, tsum_zero]  -- the contour integrand, collapsed by integration by parts  have hcont : (∫ t : , ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *        ∫ y, kadiriTestFn f s y *          exp (-(-(1 / 2 + (t : ℂ) * I)) * (y : ℂ)) ∂volume) =      -(∫ t : , ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *          laplaceTransform (fun u  deriv (deriv f) u) (s - (1 / 2 + (t : ℂ) * I)) /            (s - (1 / 2 + (t : ℂ) * I)) ^ 2) := by    rw [ MeasureTheory.integral_neg]    refine MeasureTheory.integral_congr_ae (Filter.Eventually.of_forall fun t  ?_)    change ((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *        (∫ y, kadiriTestFn f s y *          exp (-(-(1 / 2 + (t : ℂ) * I)) * (y : ℂ)) ∂volume) =      -(((digamma ((1 / 2 + (t : ℂ) * I) / 2)).re : ℂ) *          laplaceTransform (fun u  deriv (deriv f) u) (s - (1 / 2 + (t : ℂ) * I)) /            (s - (1 / 2 + (t : ℂ) * I)) ^ 2)    have h12 : ((1 : ℂ) / 2 + (t : ℂ) * I).re = 1 / 2 := by      simp [Complex.add_re, Complex.mul_re]    have hre : (0 : ) < (s + -(1 / 2 + (t : ℂ) * I)).re := by      simp only [Complex.add_re, Complex.neg_re, h12]      linarith    have hwne : s - (1 / 2 + (t : ℂ) * I)  0 := by      intro h      have : (s - (1 / 2 + (t : ℂ) * I)).re = 0 := by rw [h]; rfl      rw [Complex.sub_re, h12] at this      linarith    rw [kadiriTestFn_laplaceTransform hd hf_C2 hf_supp s (-(1 / 2 + (t : ℂ) * I)) hre,      show s + -(1 / 2 + (t : ℂ) * I) = s - (1 / 2 + (t : ℂ) * I) by ring,      laplaceTransform_ibp hd hf_C2 hf_supp hf_d hf_deriv_0 hf_deriv_d hwne]    ring  rw [hΦ1, hΦ0, hzero, hφ0, hrefl, hcont] at hform  -- the Dirichlet-side split  have hS1 : Summable (fun n :   (Λ n : ℂ) / (n : ℂ) ^ s) := by    refine (ArithmeticFunction.LSeriesSummable_vonMangoldt hs).congr fun n  ?_    rcases eq_or_ne n 0 with rfl | hn    · simp    · rw [LSeries.term_of_ne_zero hn]  have hS2 := summable_f_log hf_supp (fun n :   (Λ n : ℂ) / (n : ℂ) ^ s)  have hLHS : (∑' n : , (Λ n : ℂ) * kadiriTestFn f s (Real.log n)) =      (f 0 : ℂ) * (∑' n : , (Λ n : ℂ) / (n : ℂ) ^ s) -        ∑' n : , (Λ n : ℂ) / (n : ℂ) ^ s * ((f (Real.log n) : ) : ℂ) := by    rw [ tsum_mul_left,  Summable.tsum_sub (hS1.mul_left _) hS2]    refine tsum_congr fun n  ?_    rcases Nat.eq_zero_or_pos n with rfl | hn    · simp    · rw [kadiriTestFn_log f s hn]      have hn0 : ((n : ) : ℂ)  0 := Nat.cast_ne_zero.mpr hn.ne'      field_simp  rw [hLHS] at hform  linear_combination -hform