Reasoning about Abstract State Machines: The WAM Case Study

This paper describes the rst half of the formal veri cation of a Prolog compiler with the KIV (\Karlsruhe Interactive Veri er") system. Our work is based on [BR95], where an operational Prolog semantics is de ned using the formalism of Gurevich Abstract State Machines, and then re ned in several steps to the Warren Abstract Machine (WAM). We de ne a general translation of sequential Abstract State Machines to Dynamic Logic, which formalizes correctness of such re nement steps as a deduction problem. A proof technique for veri cation is presented, which corresponds to the informal use of proof maps. 6 of the 12 given re nement steps were veri ed. We found that the proof sketches given in [BR95] hide a lot of implicit assumptions. We report on our experiences in uncovering these assumptions incrementally during formal veri cation, and the support KIV o ers for such `evolutionary' correctness proofs.

[1]  Egon Börger,et al.  The WAM - Definition and Compiler Correctness , 1995, Logic Programming: Formal Methods and Practical Applications.

[2]  Peter H. Schmitt Proving WAM compiler correctness , 1994 .

[3]  Jeffrey S. Moore Piton: a verified assembly level language , 1988 .

[4]  Robert Goldblatt,et al.  Axiomatising the Logic of Computer Programming , 1982, Lecture Notes in Computer Science.

[5]  Yuri Gurevich,et al.  Evolving algebras 1993: Lipari guide , 1995, Specification and validation methods.

[6]  Hartmut Ehrig,et al.  A Kernel Language for Algebraic Specification and Implementation , 1983, ADT.

[7]  Stéphane Kaplan,et al.  A Compiler for Conditional Term Rewriting Systems , 1987, RTA.

[8]  Wolfgang Reif,et al.  Interactive correctness proofs for software modules using KIV , 1995, COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'.

[9]  Robert S. Boyer,et al.  Computational Logic , 1990, ESPRIT Basic Research Series.

[10]  I. V. Ramakrishnan,et al.  Term Indexing , 1995, Lecture Notes in Computer Science.

[11]  Kurt Stenzel,et al.  Proving System Correctness with KIV 3.0 , 1997, CADE.

[12]  Kurt Stenzel,et al.  Reuse of Proofs in Software Verification , 1993, FSTTCS.

[13]  Cornelia Pusch,et al.  Verification of Compiler Correctness for the WAM , 1996, TPHOLs.

[14]  Wolfgang Reif,et al.  The KIV-Approach to Software Verification , 1995, KORSO Book.

[15]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .