Interpolation for data structures

Interpolation based automatic abstraction is a powerful and robust technique for the automated analysis of hardware and software systems. Its use has however been limited to control-dominated applications because of a lack of algorithms for computing interpolants for data structures used in software programs. We present efficient procedures to construct interpolants for the theories of arrays, sets, and multisets using the reduction approach for obtaining decision procedures for complex data structures. The approach taken is that of reducing the theories of such data structures to the theories of equality and linear arithmetic for which efficient interpolating decision procedures exist. This enables interpolation based techniques to be applied to proving properties of programs that manipulate these data structures.

[1]  Derek C. Oppen,et al.  Reasoning about recursively defined data structures , 1978, POPL.

[2]  David L. Dill,et al.  CVC: A Cooperating Validity Checker , 2002, CAV.

[3]  Calogero G. Zarba Combining Multisets with Integers , 2002, CADE.

[4]  A. Church Review: A. M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem , 1937 .

[5]  A. Turing On Computable Numbers, with an Application to the Entscheidungsproblem. , 1937 .

[6]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 2002, TOPL.

[7]  Ranjit Jhala,et al.  A Practical and Complete Approach to Predicate Refinement , 2006, TACAS.

[8]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[9]  G. Sacks A DECISION METHOD FOR ELEMENTARY ALGEBRA AND GEOMETRY , 2003 .

[10]  Melvin Fitting,et al.  First-Order Logic and Automated Theorem Proving , 1990, Graduate Texts in Computer Science.

[11]  C. A. R. Hoare,et al.  Proof of correctness of data representations , 1972, Acta Informatica.

[12]  David L. Dill,et al.  A decision procedure for an extensional theory of arrays , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[13]  Alexander Aiken,et al.  Flow-sensitive type qualifiers , 2002, PLDI '02.

[14]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[15]  Alex Groce,et al.  Modular verification of software components in C , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[16]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[17]  D. Kapur,et al.  A Reduction Approach to Decision Procedures , 2005 .

[18]  Hantao Zhang,et al.  An overview of Rewrite Rule Laboratory (RRL) , 1995 .

[19]  James Noble,et al.  Simple Ownership Types for Object Containment , 2001, ECOOP.

[20]  Viktor Kuncak,et al.  Hob: A Tool for Verifying Data Structure Consistency , 2005, CC.

[21]  Michael I. Schwartzbach,et al.  The pointer assertion logic engine , 2000, PLDI '01.

[22]  Peter W. O'Hearn,et al.  Separation and information hiding , 2004, POPL.

[23]  Volker Weispfenning,et al.  The Complexity of Linear Problems in Fields , 1988, Journal of symbolic computation.

[24]  Viktor Kuncak,et al.  The First-Order Theory of Sets with Cardinality Constraints is Decidable , 2004, ArXiv.

[25]  Thomas A. Henzinger,et al.  Lazy abstraction , 2002, POPL '02.

[26]  Madan Musuvathi,et al.  A Combination Method for Generating Interpolants , 2005, CADE.

[27]  Calogero G. Zarba A Quantifier Elimination Algorithm for a Fragment of Set Theory Involving the Cardinality Operator , 2004 .

[28]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[29]  Edmund M. Clarke,et al.  Counterexample-guided abstraction refinement , 2003, 10th International Symposium on Temporal Representation and Reasoning, 2003 and Fourth International Conference on Temporal Logic. Proceedings..

[30]  Kenneth L. McMillan,et al.  An interpolating theorem prover , 2005, Theor. Comput. Sci..

[31]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[32]  Wilhelm Ackermann,et al.  Solvable Cases Of The Decision Problem , 1954 .

[33]  George C. Necula,et al.  Data Structure Specifications via Local Equality Axioms , 2005, CAV.

[34]  Alonzo Church,et al.  A note on the Entscheidungsproblem , 1936, Journal of Symbolic Logic.

[35]  Yuri Gurevich The Decision Problem for Standard Classes , 1976, J. Symb. Log..

[36]  David Lorge Parnas The Secret History of Information Hiding , 2002, Software Pioneers.

[37]  Ranjit Jhala,et al.  Interpolant-Based Transition Relation Approximation , 2005, CAV.

[38]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974, SIGPLAN Symposium on Very High Level Languages.

[39]  William Craig,et al.  Linear reasoning. A new form of the Herbrand-Gentzen theorem , 1957, Journal of Symbolic Logic.

[40]  Kenneth L. McMillan,et al.  Interpolation and SAT-Based Model Checking , 2003, CAV.

[41]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[42]  M. Fitting First-order logic and automated theorem proving (2nd ed.) , 1996 .

[43]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[44]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .