Automated Verification of the Deutsch-Schorr-Waite Tree-Traversal Algorithm

This paper reports on the automated verification of the total correctness (partial correctness and termination) of the Deutsch-Schorr-Waite (DSW) algorithm. DSW is an algorithm for traversing a binary tree without the use of a stack by means of destructive pointer manipulation. Prior approaches to the verification of the algorithm involved applications of theorem provers or hand-written proofs. TVLA's abstract-interpretation approach made possible the automatic symbolic exploration of all memory configurations that can arise. With the introduction of a few simple core and instrumentation relations, TVLA was able to establish the partial correctness and termination of DSW.

[1]  Richard Bornat,et al.  Proving Pointer Programs in Hoare Logic , 2000, MPC.

[2]  Alexandru Nicolau,et al.  Parallelizing Programs with Recursive Data Structures , 1989, IEEE Trans. Parallel Distributed Syst..

[3]  Arthur G. Duncan,et al.  Abstractions, instantiations, and proofs of marking algorithms , 1977, Artificial Intelligence and Programming Languages.

[4]  William M. Waite,et al.  An efficient machine-independent procedure for garbage collection in various list structures , 1967, CACM.

[5]  Tobias Nipkow,et al.  Proving Pointer Programs in Higher-Order Logic , 2003, CADE.

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

[7]  Thomas W. Reps,et al.  Abstraction Refinement via Inductive Learning , 2005, CAV.

[8]  Thomas W. Reps,et al.  Finite Differencing of Logical Formulas for Static Analysis , 2003, ESOP.

[9]  Reinhard Wilhelm,et al.  Logical characterizations of heap abstractions , 2003, TOCL.

[10]  Hongseok Yang,et al.  Automatic Verification of Pointer Programs Using Grammar-Based Shape Analysis , 2005, ESOP.

[11]  Thomas W. Reps,et al.  Putting static analysis to work for verification: A case study , 2000, ISSTA '00.

[12]  Norihisa Suzuki Automatic Verification of Programs with Complex Data Structures , 1976, Outstanding Dissertations in the Computer Sciences.

[13]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[14]  Rodney W. Topor,et al.  The correctness of the Schorr-Waite list marking algorithm , 1979, Acta Informatica.

[15]  Donald E. Knuth,et al.  The art of computer programming: V.1.: Fundamental algorithms , 1997 .

[16]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[17]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[18]  Thomas Reps,et al.  Finite differencing of logical formulas with applications to program analysis , 2003 .

[19]  Gary Lindstrom,et al.  Scanning List Structures Without Stacks or Tag Bits , 1973, Information Processing Letters.

[20]  Alexandru Nicolau,et al.  Intererence analysis tools for parallelizing programs with recursive data structures , 1989, ICS '89.

[21]  Donald E. Knuth The art of computer programming: fundamental algorithms , 1969 .

[22]  Richard Bornat,et al.  Animating Formal Proof at the Surface: The Jape Proof Calculator , 1999, Comput. J..

[23]  Neil Immerman,et al.  Abstraction for Shape Analysis with Fast and Precise Transformers , 2006, CAV.

[24]  Peter W. O'Hearn,et al.  BI as an assertion language for mutable data structures , 2001, POPL '01.

[25]  Tatiana Tambouratzis Counter-clustering for Training Pattern Selection , 2000, Comput. J..

[26]  Hongseok Yang,et al.  Local reasoning for stateful programs , 2001 .

[27]  Roman Manevich,et al.  Partially Disjunctive Heap Abstraction , 2004, SAS.