Glad to see that formal method techniques are becoming mainstream.
However, I wished things were as simple as saying to an LLM "verify this." Verification is a more thorough and rigorous process, where you need to clearly define what you need to prove. Leaving that up to the LLM tends to result in poor coverage and the software might still contain critical bugs. And when this happens these days, it's usually formal methods that takes the blame.
Even in this post, the main output of the chat was how many bugs were found and fixed via lean. But the most interesting part when you are using lean is *what properties* you proved.
I used Opus 5.5 to formally verify the Claude Agent SDK using Lean. A couple short prompts = 16 PRs fixing various bugs and race conditions. Video attached.
TLA+ also works well. I sometimes combine Lean and TLA+ to look for issues around data flow, concurrency, and state mgmt.
I don't know either language well, but Claude is excellent at both. This approach is super useful for formally modeling your code and finding bugs that a human probably wouldn't have spotted.
Is formal verification the future of coding (or at least, bug finding)?