Verification of Compilers

We report about a joint project of the universities at Karlsruhe, Kiel and Ulm on how to get correct compilers for realistic programming languages. Arguing about compiler correctness must strat from a compiling specification describing the correspondence of source and target language in formal terms. We have chosen to use abstract state machines to formalize this correspondence. This allows us to stay with traditional compiler architectures for subdividing the compiler tast. A main achievement is the use of program checking for replacing large parts of compiler verification by the much simpler task of verifying program checkers.

[1]  Egon Börger,et al.  Occam: Specification and Compiler Correctness - Part I: The Primary Model , 1994, PROCOMET.

[2]  Ken Thompson,et al.  Reflections on trusting trust , 1984, CACM.

[3]  Wolfgang Polak,et al.  Compiler Specification and Verification , 1981 .

[4]  Egon Börger,et al.  Correctness of Compiling Occam to Transputer Code , 1996, Comput. J..

[5]  Thomas Beth,et al.  Public-Key Cryptography: State of the Art and Future Directions , 1992, Lecture Notes in Computer Science.

[6]  Teodor Rus,et al.  Algebraic Processing of Programming Languages , 1998, Theor. Comput. Sci..

[7]  Charles Wallace,et al.  The semantics of the C++ programming language , 1995, Specification and validation methods.

[8]  Peter D. Mosses,et al.  Abstract Semantic Algebras , 1982, Formal Description of Programming Concepts.

[9]  Manuel Blum,et al.  Software reliability via run-time result-checking , 1997, JACM.

[10]  Markus Müller-Olm,et al.  Modular Compiler Verification , 1997, Lecture Notes in Computer Science.

[11]  Wolf Zimmermann,et al.  On the Construction of Correct Compiler Back-Ends: An ASM-Approach , 1997, J. Univers. Comput. Sci..

[12]  John McCarthy,et al.  Correctness of a compiler for arithmetic expressions , 1966 .

[13]  Jens Palsberg,et al.  Provably Correct Compiler Generation , 1992 .

[14]  Thilo S. Gaul,et al.  Correct Programs without Proof? On Checker-Based Program Verification , 1998, Tool Support for System Specification, Development and Verification.

[15]  Gerhard Goos,et al.  Sather-K - The Language , 1997, Softw. Concepts Tools.

[16]  Egon Börger,et al.  Defining the Java Virtual Machine as Platform for Provably Correct Java Compilation , 1998, MFCS.

[17]  Jens Palsberg An automatically generated and provably correct compiler for a subset of Ada , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[18]  Gerhard Goos,et al.  Construction of Verified Compiler Front-Ends with Program-Checking , 1999, Ershov Memorial Conference.

[19]  Stephan Diehl,et al.  Semantics-directed generation of compilers and abstract machines , 1996 .

[20]  Helmut Emmelmann,et al.  BEG: a generator for efficient back ends , 1989, PLDI '89.

[21]  Peter D. Mosses Action Semantics , 1986, ADT.

[22]  Lawrence Charles Paulson A compiler generator for semantic grammars , 1981 .

[23]  Manuel Blum,et al.  Designing programs that check their work , 1989, STOC '89.

[24]  J. Strother Moore Piton: A Mechanically Verified Assembly-Level Language , 1996 .

[25]  Theo M. V. Janssen,et al.  Algebraic Translations, Correctness and Algebraic Compiler Construction , 1998, Theor. Comput. Sci..

[26]  David Van Campenhout,et al.  Specification and verification of pipelining in the ARM2 RISC microprocessor , 1998, TODE.

[27]  Amir Pnueli,et al.  The Code Validation Tool (CVT) , 1998, International Journal on Software Tools for Technology Transfer (STTT).

[28]  Alfonso Pierantonio,et al.  Montages Specifications of Realistic Programming Languages , 1997, J. Univers. Comput. Sci..

[29]  Manuel Blum,et al.  Self-testing/correcting with applications to numerical problems , 1990, STOC '90.

[30]  Amir Pnueli,et al.  Translation Validation , 1998, TACAS.

[31]  Martin Fränzle,et al.  Provably Correct Compiler Development and Implementation , 1992, CC.

[32]  Egon Börger,et al.  A Practical Method for Rigorously Controllable Hardware Design , 1997, ZUM.

[33]  Deryck Forsyth Brown,et al.  ACTRESS: An Action Semantics Directed Compiler Generator (Summary) , 1991, Functional Programming.

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

[35]  Yuri Gurevich,et al.  The Semantics of the C Programming Language , 1992, CSL.

[36]  Egon Börger,et al.  A Programmer Friendly Modular Definition of the Semantics of Java , 1999, Formal Syntax and Semantics of Java.

[37]  Mitchell Wand A semantic prototyping system , 1984, SIGPLAN '84.

[38]  Jörg P. Müller,et al.  The Design of Intelligent Agents , 1996, Lecture Notes in Computer Science.

[39]  Martin Wirsing,et al.  Formal Syntax and Semantics of Java , 1999 .

[40]  David A. Espinosa Semantic Lego , 1995 .