Litcius/Paper detail

An Iris Instance for Verifying CompCert C Programs

William Mansky, Ke Du

2024Proceedings of the ACM on Programming Languages12 citationsDOIOpen Access PDF

Abstract

Iris is a generic separation logic framework that has been instantiated to reason about a wide range of programming languages and language features. Most Iris instances are defined on simple core calculi, but by connecting Iris to new or existing formal semantics for practical languages, we can also use it to reason about real programs. In this paper we develop an Iris instance based on CompCert, the verified C compiler, allowing us to prove correctness of C programs under the same semantics we use to compile and run them. We take inspiration from the Verified Software Toolchain (VST), a prior separation logic for CompCert C, and reimplement the program logic of VST in Iris. Unlike most Iris instances, this involves both a new model of resources for CompCert memories, and a new definition of weakest preconditions/Hoare triples, as the Iris defaults for both of these cannot be applied to CompCert as is. Ultimately, we obtain a complete program logic for CompCert C within Iris, and we reconstruct enough of VST’s top-level automation to prove correctness of simple C programs.

Topics & Concepts

Programming languageComputer scienceCorrectnessCompilerSeparation logicSemantics (computer science)ToolchainSimple (philosophy)Logic programmingIRIS (biosensor)SoftwareArtificial intelligenceEpistemologyBiometricsPhilosophyLogic, programming, and type systemsSecurity and Verification in ComputingFormal Methods in Verification
An Iris Instance for Verifying CompCert C Programs | Litcius