Automatic Verification of Iterated Separating Conjunctions using Symbolic Execution
Peter M\"uller, Malte Schwerhoff, Alexander J. Summers

TL;DR
This paper introduces a novel symbolic execution method that automatically verifies iterated separating conjunctions in permission logics, enabling the analysis of complex data structures like arrays and graphs.
Contribution
It presents the first symbolic execution approach supporting general iterated separating conjunctions with a new heap representation and quantifier management, integrated into the Viper verifier.
Findings
Supports verification of unbounded heap sets
Maintains predictable and efficient SMT performance
Compatible with fractional permissions and recursive predicates
Abstract
In permission logics such as separation logic, the iterated separating conjunction is a quantifier denoting access permission to an unbounded set of heap locations. In contrast to recursive predicates, iterated separating conjunctions do not prescribe a structure on the locations they range over, and so do not restrict how to traverse and modify these locations. This flexibility is important for the verification of random-access data structures such as arrays and data structures that can be traversed in multiple ways such as graphs. Despite its usefulness, no automatic program verifier natively supports iterated separating conjunctions; they are especially difficult to incorporate into symbolic execution engines, the prevalent technique for building verifiers for these logics. In this paper, we present the first symbolic execution technique to support general iterated separating…
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.
