We have proof automation now
The author discusses the evolution of formal proof automation in programming, specifically focusing on dependently-typed languages like Coq and Lean. While these tools offer high levels of code verification, the author notes the significant time investment required to write formal proofs.
Why it matters
Formal verification is becoming increasingly critical for high-stakes software engineering, though it remains a labor-intensive process.
I've long had a soft spot for dependently-typed languages like Coq Rocq and Lean. They offer the possibility of a type system capable of encoding and enforcing arbitrarily subtle invariants. The sort of thing that, in regular languages, ends up (at best) as a comment, and which quickly gets lost as the size of the team grows. Then you get subtle misunderstandings and components that don't quite fit together. It's often the case that those components have grown to a sufficient size that, when the problem is noticed, aligning either of them is a wearying prospect. Perhaps, say dependent types seductively, you could write those invariants formally and have a machine check them.
Get smarter about the news
Sign up free for a feed built around what you actually care about, Dive Deeper research on any story, and the full text of every article.
Create free accountAlready have an account? Sign in