mathstodon.xyzMastodonを使った分散型ソーシャルネットワークの一部です。
A Mastodon instance for maths people. We have LaTeX rendering in the web interface!

サーバーの情報

2.9K
人のアクティブユーザー

もっと詳しく

Finally managed to formalize in the repaired version of the arguments in Section 2 of my paper. It was more tedious than I expected, with each line of proof taking about an hour to formalize. In the first week of my project, the bottleneck was my own ignorance of the syntax and tools available in Lean; but currently the bottleneck was rather the tools themselves, which are not yet as advanced as the tools one might see in a computer algebra package. For instance, in one line of my paper I state that the inequality
|sn|1/nmaxk=k,k+1 (2n)12logn1nk1(|sk|/|sn|)1/(nk)
can be rearranged as
|sn|1/nmaxk=k,k+1(2n)nk2klogn1nk1|sk|1/k,
assuming all denominators are positive. This is a reasonably quick task on pen and paper, and can also be done fairly readily in any standard computer algebra package (perhaps after treating max operators manually). However, while Lean does have very useful automated tools for field identities and linear arithmetic, it does not currently have tools to automatically simplify complex expressions involving exponentials, and instead one has to work step by step with the laws of exponentiation (e.g., (xy)z=xyz, xz/yz=(x/y)z, etc.) as well as the other operations appearing above. Each such law is provided by Lean, but sequencing them together is time-consuming.

One step that stumped me for a while was a numerical verification 2e28(e2). This is immediate from a calculator, but to prove it rigorously I ended up having to use the inequality e1+1+12!.

The tools are still steadily improving though. In the near future one can envisage an AI layer on top of Lean in which individual steps in a proof (e.g., "rearrange the previous expression into an upper bound for |sn|1/n") could be described in Mathematical English to the AI, who could then attempt to execute it in Lean, perhaps with the assistance of a computer algebra package.

There is a noticeable difference in the power level of Lean's tools with regards to using equalities, and with regards to using inequalities. For instance, using the inequality
|sn|1/nmaxk=k,k+1 (2n)12logn1nk1(|sk|/|sn|)1/(nk)
mentioned above, I can easily tell Lean to "use the fact that logxy=logxlogy when x,y>0" in a single command `rw [<-Real.log_div] at h` (where `h` is the name assigned to the inequality), and it will automatically locate where in the inequality this law can be applied, and apply it (adding the positivity hypotheses as additional goals to be proven later, but Lean also has a very good tool `positivity` for doing this). But if instead I want to apply the inequality logxx1 (which is also provided by Lean as `Real.log_le_sub_one_of_pos`), this is substantially more tedious, and I have to write out several intermediate steps to tell Lean how to use this inequality. But I view this more as a limitation of the current state of the art of Lean tools (which may well change in coming months or years), and not as a fundamental limitation of the formal proof verification paradigm.

Terence Tao

In the end, I decided not to utilize asymptotic notation in this portion of the argument, and established the final inequality

|sn|1nCn ×
max(|sk|1k,|sk+1|1k+1)

with an explicit constant C, namely

C:=max(e4/e2,27).
Numerically, C is about 6.16, and initially I thought it would be "simpler" to prove the inequality with a clean value of C such as C=7. But rigorously proving C7 with current tools turned out to be so tedious that I abandoned the idea and instead worked with the uglier, but more formally tractable, value of C (especially given that this constant is non-optimal, and an explicit value would be of limited use on many applications).

2023年10月27日 15:20 · · · Web · 2 · 11

@tao Thankfully this constant is smaller than the "constants allowed in real math" mandated by xkcd xkcd.com/899/ haha

xkcdNumber Line

@agnishom @tao A possible approach is the following:
8/3 = 1 + 1 + 1/2 + 1/6 < e < 1 + 1 + 1/2 + 1/6 + 1/18 + ... = 11/4, so exp(4/e) < (11/4)^(3/2) = sqrt((11/4)^3) = sqrt(1331/64). And then sqrt(1331/32) < 7 because 1331 < 1568 = 32 * 7 * 7.

@tao We do have numerical bounds on 𝑒 (Mathlib.Data.Complex.ExponentialBounds) and it's certainly possible to prove numerical bounds on powers (I have a Lean 3 example attached to leanprover.zulipchat.com/#narr ) - but, yes, it's much more complicated than it should be (people have talked about wanting a single tactic to prove such things automatically by numerical approximation).