Translation Validation: From SIGNAL to C

Translation validation is an alternative to the verification of translators (compilers, code generators). Rather than proving in advance that the compiler always produces a target code which correctly implements the source code (compiler verification), each individual translation (i.e. a run of the compiler) is followed by a validation phase which verifies that the target code produced on this run correctly implements the submitted source program. In order to be a practical alternative to compiler verification, a key feature of this validation is its full automation. Since the validation process attempts to "unravel" the transformation effected by the translators, its task becomes increasingly more difficult (and necessary) with the increase of sophistication and variety of the optimizations methods employed by the translator. In this paper we address the practicability of translation validation for highly optimizing, industrial code generators from Signal, a widely used synchronous language, to C. We introduce new abstraction techniques as part of the automation of our approach.

[1]  D. L. Clutterbuck,et al.  The verification of low-level code , 1988, Softw. Eng. J..

[2]  Fausto Giunchiglia,et al.  A Provably Correct Embedded Verifier for the Certification of Safety Critical Software , 1997, CAV.

[3]  Piergiorgio Bertoli,et al.  Mechanized result verification: an industrial application , 2000, International Journal on Software Tools for Technology Transfer.

[4]  Amir Pnueli,et al.  Deciding Equality Formulas by Small Domains Instantiations , 1999, CAV.

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

[6]  Albert Benveniste,et al.  programmi language and its , 2001 .

[7]  Martín Abadi,et al.  The existence of refinement mappings , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[8]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[9]  Vipin Swarup,et al.  The VLISP verified Scheme system , 1995, LISP Symb. Comput..

[10]  Mitchell Wand,et al.  The VLISP verified PreScheme compiler , 1995, LISP Symb. Comput..

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

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

[13]  D. L. Clutterbuck,et al.  The Formal Verification of Safety-critical Assembly Code , 1988 .

[14]  Gerhard Goos,et al.  Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction , 1997 .

[15]  David L. DillComputer Generating Proofs from a Decision Procedure , 1999 .

[16]  K. Mani Chandy Parallel program design , 1989 .

[17]  Paul Curzon A Verified Compiler For A Structured Assembly Language , 1991, 1991., International Workshop on the HOL Theorem Proving System and Its Applications.

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

[19]  Joshua Guttman {28 () Vlisp: a Veriied Implementation of Scheme * , 1995 .

[20]  Mitchell Wand,et al.  VLISP: A verified implementation of Scheme , 1995, LISP Symb. Comput..

[21]  Yuri Gurevich,et al.  The Classical Decision Problem , 1997, Perspectives in Mathematical Logic.

[22]  Amir Pnueli,et al.  A Platform for Combining Deductive with Algorithmic Verification , 1996, CAV.