Verification-Preserving Inlining in Automatic Separation Logic Verifiers (extended version)
Thibault Dardinier, Gaurav Parthasarathy, Peter M\"uller

TL;DR
This paper introduces a novel technique for inlining in automatic separation logic verifiers that preserves verification results, reducing annotation overhead while ensuring correctness for bounded program executions.
Contribution
It presents the first verification-preserving inlining method for automatic separation logic verifiers, with a semantic condition and practical checks implemented in Viper.
Findings
Semantic condition guarantees verification preservation
Checks are effective on non-trivial examples
Ensures correctness for bounded executions
Abstract
Bounded verification has proved useful to detect bugs and to increase confidence in the correctness of a program. In contrast to unbounded verification, reasoning about calls via (bounded) inlining and about loops via (bounded) unrolling does not require method specifications and loop invariants and, therefore, reduces the annotation overhead to the bare minimum, namely specifications of the properties to be verified. For verifiers based on traditional program logics, verification is preserved by inlining (and unrolling): successful unbounded verification of a program w.r.t. some annotation implies successful verification of the inlined program. That is, any error detected in the inlined program reveals a true error in the original program. However, this essential property might not hold for automatic separation logic verifiers such as Caper, GRASShopper, RefinedC, Steel, VeriFast, and…
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
TopicsFormal Methods in Verification · Logic, programming, and type systems · Security and Verification in Computing
