Affiliation:
1. National University of Singapore, Singapore
2. Shanghai Jiao Tong University, China
Abstract
We develop powerful and general techniques to mechanically verify realistic programs that manipulate heap-represented graphs. These graphs can exhibit well-known organization principles, such as being a directed acyclic graph or a disjoint-forest; alternatively, these graphs can be totally unstructured. The common thread for such structures is that they exhibit deep intrinsic sharing and can be expressed using the language of graph theory. We construct a modular and general setup for reasoning about abstract mathematical graphs and use separation logic to define how such abstract graphs are represented concretely in the heap. We develop a Localize rule that enables modular reasoning about such programs, and show how this rule can support existential quantifiers in postconditions and smoothly handle modified program variables. We demonstrate the generality and power of our techniques by integrating them into the Verified Software Toolchain and certifying the correctness of seven graph-manipulating programs written in CompCert C, including a 400-line generational garbage collector for the CertiCoq project. While doing so, we identify two places where the semantics of C is too weak to define generational garbage collectors of the sort used in the OCaml runtime. Our proofs are entirely machine-checked in Coq.
Funder
Yale-NUS College
Shanghai Pujiang Program
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Rooting for Efficiency: Mechanised Reasoning about Array-Based Trees in Separation Logic;Proceedings of the 13th ACM SIGPLAN International Conference on Certified Programs and Proofs;2024-01-09
2. Melocoton: A Program Logic for Verified Interoperability Between OCaml and C;Proceedings of the ACM on Programming Languages;2023-10-16
3. VIP: verifying real-world C idioms with integer-pointer casts;Proceedings of the ACM on Programming Languages;2022-01-12
4. A separation logic for heap space under garbage collection;Proceedings of the ACM on Programming Languages;2022-01-12
5. Coq’s vibrant ecosystem for verification engineering (invited talk);Proceedings of the 11th ACM SIGPLAN International Conference on Certified Programs and Proofs;2022-01-11