Fri 21 Jan 2022 15:55 - 16:20 at Salon I - Verification 1 Chair(s): Lennart Beringer

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 Jan

Displayed time zone: Eastern Time (US & Canada) change

15:05 - 16:20
Verification 1POPL at Salon I
Chair(s): Lennart Beringer Princeton University
15:05
25m
Research 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
25m
Research 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
25m
Research 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