Projects

Systems I build and contribute to. Most of them are attempts at the same question: how much of a proof can a machine work out on its own, and how do we stay sure the answer is right?

Sketchpad

Autoformalisation · Isabelle and Lean · University of Edinburgh

Sketchpad turns natural-language proofs into structured formal sketches for practitioners working in Isabelle and Lean. Rather than treating a proof as one monolithic translation problem, it uses a graph-based representation that decomposes a proof into individual statements — which makes fine-grained autoformalisation possible and lets the system work usefully with partial or incomplete proofs.

The project is supported by Renaissance Philanthropy’s AI for Math Fund, joint with Wenda Li at Edinburgh.

Project page

Lemmanaid

Lemma conjecturing · Isabelle

Useful intermediate lemmas are normally something a human has to think of. Lemmanaid automates that step by splitting it in two: a fine-tuned language model proposes a lemma template describing the shape a lemma should take, and symbolic methods fill in the details. The neuro-symbolic split is what makes it work — neither half is strong enough alone.

Evaluated across formal mathematics libraries, it recovers a substantial fraction of human-written reference lemmas, and outperforms frontier language models used directly on the same task.

Paper · Earlier workshop paper

Proverbot9001

Proof automation · Rocq

Proverbot9001 uses neural networks to synthesise correctness proofs for software, searching the space of proof scripts in Rocq with a learned model guiding which tactic to try next. It was, at publication, able to prove a significantly larger share of theorems in a real verification benchmark than prior automated approaches.

Website · Paper

VeriWasm

Verification · WebAssembly

WebAssembly promises memory isolation, but that promise is only as good as the compiler that lowers it to native code. VeriWasm is a static offline verifier that checks the safety of natively-compiled Wasm binaries directly, so you no longer have to trust the compiler to have got sandboxing right. It found real isolation bugs in a production Wasm compiler.

Paper · Code