Agentic proof-oriented programming
Tahina Ramananandro
MSR RiSE
(hosted by Derek Dreyer)
(hosted by Derek Dreyer)
09 Nov 2026, 10:00 am - 11:00 am
Saarbrücken building E1 5, room 029
SWS Colloquium
Project Everest's verified TLS stack in F* took ~100 person-years and
1.5M lines of code/proof. Since then, we enlisted agents to build
verified TLS 1.3 and crypto implementations in 6 weeks each, and X.509
in 6 hours. In line with similar advances in Lean and Rocq, such
experiments highlight three challenges for agentic proof-oriented
programming.
1/ How to audit specifications? We leveraged agents to implement and prove 52 CLRS algorithms and data structures in Pulse, ...
1/ How to audit specifications? We leveraged agents to implement and prove 52 CLRS algorithms and data structures in Pulse, ...
Project Everest's verified TLS stack in F* took ~100 person-years and
1.5M lines of code/proof. Since then, we enlisted agents to build
verified TLS 1.3 and crypto implementations in 6 weeks each, and X.509
in 6 hours. In line with similar advances in Lean and Rocq, such
experiments highlight three challenges for agentic proof-oriented
programming.
1/ How to audit specifications? We leveraged agents to implement and prove 52 CLRS algorithms and data structures in Pulse, the separation logic framework for F*; they initially came with imprecise specs. We introduce Small Proof-Oriented Tests (SPOTs) to expose weaknesses through proven clients. SPOTs, abstraction and ghost state support auditing and strengthening specs, including complexity analysis.
2/ How to prove properties beyond memory safety and functional correctness? We leveraged agents to produce Atlas, a Pulse implementation of TLS 1.3, X.509 and NIST crypto, verified for key agreement. ~500K Pulse lines yield 100K C lines; ~500 theorem lines, rubrics and state-machine specs streamline review. Proven optimizations close the gap with OpenSSL.
3/ How to verify existing code at scale? We introduce PAL, a Proof Annotation Language for C, along with a compiler translating annotated C into Pulse with separation logic specs and proofs. Agents annotate C in place, enabling verification of Linux's loopback driver and Microsoft's MSQUIC.
Read more
1/ How to audit specifications? We leveraged agents to implement and prove 52 CLRS algorithms and data structures in Pulse, the separation logic framework for F*; they initially came with imprecise specs. We introduce Small Proof-Oriented Tests (SPOTs) to expose weaknesses through proven clients. SPOTs, abstraction and ghost state support auditing and strengthening specs, including complexity analysis.
2/ How to prove properties beyond memory safety and functional correctness? We leveraged agents to produce Atlas, a Pulse implementation of TLS 1.3, X.509 and NIST crypto, verified for key agreement. ~500K Pulse lines yield 100K C lines; ~500 theorem lines, rubrics and state-machine specs streamline review. Proven optimizations close the gap with OpenSSL.
3/ How to verify existing code at scale? We introduce PAL, a Proof Annotation Language for C, along with a compiler translating annotated C into Pulse with separation logic specs and proofs. Agents annotate C in place, enabling verification of Linux's loopback driver and Microsoft's MSQUIC.