Verified Compilation of C Programs with a Nominal Memory ModelRemote
Memory models play an important role in verified compilation of imperative programming languages. A representative one is the block-based memory model of CompCert—the state-of-the-art verified C compiler. Despite its success, the abstraction over memory space provided by CompCert’s memory model is still primitive and inflexible. In essence, it uses a fixed representation for identifying memory blocks in a global memory space and uses a globally shared state for distinguishing between used and unused blocks. Therefore, any reasoning about memory must work uniformly for the global memory; it is impossible to individually reason about different sub-regions of memory (i.e., the stack and global definitions). This does not only incur unnecessarily complexity in compiler verification, but also pose significant difficulty for supporting verified compilation of open or concurrent programs that need to work with contextual memory, as manifested in many previous extensions of CompCert.
To remove the above limitations, we propose an enhancement to the block-based memory model based on \emph{nominal techniques}; we call it the \emph{nominal memory model}. By adopting the key concepts of nominal techniques such as \emph{atomic names} and \emph{supports} to model the memory space, we are able to \emph{1)} generalize the representation of memory blocks to any types satisfying the properties of atomic names and \emph{2)} remove the global constraints for managing memory blocks, enabling flexible memory structures for open and concurrent programs.
To demonstrate the effectiveness of the nominal memory model, we develop a series of extensions of CompCert based on it. These extensions show that the nominal memory model \emph{1)} supports a general framework for verified compilation of C programs, \emph{2)} enables concise and intuitive reasoning of compiler transformations on partial memory; and \emph{3)} enables modular reasoning about programs working with contextual memory. We also demonstrate that these extensions require limited changes to the original CompCert, making the verification techniques based on the nominal memory model easy to adopt.
Fri 21 JanDisplayed time zone: Eastern Time (US & Canada) change
15:05 - 16:20 | |||
15:05 25mResearch paper | Certifying Derivation of State Machines from CoroutinesInPerson POPL Mirai Ikebuchi National Institute of Informatics, Andres Erbsen Massachusetts Institute of Technology, Adam Chlipala Massachusetts Institute of Technology DOI Media Attached | ||
15:30 25mResearch paper | VIP: Verifying Real-World C Idioms with Integer-Pointer CastsRemote POPL Rodolphe Lepigre MPI-SWS, Michael Sammler MPI-SWS, Kayvan Memarian University of Cambridge, Robbert Krebbers Radboud University Nijmegen, Derek Dreyer MPI-SWS, Peter Sewell University of Cambridge DOI Media Attached | ||
15:55 25mResearch paper | Verified Compilation of C Programs with a Nominal Memory ModelRemote POPL Yuting Wang Shanghai Jiao Tong University, Ling Zhang Shanghai Jiao Tong University, Zhong Shao Yale University, Jérémie Koenig Yale University DOI Media Attached |