| | |
Summary: Shape Analysis with Inductive Recursion Synthesis
Bolei Guo Neil Vachharajani David I. August
Department of Computer Science
Princeton University {bguo,nvachhar,august}@princeton.edu
Abstract
Separation logic with recursively defined predicates allows for con-
cise yet precise description of the shapes of data structures. How-
ever, most uses of separation logic for program analysis rely on
pre-defined recursive predicates, limiting the class of programs an-
alyzable to those that manipulate only a priori data structures. This
paper describes a general algorithm based on inductive program
synthesis that automatically infers recursive shape invariants, yield-
ing a shape analysis based on separation logic that can be applied
to any program.
A key strength of separation logic is that it facilitates, via ex-
plicit expression of structural separation, local reasoning about
heap where the effects of altering one part of a data structure are
analyzed in isolation from the rest. The interaction between local
reasoning and the global invariants given by recursive predicates is
a difficult area, especially in the presence of complex internal shar-
|