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

MellinOfSmooth1a

PrimeNumberTheoremAnd.MellinCalculus · PrimeNumberTheoremAnd/MellinCalculus.lean:1198 to 1321

Source documentation

Combining the above, we have the following three Main Lemmata of this section on the Mellin transform of 1ϵ~\widetilde{1_{\epsilon}}.

Exact Lean statement

@[blueprint
  (title := "MellinOfSmooth1a")
  (statement := /--
  Fix  $\epsilon>0$. Then the Mellin transform of $\widetilde{1_{\epsilon}}$ is
  $$\mathcal{M}(\widetilde{1_{\epsilon}})(s) =
  \frac{1}{s}\left(\mathcal{M}(\nu)\left(\epsilon s\right)\right).$$
  -/)
  (proof := /--
  By Definition \ref{Smooth1},
  $$
    \mathcal M(\widetilde{1_\epsilon})(s)
    =\mathcal M(1_{(0,1]}\ast\nu_\epsilon)(s)
    .
  $$
  We wish to apply Theorem \ref{MellinConvolutionTransform}.
  To do so, we must prove that
  $$
    (x,y)\mapsto 1_{(0,1]}(y)\nu_\epsilon(x/y)/y
  $$
  is integrable on $[0,\infty)^2$.
  It is actually easier to do this for the convolution: $\nu_\epsilon\ast 1_{(0,1]}$, so we use
  Lemma \ref{MellinConvolutionSymmetric}: for $x\neq0$,
  $$
    1_{(0,1]}\ast\nu_\epsilon(x)=\nu_\epsilon\ast 1_{(0,1]}(x)
    .
  $$
  Now, for $x=0$, both sides of the equation are 0, so the equation also holds for $x=0$.
  Therefore,
  $$
    \mathcal M(\widetilde{1_\epsilon})(s)
    =\mathcal M(\nu_\epsilon\ast 1_{(0,1]})(s)
    .
  $$
  Now,
  $$
    (x,y)\mapsto \nu_\epsilon(y)1_{(0,1]}(x/y)\frac{x^{s-1}}y
  $$
  has compact support that is bounded away from $y=0$ (specifically
  $y\in[2^{-\epsilon},2^\epsilon]$ and $x\in(0,y]$), so it is integrable.
  We can thus apply Theorem \ref{MellinConvolutionTransform} and find
  $$
    \mathcal M(\widetilde{1_\epsilon})(s)
    =\mathcal M(\nu_\epsilon)(s)\mathcal M(1_{(0,1]})(s)
    .
  $$
  By Lemmas \ref{MellinOf1} and \ref{MellinOfDeltaSpike},
  $$
    \mathcal M(\widetilde{1_\epsilon})(s)
    =\frac1s\mathcal M(\nu)(\epsilon s)
    .
  $$
  -/)
  (latexEnv := "lemma")]
lemma MellinOfSmooth1a {ν : ℝ → ℝ} (diffν : ContDiff ℝ 1 ν)
    (suppν : ν.support ⊆ Icc (1 / 2) 2)
    {ε : ℝ} (εpos : 0 < ε) {s : ℂ} (hs : 0 < s.re) :
    𝓜 (fun x ↦ (Smooth1 ν ε x : ℂ)) s =
      s⁻¹ * 𝓜 (fun x ↦ (ν x : ℂ)) (ε * s)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  (title := "MellinOfSmooth1a")  (statement := /--  Fix  $\epsilon>0$. Then the Mellin transform of $\widetilde{1_{\epsilon}}$ is  $$\mathcal{M}(\widetilde{1_{\epsilon}})(s) =  \frac{1}{s}\left(\mathcal{M}(\nu)\left(\epsilon s\right)\right).$$  -/)  (proof := /--  By Definition \ref{Smooth1},  $$    \mathcal M(\widetilde{1_\epsilon})(s)    =\mathcal M(1_{(0,1]}\ast\nu_\epsilon)(s)    .  $$  We wish to apply Theorem \ref{MellinConvolutionTransform}.  To do so, we must prove that  $$    (x,y)\mapsto 1_{(0,1]}(y)\nu_\epsilon(x/y)/y  $$  is integrable on $[0,\infty)^2$.  It is actually easier to do this for the convolution: $\nu_\epsilon\ast 1_{(0,1]}$, so we use  Lemma \ref{MellinConvolutionSymmetric}: for $x\neq0$,  $$    1_{(0,1]}\ast\nu_\epsilon(x)=\nu_\epsilon\ast 1_{(0,1]}(x)    .  $$  Now, for $x=0$, both sides of the equation are 0, so the equation also holds for $x=0$.  Therefore,  $$    \mathcal M(\widetilde{1_\epsilon})(s)    =\mathcal M(\nu_\epsilon\ast 1_{(0,1]})(s)    .  $$  Now,  $$    (x,y)\mapsto \nu_\epsilon(y)1_{(0,1]}(x/y)\frac{x^{s-1}}y  $$  has compact support that is bounded away from $y=0$ (specifically  $y\in[2^{-\epsilon},2^\epsilon]$ and $x\in(0,y]$), so it is integrable.  We can thus apply Theorem \ref{MellinConvolutionTransform} and find  $$    \mathcal M(\widetilde{1_\epsilon})(s)    =\mathcal M(\nu_\epsilon)(s)\mathcal M(1_{(0,1]})(s)    .  $$  By Lemmas \ref{MellinOf1} and \ref{MellinOfDeltaSpike},  $$    \mathcal M(\widetilde{1_\epsilon})(s)    =\frac1s\mathcal M(\nu)(\epsilon s)    .  $$  -/)  (latexEnv := "lemma")]lemma MellinOfSmooth1a {ν :   } (diffν : ContDiff  1 ν)    (suppν : ν.support  Icc (1 / 2) 2)    {ε : } (εpos : 0 < ε) {s : ℂ} (hs : 0 < s.re) :    𝓜 (fun x  (Smooth1 ν ε x : ℂ)) s =      s⁻¹ * 𝓜 (fun x  (ν x : ℂ)) (ε * s) := by  let f' :  := fun x  DeltaSpike ν ε x  let f :  := fun x  DeltaSpike ν ε x / x  let g :  := fun x  if 0 < x  x  1 then 1 else 0  let F :  ×  := Function.uncurry fun x y  f y * g (x / y) * (x : ℂ) ^ (s - 1)  let S := {x, y :  ×  | 0 < x   x  y  2 ^ (-ε)  y  y  2 ^ ε}  let F' :  ×  := piecewise S (fun x, y  f y * (x : ℂ) ^ (s - 1))     (fun _  0)  let Tx := Ioc 0 ((2 : ) ^ ε)  let Ty := Icc ((2 : ) ^ (-ε)) ((2 : ) ^ ε)   have Seq : S = (Tx ×ˢ Ty) ∩ {(x, y) :  ×  | x  y} := by    ext x, y; constructor    · exact fun h  ⟨⟨⟨h.1, le_trans h.2.1 h.2.2.2, h.2.2.1, h.2.2.2⟩⟩, h.2.1    · exact fun h   h.1.1.1, h.2, h.1.2.1, h.1.2.2⟩⟩  have SsubI : S  Ioi 0 ×ˢ Ioi 0 :=    fun z hz  hz.1, lt_of_lt_of_le (by apply rpow_pos_of_pos; norm_num) hz.2.2.1  have SsubT: S  Tx ×ˢ Ty := by simp_rw [Seq, inter_subset_left]  have Smeas : MeasurableSet S := by    rw [Seq]; apply MeasurableSet.inter ?_ <| measurableSet_le measurable_fst measurable_snd    simp [measurableSet_prod, Tx, Ty]   have int_F: IntegrableOn F (Ioi 0 ×ˢ Ioi 0) := by    apply IntegrableOn.congr_fun (f := F') ?_ ?_ (by simp [measurableSet_prod]); swap    · simp only [F, F', f, g, mul_ite, mul_one, mul_zero]      intro x, y hz      by_cases hS : x, y  S <;> simp only [hS, piecewise]      <;> simp only [mem_prod, mem_Ioi, mem_setOf_eq, not_and, not_le, S] at hz hS      · simp [div_pos hz.1 hz.2, (div_le_one hz.2).mpr hS.2.1]      · by_cases hxy : x / y  1        swap        · simp [hxy]        have hy : y  Icc (2 ^ (-ε)) (2 ^ ε) := by          simp only [mem_Icc, not_and, not_le]; exact hS hz.1 <| (div_le_one hz.2).mp hxy        simp [DeltaSpikeSupport εpos hz.2.le suppν hy]    · apply Integrable.piecewise Smeas ?_ integrableOn_zero      simp only [IntegrableOn, Measure.restrict_restrict_of_subset SsubI]      apply MeasureTheory.Integrable.mono_measure ?_      · apply MeasureTheory.Measure.restrict_mono' SsubT.eventuallyLE le_rfl      have : volume.restrict (Tx ×ˢ Ty) = (volume.restrict Tx).prod (volume.restrict Ty) := by        rw [Measure.prod_restrict, MeasureTheory.Measure.volume_eq_prod]      conv => rw [this]; lhs; intro; rw [mul_comm]      apply MeasureTheory.Integrable.mul_prod (f := fun x  (x : ℂ) ^ (s - 1)):= Measure.restrict volume Tx)      · simp only [Tx]        rw [ IntegrableOn, integrableOn_Ioc_iff_integrableOn_Ioo,          intervalIntegral.integrableOn_Ioo_cpow_iff]        · simp [hs]        · apply rpow_pos_of_pos (by norm_num)      · apply (ContinuousOn.div ?_ ?_ ?_).integrableOn_compact isCompact_Icc        · exact (DeltaSpikeOfRealContinuous εpos diffν).continuousOn        · exact continuous_ofReal.continuousOn        · intro x hx; simp only [mem_Icc] at hx; simp only [ofReal_ne_zero]          linarith [(by apply rpow_pos_of_pos (by norm_num) : (0 : ) < 2 ^ (-ε))]   have : 𝓜 (MellinConvolution g f') s = 𝓜 g s * 𝓜 f' s := by    rw [mul_comm,  MellinConvolutionTransform f' g s      (by convert int_F using 1; simp only [f', F, f]; field_simp)]    dsimp [mellin]; rw [setIntegral_congr_fun (by simp)]    intro x hx; simp_rw [MellinConvolutionSymmetric _ _ <| mem_Ioi.mp hx]   convert! this using 1  · congr; funext x; convert! integral_ofReal.symm    simp only [MellinConvolution, RCLike.ofReal_div, ite_mul, one_mul, zero_mul, @apply_ite  ℂ,      algebraMap.coe_zero, g]; rfl  · rw [MellinOf1 s hs, MellinOfDeltaSpike ν εpos s]    simp