Affiliation:
1. MPI-SWS, Saarbrucken, Germany
2. Seoul National University, Seoul, South Korea
Abstract
One successful approach to verifying programs is refinement, where one establishes that the implementation (e.g., in C) behaves as specified in its mathematical specification. In this approach, the end result (a whole implementation refines a whole specification) is often established via composing multiple “small” refinements.
In this paper, we focus on the task of composing refinements. Our key observation is a novel correspondence between the task of composing refinements and the task of proving entailments in modern separation logic. This correspondence is useful. First, it unlocks tools and abstract constructs developed for separation logic, greatly streamlining the composition proof. Second, it uncovers a fundamentally new verification strategy. We address the key challenge in establishing the correspondence with a novel use of angelic non-determinism.
Guided by the correspondence, we develop RCL (Refinement Composition Logic), a logic dedicated to composing refinements. All our results are formalized in Coq.
Publisher
Association for Computing Machinery (ACM)
Reference36 articles.
1. Andrew W. Appel. 2014. Program Logics for Certified Compilers. Cambridge University Press. https://www.cambridge.org/de/academic/subjects/computer-science/programming-languages-and-applied-logic/program-logics-certified-compilers
2. Ralph-Johan Back and Joakim Wright. 2012. Refinement calculus: a systematic introduction. Springer Science & Business Media.
3. Verified Compilation for Shared-Memory C
4. Session Types as Intuitionistic Linear Propositions
5. Arthur Charguéraud. 2023. Software Foundations Vol. 6, Chapter Wand. https://softwarefoundations.cis.upenn.edu/slf-current/Wand.html