Predicate abstraction for linked data structures
From MaRDI portal
Abstract: We present Alias Refinement Types (ART), a new approach to the verification of correctness properties of linked data structures. While there are many techniques for checking that a heap-manipulating program adheres to its specification, they often require that the programmer annotate the behavior of each procedure, for example, in the form of loop invariants and pre- and post-conditions. Predicate abstraction would be an attractive abstract domain for performing invariant inference, existing techniques are not able to reason about the heap with enough precision to verify functional properties of data structure manipulating programs. In this paper, we propose a technique that lifts predicate abstraction to the heap by factoring the analysis of data structures into two orthogonal components: (1) Alias Types, which reason about the physical shape of heap structures, and (2) Refinement Types, which use simple predicates from an SMT decidable theory to capture the logical or semantic properties of the structures. We prove ART sound by translating types into separation logic assertions, thus translating typing derivations in ART into separation logic proofs. We evaluate ART by implementing a tool that performs type inference for an imperative language, and empirically show, using a suite of data-structure benchmarks, that ART requires only 21% of the annotations needed by other state-of-the-art verification techniques.
Recommendations
Cited in
(9)- Foundations of Software Science and Computation Structures
- Verifying properties of well-founded linked lists
- Verification of multi-linked heaps
- Verification, Model Checking, and Abstract Interpretation
- A Reachability Predicate for Analyzing Low-Level Software
- Data abstraction: a general framework to handle program verification of data structures
- ConSORT: context- and flow-sensitive ownership refinement types for imperative programs
- PDL for structured data: a graph-calculus approach
- Predicate abstraction with indexed predicates
This page was built for publication: Predicate abstraction for linked data structures
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q2796037)