Mizzle: A Complete Concurrent Incorrectness Logic for Preventing False Alarms in Agentic Bug Finding

2026-07-14

Authors: Alexandre Moine, Sam Westrick, Joseph Tassarotti

ArXiv: 2607.11611v1

PDF: Download PDF

Imagine handing a very eager intern a huge codebase and saying "find me bugs." They come back with a stack of reports — and half of them turn out to be nonsense: bugs that look plausible if you squint, but that can never actually happen when the program runs. You've now spent your whole afternoon disproving imaginary problems. That's roughly the state of using large language models to hunt for bugs today. LLMs are great at pattern-matching suspicious code, but they're notoriously prone to false alarms, and each false alarm burns real developer time.

The authors of Mizzle propose a clever fix borrowed from theoretical computer science: make the LLM prove its work. Specifically, when the model reports a bug, it must attach a machine-checkable mathematical proof that the bug is actually reachable during real execution. If the proof checks out, the bug is real. If it doesn't, the report is silently discarded. No more wasted afternoons.

To make this possible, they built Mizzle, a new concurrent incorrectness logic. Traditional program logics prove that a program is correct — that nothing bad ever happens. Incorrectness logic flips this around: it proves that something bad definitely can happen, by reasoning about paths through the code that are actually reachable rather than paths that might merely seem possible. The "concurrent" part is the hard bit. Multithreaded bugs — races, deadlocks, weird interleavings — are exactly the kind LLMs both love to flag and love to hallucinate about, because reasoning about thread interleaving is genuinely tricky.

Mizzle's contributions boil down to:

The bigger picture: as LLMs get shoved into more and more parts of software engineering, we keep hitting the same wall — they're plausible but unreliable. The interesting move here is not "make the LLM smarter" but rather wrap the LLM in a formal verifier that only lets grounded claims through. It's a template that could generalize well beyond bug-finding: any place an LLM emits a claim that can be mechanically checked, you can build a similar guardrail.

Why it matters: It offers a concrete recipe for taming LLM hallucinations in software engineering by pairing the model with a formal proof system that filters out unreachable, false-alarm bug reports.

All newsletters