Once again, I think Lean is overkill for doing checks on things like simple smart contracts.
If you are doing novel math… or writing a cryptography paper, Lean is the way to go. But if yo are checking, insufficient funds, has authorization, etc these are sat problems where SMT works better.
Moreover you can take smt solvers, and wrap them in ZK making verification succinct, non interactive, foldable, and for on-chain verification. This is non trivial for Lean proofs.
Lean has interaction that people argue is good for LLM.. I think it’s this very complexity that makes it worse for taking natural language and one shot outputting specs. With automated reasoning over SMT we already have over 99% soundness on this task. I.e you can already take NL and convert it to smt with little battle testing.
Lean would require a lot more interaction.
Lastly the verification aware programming languages and platforms all already use SMT. So if you want to take those specs and convert them into formally verified code, for sol, rust, go, c# and many others, you already have a good start with SMT tooling.
Default, “I like Lean, it works well for math and is powerful” does not mean it’s the best tool for vericoding. It is one option for sure! And will help secure complex cryptography at the maths level.. at the “I want to create a simple formally verified program”level it’s overkill.
おっしゃる通り、現状Lean形式検証はオーバーキルかもしれません。
しかし、ご存知の通りSMTソルバー(モデル検査系)には理論的限界があります。
Leanを作ったLeonardo de Moura氏は元々Z3という著名なSMTソルバーの開発者であり、彼はSMTに限界を感じて定理証明支援系であるLeanを作りました。
(巨大であったZ3に対してTCBであるカーネルを"リーンに"するという思想で)
昨今、飛躍的にAIの性能が高まり爆発的にソフトウェア開発が加速しています。
言い換えると、脆弱性となりうる箇所も爆発的に増えています。
そんな時代において、形式的に最も厳格な正確さを提供する定理証明器が最強の理論的ハーネスであり、長期的に最も採用される検証器であることは間違いないと思います。
それまでの過渡期として、実際には「ワーストケースにおける被害」が大きいソフトウェアから優先的にLean化していくでしょう。
Ethereumプロトコルや耐量子暗号はその代表例です。
逆に、どこまで行っても形式証明するほどではない仕様も存在し、そのようなケースでSMTやテストも有用であり続けると考えます。