ACM Transactions on Programming Languages and Systems · 2011 · 13 citations · 7 references
ComputingComputer ScienceAlgorithmsFormal MethodsProgramming LanguagesAbstract InterpretationData-flow AnalysisHoare LogicShape AnalysisHoare TriplesInference RulesSatisfiabilitySeparation Logic
In this article, we present a new shape analysis algorithm. The key distinguishing aspect of our algorithm is that it is completely compositional, bottom-up and noniterative. We present our algorithm as an inference system for computing Hoare triples summarizing heap manipulating programs. Our inference rules are compositional: Hoare triples for a compound statement are computed from the Hoare triples of its component statements. These inference rules are used as the basis for bottom-up shape analysis of programs. Specifically, we present a Logic of Iterated Separation Formulae (LISF), which uses the iterated separating conjunct of Reynolds [2002] to represent program states. A key ingredient of our inference rules is a strong bi-abduction operation between two logical formulas. We describe sound strong bi-abduction and satisfiability procedures for LISF. We have built a tool called S p I n E that implements these inference rules and have evaluated it on standard shape analysis benchmark programs. Our experiments show that S p I n E can generate expressive summaries, which are complete functional specifications in many cases.
7
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.2K citations
Compositional shape analysis by means of bi-abduction
Cristiano Calcagno, Dino Distefano, Peter W. O’Hearn et al. · 2009 · 276 citations
The pointer assertion logic engine
Anders Møller, Michael I. Schwartzbach · 2001 · 264 citations
A semantics for procedure local heaps and its abstractions
Noam Rinetzky, Jörg Bauer, Thomas Reps et al. · 2005 · 111 citations