A Formal C Memory Model for Separation Logic
Robbert Krebbers

TL;DR
This paper presents a formal memory model for C11 that captures both high-level and low-level memory operations, incorporating restrictions for compiler optimization and formalized in Coq.
Contribution
It introduces a comprehensive formal memory model for C11 that integrates permission management and is suitable for separation logic reasoning, fully formalized in Coq.
Findings
Formal memory model matches C11 standard restrictions.
Supports reasoning about program transformations.
Includes a rich permission system for separation logic.
Abstract
The core of a formal semantics of an imperative programming language is a memory model that describes the behavior of operations on the memory. Defining a memory model that matches the description of C in the C11 standard is challenging because C allows both high-level (by means of typed expressions) and low-level (by means of bit manipulation) memory accesses. The C11 standard has restricted the interaction between these two levels to make more effective compiler optimizations possible, on the expense of making the memory model complicated. We describe a formal memory model of the (non-concurrent part of the) C11 standard that incorporates these restrictions, and at the same time describes low-level memory operations. This formal memory model includes a rich permission model to make it usable in separation logic and supports reasoning about program transformations. The memory model…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Parallel Computing and Optimization Techniques · Security and Verification in Computing
