Josh Cohen will present his FPO "A Foundationally Verified Intermediate Verification Language" on Friday, 5/2/2025 at 2:30 PM in COS 302 and Zoom

Josh Cohen will present his FPO "A Foundationally Verified Intermediate Verification Language" on Friday, 5/2/2025 at 2:30 PM in COS 302 and Zoom. Committee: Examiners: Andrew Appel (Adviser), Zak Kincaid, and David Walker Readers: Aarti Gupta and Philip Johnson-Freyd (Sandia National Laboratories) Zoom link: [ https://princeton.zoom.us/j/93082391321 | https://princeton.zoom.us/j/93082391321 ] Abstract: Annotation-based deductive verifiers have emerged in recent years as practical, capable, and increasingly scalable tools for verifying programs in languages including C, Rust, Go, OCaml, and Dafny. Intermediate verification languages (IVLs) like Why3, Boogie, and Viper have made it significantly easier to build such verifiers by performing part of the translation from high-level, expressive program logics to SMT formulas once and for all. But these verifiers are difficult to fully trust: their toolchains comprise hundreds of thousands of lines of code and bugs in any part can result in unsoundness. An alternate approach to building program verifiers is the foundational one, where the language semantics, program logic, and user-supplied proofs are defined in a proof assistant, giving an end-to-end soundness theorem. These tools, including VST, CakeML, and Bedrock2, provide very strong guarantees but require manual proof and are inaccessible to non-experts. The two approaches have largely remained separate. IVL-based tools are not themselves verified, while interactive tools cannot take advantage of the automation provided by the IVL and SMT-based pipelines. In this thesis, we take steps towards bridging this gap by providing an implementation of the Why3 IVL in the Coq proof assistant, giving the first foundationally verified IVL. First, we give a novel formal semantics for a core subset of the logic implemented by Why3– polymorphic first-order logic with recursive types, functions, predicates, and pattern matching. We prove sound a compiler from this logic to first-order logic, giving the first machine-checked soundness proofs for a sophisticated pattern matching compiler and a first-order axiomatization of algebraic data types. We then develop a new framework to idiomatically implement OCaml APIs in Coq and use this to produce a Coq implementation of the Why3 logic API. Our IVL implementation is fully executable both within Coq and via extraction to OCaml. Using the latter, we demonstrate our tool’s practicality by running existing Why3-based tools and test suites against our implementation, while the former allows our tool to serve as a future back-end for foundational verifiers such as VST.
participants (1)
-
Gradinfo