3368779
doi
10.5281/zenodo.3368779
oai:zenodo.org:3368779
Cao, Qinxiang
Shanghai Jiao Tong University
Mohan, Anshuman
National University of Singapore
Hobor, Aquinas
National University of Singapore
Certifying Graph-Manipulating C Programs
via Localizations within Data Structures
Wang, Shengyi
National University of Singapore
info:eu-repo/semantics/openAccess
Other (Attribution)
Separation logic
Graph-manipulating programs
Coq
CompCert
VST
<p>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 six 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.</p>
As submitted to the OOPSLA '19 Artifact Evaluation Committee
Zenodo
2019-08-15
info:eu-repo/semantics/conferencePaper
3368778
0.1
1579542031.909843
579
md5:d440c95b8232662a9215246b8c2076c1
https://zenodo.org/records/3368779/files/README
144141
md5:602c9478fa6265bdca4f34408ce57399
https://zenodo.org/records/3368779/files/Artifact_Overview_Docker.pdf
2591
md5:c2f7395843cda78bcae4b75d4194ff1f
https://zenodo.org/records/3368779/files/Dockerfile
1630
md5:7e28b3f6d85cc870275862ef1c6e9088
https://zenodo.org/records/3368779/files/LICENSE
public
10.5281/zenodo.3368778
isVersionOf
doi