Compositional Shape Analysis by Means of Bi-Abduction

  title={Compositional Shape Analysis by Means of Bi-Abduction},
  author={Cristiano Calcagno and Dino Distefano and Peter W. O'Hearn and Hongseok Yang},
  journal={J. ACM},
The accurate and efficient treatment of mutable data structures is one of the outstanding problem areas in automatic program verification and analysis. Shape analysis is a form of program analysis that attempts to infer descriptions of the data structures in a program, and to prove that these structures are not misused or corrupted. It is one of the more challenging and expensive forms of program analysis, due to the complexity of aliasing and the need to look arbitrarily deeply into the… 

Figures and Tables from this paper

Compositional shape analysis by means of bi-abduction

A compositional shape analysis, where each procedure is analyzed independently of its callers, based on a generalized form of abduction (inference of explanatory hypotheses) which is the basis of a new interprocedural analysis algorithm.

Bi-Abductive Inference for Shape and Ordering Properties

This work presents a novel one-stage bi-abductive procedure for a combination of data structures and ordering values in the spirit of the Unfold-and-Match paradigm, and demonstrates that it is promising for an automated verification of heap-manipulating programs.

Learning Shape Analysis

A novel statistical machine learning technique that maps observed program states to (possibly disjunctive) separation logic formulas describing the invariant shape of (possibly nested) data structures at relevant program locations to automatically prove memory safety of heap-manipulating programs.

FESA: Fold- and Expand-Based Shape Analysis

A static shape analysis is presented that can prove the absence of NULL- and dangling pointer dereferences in standard algorithms on lists, trees and graphs and it is shown that highly precise shape invariants can be inferred using off-the-shelf SAT-solvers.

A Shape System and Loop Invariant Inference

A shape analysis for linked list programs based on a new shape graph representation that could describe unbounded data structures without loss of pointer information is presented.

Compositional Verification of Heap-Manipulating Programs through Property-Guided Learning

This work proposes to automatically learn heap-related program invariants in a property-guided way for each function call to enhance existing verifiers effectively in automatically verifying complex heap-manipulating programs with multiple function calls.

Precise reasoning with structured time, structured heaps, and collective operations

A formal model, based on a high-level intermediate analysis language, a practical realization in a prototype tool that analyzes C code, and an experimental evaluation that demonstrates competitive results on a series of benchmarks are presented.

Shape Analysis via Second-Order Bi-Abduction

We present a new modular shape analysis that can synthesize heap memory specification on a per method basis. We rely on a second-order biabduction mechanism that can give interpretations to unknown

Resource-sensitive synchronisation inference by abduction

This work presents an analysis which takes as its input a sequential program, augmented with annotations indicating potential parallelization opportunities, and a sequential proof, and produces a correctly-synchronized parallelized program and proof of that program, which satisfies the same specification as the original sequential program and exhibits the same sequential behaviour.