Zulip Chat Archive

Stream: PrimeNumberTheorem+

Topic: Outstanding Tasks, V3


Alex Kontorovich (Feb 22 2024 at 17:01):

For V2, see here

Now that the Perron Formula is proved, we can turn to MellinInversion, which I've broken down into smaller steps. (In principle, a proof could be derived from @Sébastien Gouëzel's Fourier inversion PR. But given all we've developed, it might be faster to just continue the course.) So here are some targets:

  1. PartialIntegration This is partial integration over (0,)(0,\infty). May be useful to invoke intervalIntegral.integral_mul_deriv_eq_deriv_mul and MeasureTheory.intervalIntegral_tendsto_integral_Ioi.
  2. MellinInversion_aux1 This is using partial integration to show that 0f(x)xsdxx=0f(x)xssdx\int_0^\infty f(x)x^s\frac{dx}{x} = \int_0^\infty f'(x)\frac{x^{s}}{s} dx. We'll need to some minimal conditions under which this holds.
  3. MellinInversion_aux2 Should be an application of MellinInversion_aux1 with (f := deriv f) and (s := s+1).
  4. MellinInversion_aux3 This is the absolute integrability of f(x)xs/(s(s+1))f(x)x^s/(s(s+1)) for (x,s)(0,)×{s=σ}(x,s)\in(0,\infty)\times\{\Re s = \sigma\}. (In preparation for Fubini-Tonelli)
  5. MellinInversion_aux4 This is Fubini-Tonelli in this context
  6. MellinInversion Combining the above and following the proof outline should give Mellin Inversion.

And from @Terence Tao: now that the first two lemmas of Wiener-Ikehara are done:

  1. Decay bounds This should be a straightforward integration by parts (and the constant C should be something very explicit, probably even 1 (one may need some numerical bound on π\pi for this)).
  2. Limiting Fourier Identity This should also be straightforward - combine the two Fourier identities already proven, and invoke dominated convergence using the decay bound.
  3. Limiting corollary Immediate from previous identity and the Riemann-Lebesgue lemma
  4. Extension to Schwartz class This one is trickier: one wants to extend the identity in the previous corollary from C^2_c functions to Schwartz functions by applying smooth cutoffs (using the smooth Urysohn lemma) and take limits. There will be a moderate amount of estimation of error terms that needs to be done.

Thanks to all for the contributions!!

Ruben Van de Velde (Feb 22 2024 at 17:28):

Not sure if you're aware, but there's some approximations to a few decimal places of pi in mathlib

Alex Kontorovich (Feb 22 2024 at 18:00):

Ruben Van de Velde said:

Not sure if you're aware, but there's some approximations to a few decimal places of pi in mathlib

Sorry, should that be in reference to a different thread...?

Ruben Van de Velde (Feb 22 2024 at 18:29):

No, in response to the parenthetical in (7)

Michael Stoll (Feb 22 2024 at 18:34):

docs#Real.pi_gt_3141592 and docs#Real.pi_lt_3141593

Alex Kontorovich (Feb 22 2024 at 18:47):

(I was thinking of something much cruder, like π<1000\pi<1000... :blush:)

Terence Tao (Feb 22 2024 at 19:38):

Actually after working it out with pen and paper it seems the constant CC one gets in (7) is C=(1+1(2π)2)Rdt1+t2=π+14π3.221C =(1 + \frac{1}{(2\pi)^2}) \int_{\bf R} \frac{dt}{1+t^2} = \pi + \frac{1}{4\pi} \approx 3.221\dots. One could use upper and lower bounds on π\pi to get a bound for CC, but actually for our application all we need is that a finite bound CC exists, so specific bounds on π\pi are not needed. (Alternatively, one could use such bounds to prove (7) with say C=4C=4 to make it a slightly cleaner statement.)

Alex Kontorovich (Feb 23 2024 at 04:11):

I just pushed some progress on 1. PartialIntegration. When I leave unspecified the hypotheses for integrability (or decay), what I mean is: I can think of a variety of ways of spelling them, none seemingly better than others; so my modus operandi is just to start writing out the proof, and any time I apply an appropriate Mathlib lemma, I add any arising requisite hypotheses to the statement. (There's probably a better way to predict exactly which conditions will be needed?) In the case of PartialIntegration, it looks like the following should suffice:

lemma PartialIntegration {f g :   } (fDiff : DifferentiableOn  f (Set.Ioi 0))
    (gDiff : DifferentiableOn  g (Set.Ioi 0))
    (fDerivInt : IntegrableOn (deriv f) (Set.Ioi 0))
    (gDerivInt : IntegrableOn (deriv g) (Set.Ioi 0))
    (fDerivgInt : IntegrableOn (f * deriv g) (Set.Ioi 0))
    (gDerivfInt : IntegrableOn (deriv f * g) (Set.Ioi 0))
    (lim_at_zero : Tendsto (f * g) (𝓝[>]0) (𝓝 0))
    (lim_at_inf : Tendsto (f * g) atTop (𝓝 0)) :
     x in Set.Ioi 0, f x * (deriv g x) = -∫ x in Set.Ioi 0, f x * (g x) := by sorry

After what I have there, it should be a matter of chaining various limits together; maybe someone can help with those last steps (which require some finesse with filters...).

David Loeffler (Feb 23 2024 at 06:37):

Can I raise a contrary opinion here?

I think it's a pity to pursue this special-case argument for Mellin inversion when general Fourier inversion is available. My point is that developing the API to relate Mellin transforms restricted to vertical lines σ+iR\sigma + i\mathbb{R} to Fourier transforms is clearly something worth having anyway – it is bound to get added to mathlib at some point – and once this exists, deducing Mellin inversion from Sebastian's Fourier inversion results should be very quick indeed.

llllvvuu (Feb 23 2024 at 09:19):

I opened a mathlib PR for improper integration by parts: https://github.com/leanprover-community/mathlib4/pull/10874/files . I can add it to this project tomorrow (integral_Ioi_mul_deriv_eq_deriv_mul should give what we want)

Alex Kontorovich (Feb 23 2024 at 13:03):

David Loeffler said:

Can I raise a contrary opinion here?

I think it's a pity to pursue this special-case argument for Mellin inversion when general Fourier inversion is available. My point is that developing the API to relate Mellin transforms restricted to vertical lines σ+iR\sigma + i\mathbb{R} to Fourier transforms is clearly something worth having anyway – it is bound to get added to mathlib at some point – and once this exists, deducing Mellin inversion from Sebastian's Fourier inversion results should be very quick indeed.

Thanks David; that's certainly a very valid point, and one @Terence Tao and I discussed offline. We felt it was ok to have a bit of redundancy. But if someone wants to jump straight to 6.MellinInversion from Sebastien's work (certainly no need to wait for it to officially make it into Mathlib to incorporate it into PNT+...), that's perfectly fine with me. And then we can ignore the previous targets and move on to the next stage... Thoughts?

Alex Kontorovich (Feb 23 2024 at 14:42):

PS does the Fourier transform API allow non-unitary characters? (Of course we could deal with xσx^\sigma explicitly, but that might be more of a pain than the proposed direct Mellin approach…?)

llllvvuu (Feb 23 2024 at 19:09):

llllvvuu said:

I opened a mathlib PR for improper integration by parts: https://github.com/leanprover-community/mathlib4/pull/10874/files . I can add it to this project tomorrow (integral_Ioi_mul_deriv_eq_deriv_mul should give what we want)

alright, copied over: https://github.com/AlexKontorovich/PrimeNumberTheoremAnd/pull/81

Terence Tao (Feb 23 2024 at 19:52):

Alex Kontorovich said:

David Loeffler said:

Can I raise a contrary opinion here?

I think it's a pity to pursue this special-case argument for Mellin inversion when general Fourier inversion is available. My point is that developing the API to relate Mellin transforms restricted to vertical lines σ+iR\sigma + i\mathbb{R} to Fourier transforms is clearly something worth having anyway – it is bound to get added to mathlib at some point – and once this exists, deducing Mellin inversion from Sebastian's Fourier inversion results should be very quick indeed.

Thanks David; that's certainly a very valid point, and one Terence Tao and I discussed offline. We felt it was ok to have a bit of redundancy. But if someone wants to jump straight to 6.MellinInversion from Sebastien's work (certainly no need to wait for it to officially make it into Mathlib to incorporate it into PNT+...), that's perfectly fine with me. And then we can ignore the previous targets and move on to the next stage... Thoughts?

I think it makes sense to have Mellin inversion and Fourier inversion as sorries for now and work on the consequences of both; the decision of which implication between the two (or both) to actually formalize in our project can be done at a later stage. Even if only one of these implications ends up in Mathlib, I think there is some value in having multiple logical flows in our project (we already have three different ways to get to the prime number theorem, for instance), as they may generalize in different ways and also give us some general data points as to what types of arguments are easier to formalize than others.

Alex Kontorovich (Feb 24 2024 at 14:13):

We can certainly continue forward with sorrys, no need to give the proof "linearly". That said, now that we have PartialIntegration and Perron's formula, MellinInversion should follow almost immediately, could be at most a day or two of work. I think it would be nice to have a clean statement of it, with general conditions on the test function. Of course I could just state it for smooth functions with compact support in (0,)(0,\infty), but we’re so close that I think we may as well finish this part now (while I prepare the next set of targets in Approach 2 - which also is mathematically extremely close to done…). What do you think?

llllvvuu (Feb 25 2024 at 07:27):

I played around with the Fourier inversion -> Mellin inversion implication a bit in mathlib and got it mostly done: https://github.com/leanprover-community/mathlib4/pull/10944

llllvvuu (Feb 25 2024 at 11:13):

llllvvuu said:

I played around with the Fourier inversion -> Mellin inversion implication a bit in mathlib and got it mostly done: https://github.com/leanprover-community/mathlib4/pull/10944

This is now sorry-free. I can later mirror it into PNT+ under a different name (MellinInversion') if desired.

Alex Kontorovich (Feb 25 2024 at 17:20):

Fantastic! Ok I'll make a new set of outstanding tasks then.

Alex Kontorovich (Feb 25 2024 at 17:24):

To that end, @Michael Stoll (or @David Loeffler), what bounds do we have on ζ/ζ\zeta'/\zeta on the 1-line? The "truth" is ζ/ζ(1+it)ϵtϵ\zeta'/\zeta ( 1 + it) \ll_\epsilon |t|^\epsilon (even something like log2t\ll \log^2 t), as tt\to\infty, but it would already be enough to have t1/2\ll |t|^{1/2} (or even t1000\ll |t|^{1000}, if we take more smoothing)... Which of these is closest to formalized?

Michael Stoll (Feb 25 2024 at 18:12):

So far, I think we only have that it is defined (i.e., ζ\zeta does not vanish on the 1-line).

Alex Kontorovich (Feb 25 2024 at 18:19):

Ok so I'll make that the next big target. I should have the list by tomorrow...

Alex Kontorovich (Feb 27 2024 at 04:59):

I’ll need a little more time to set up all the zeta bounds. In the meantime, there’s plenty to do in the MellinCalculus file. V4 coming right up.

llllvvuu (Mar 05 2024 at 22:43):

llllvvuu said:

I played around with the Fourier inversion -> Mellin inversion implication a bit in mathlib and got it mostly done: https://github.com/leanprover-community/mathlib4/pull/10944

Fourier inversion got merged, so I've added Mellin inversion to the mathlib review queue


Last updated: May 02 2025 at 03:31 UTC