2026-10-23 · Formal Verification

Claude proved 123 libraries crash-free. Here's what still needs checking.

This week Anthropic's Frontier Red Team and Theorem published proofs that 239 fuzz entry points across 123 open-source libraries never crash, for every input under 64 MB, checked in Rocq against the compiled binary. On the way the work found hundreds of bugs. The result changes what teams should expect from a prover. It also says, in its own limits section, where the remaining risk now lives.

That is real, and it is good news. Memory safety of C libraries is provable at scale now, and the proof companies behind this work are building something every team should use. If you ship a parser or a protocol, put it through them. (Source: Anthropic, LLMs are making formal software verification feasible at a much larger scale, 2026-10-22, and its PDF appendix, verified 2026-10-23. Theorem offers the pipeline free to qualifying open-source projects through OSS Verify, verified 2026-10-23.)

Then read how the spec was written. "The difficulty of obtaining a comprehensive and unambiguous spec is a significant obstacle to verifying software at a larger scale", so the team took "the approach of automatically converting their preexisting compilable test suites into a spec". Their limits section says it plainly: "a proof checker can’t tell you whether your spec matches reality", and “Formally verified” does not mean “bug-free.” The tests were the spec. That is the useful lesson, and it is the subject of our formal verification for AI-generated code guide.

What a proof gives you

TLA+ describes every way a system can behave and states which behaviours are acceptable, for example "there are never two leaders". Its model checker, TLC, explores every state of a finite instance and returns a concrete counterexample when one exists. A prover such as Rocq, Lean or Verus goes further: the property holds for all sizes, relative to the spec and the tool's trusted base. The proofs-at-scale work pushed that from hand-written research artifacts to roughly 180 million machine-written lines.

For concurrency, distributed protocols, memory safety, crypto, compilers and anything quantified over an infinite domain, nothing beats it. We concede that ground completely.

Three limits the proof community names itself

You don't need a sceptic to list the limits. The people who build and teach these tools put them in their own primers:

  1. A model checker checks a finite model. TLC explores one finite instance; anything beyond it needs a proof (Reasonable's TLA+ primer).
  2. The model is not the implementation. In the same primer's words: "The model is not the implementation … the two can drift apart as the code changes". Proving that code refines its model is possible today for Rust in Verus. Most enterprise services are not written that way. (Source: Reasonable's TLA+ primer, verified 2026-10-04.)
  3. Some properties can't be stated as a formula over one behaviour. Hillel Wayne, author of Practical TLA+, lists what that leaves out: reachability, properties over two or more behaviours, statistical properties such as a p95 response time, and robustness to code change. There are workarounds, which his long form, What TLA+ can and can't check, calls "useful hacks, but they're still hacks". (Source: Wayne's post on X, 2026-09-24, and the long form, verified 2026-10-23.)

Cheap proofs move the risk to the spec

A proof shows that the code matches the spec. It never shows that the spec matches what the business meant. As proof search gets cheap, every remaining doubt moves to the spec, and today's measurements say machine-written specs are the weak step:

Martin Kleppmann, who predicts formal verification goes mainstream, says the same: "the challenge will move to correctly defining the specification" (verified 2026-09-25). In business software, the spec is your requirements, your acceptance tests and your business rules. When tests become the spec, their strength bounds what any proof means. The article's appendix measured it, on a verified interpreter: "we deliberately injected seven bugs … Five survived the random tests, while all seven broke the proof". That is mutation analysis, run on the spec's source.

Business software lives in comparisons

Most of the properties that decide whether a release of business software is safe compare two things:

The questionIts formal homeWhat runs it in practice
Does the running service behave like the model?Refinement proofs, rarely practical at code level; trace validation, which its authors say "does not provide formal correctness guarantees" (Cirstea et al., SEFM 2024, verified 2026-10-23)The model replayed against the live system, every disagreement named
Does the mock behave like the real provider?NoneThe same suite run against both in one session, a measured divergence set
Does this release mean what the last one meant?Regression verification, undecidable in generalA meaning-drift audit against a blessed baseline
Would the test suite notice a defect?Mutant killing as a hyperproperty; no prover ships itMutation testing, scored, survivors named
"Quotes are easy to compare", "the premium is explainable"NoneA prose requirement, joined to graded evidence and human review

The industrial record points the same way. AWS's Cedar team found 4 bugs while writing proofs, and 21 more by differential and property-based testing around the verified model (arXiv 2407.01688, verified 2026-09-25). Proof and testing together, each where it is strongest.

What Karate Agent does with the rest

Karate Agent is the governance layer for AI-built software. Requirements, business rules, tests and evidence live in one git-native graph that your agent drives and a human audits. For the questions above:

The rules engine behind this is business rules testing. Why the gap grows as AI writes more code: AI verification debt.

Bring your proofs

None of this is a reason to skip formal methods. Use them, and connect them to the release:

A proof tells you the code matches the spec. We tell you whether the spec matches the business, and whether your tests would notice when either one moves.

See it on public projects

Read the full guide: formal verification for AI-generated code.

Have a proof format or a property class we don't list? We build it during your evaluation.