ABSTRACT
Translation validation is a technique for checking that, after an optimization has run, the input and output of the optimization are equivalent. Traditionally, translation validation has been used to prove concrete, fully specified programs equivalent. In this paper we present Parameterized Equivalence Checking (PEC), a generalization of translation validation that can prove the equivalence of parameterized programs. A parameterized program is a partially specified program that can represent multiple concrete programs. For example, a parameterized program may contain a section of code whose only known property is that it does not modify certain variables. By proving parameterized programs equivalent, PEC can prove the correctness of transformation rules that represent complex optimizations once and for all, before they are ever run. We implemented our PEC technique in a tool that can establish the equivalence of two parameterized programs. To highlight the power of PEC, we designed a language for implementing complex optimizations using many-to-many rewrite rules, and used this language to implement a variety of optimizations including software pipelining, loop unrolling, loop unswitching, loop interchange, and loop fusion. Finally, to demonstrate the effectiveness of PEC, we used our PEC implementation to verify that all the optimizations we implemented in our language preserve program behavior.
- Nick Benton. Simple relational correctness proofs for static analyses and and program transformations. In POPL, 2004. Google Scholar
Digital Library
- David Cachera, Thomas Jensen, David Pichardie, and Vlad Rusu. Extracting a data flow analyser in constructive logic. In ESOP, 2004.Google Scholar
Cross Ref
- Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, 1977. Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. Systematic design of program transformation frameworks by abstract interpretation. In POPL, 2002. Google Scholar
Digital Library
- D. Detlefs, G. Nelson, and J. Saxe. Simplify: A theorem prover for program checking. Journal of the Association for Computing Machinery, 52(3):365--473, May 2005. Google Scholar
Digital Library
- Benjamin Goldberg, Lenore Zuck, and Clark Barrett. Into the loops: Practical issues in translation validation for optimizing compilers. Electronic Notes in Theoretical Computer Science, 132(1):53--71, May 2005. Google Scholar
Digital Library
- J. Guttman, J. Ramsdell, and M. Wand. VLISP: a verified implementation of Scheme. Lisp and Symbolic Compucation, 8(1-2):33--110, 1995. Google Scholar
Digital Library
- M. Kauffmann and R.S. Boyer. The Boyer-Moore theorem prover and its interactive enhancement. Computers and Mathematics with Applications, 29(2):27--62, 1995.Google Scholar
Cross Ref
- Wayne Kelly and William Pugh. Finding legal reordering transformations using mappings. In Languages and Compilers for Parallel Computing, 1994. Google Scholar
Digital Library
- Dexter Kozen. Kleene algebra with tests. ACM Transactions on Programming Langauges and Systems, 19(3):427--443, 1997. Google Scholar
Digital Library
- Sudipta Kundu, Sorin Lerner, and Rajesh Gupta. Automated refinement checking of concurrent systems. In ICCAD, 2007. Google Scholar
Digital Library
- Sudipta Kundu, Sorin Lerner, and Rajesh Gupta. Validating high-level synthesis. In Computer Aided Vefification (CAV), 2008. Google Scholar
Digital Library
- David Lacey, Neil D. Jones, Eric Van Wyk, and Carl Christian. Proving correctness of compiler optimizations by temporal logic. In POPL, 2002. Google Scholar
Digital Library
- Sorin Lerner, Todd Millstein, and Craig Chambers. Automatically proving the correctness of compiler optimizations. In PLDI, 2003. Google Scholar
Digital Library
- Sorin Lerner, Todd Millstein, Erika Rice, and Craig Chambers. Automated soundness proofs for dataflow analyses and transformations via local rules. In POPL, 2005. Google Scholar
Digital Library
- Xavier Leroy. Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In POPL, 2006. Google Scholar
Digital Library
- R. Milner. Communication and concurrency. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1989. Google Scholar
Digital Library
- S. Muchnick. Advanced Compiler Design And Implementation. Morgan Kaufmann Publishers, 1997. Google Scholar
Digital Library
- G. Necula. Translation validation for an optimizing compiler. In PLDI, June 2000. Google Scholar
Digital Library
- A. Pnueli, M. Siegel, and E. Singerman. Translation validation. In TACAS, 1998. Google Scholar
Digital Library
- William Pugh. The omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM, 8:4--13, 1992.Google Scholar
- Martin Rinard and Darko Marinov. Credible compilation. In Proceedings of the FLoC Workshop Run-Time Result Verification, July 1999.Google Scholar
- Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: a new analysis framework for parallelizing compilers. In PLDI, 1996. Google Scholar
Digital Library
- Ganesh Sittampalam, Oege de Moor, and Ken Friis Larsen. Incremental execution of transformation specifications. In POPL, 2004. Google Scholar
Digital Library
- Bernhard Steffen. Data flow analysis as model checking. In Theoretical Aspects of Computer Science, volume 526 of Lecture Notes in Computer Science, pages 346--364. Springer-Verlag, September 1991. Google Scholar
Digital Library
- Steven W. K. Tjiang and John L. Hennessy. Sharlit -- a tool for building optimizers. In PLDI, 1992. Google Scholar
Digital Library
- Jean-Baptiste Tristan and Xavier Leroy. Verified validation of lazy code motion. In POPL, 2008. Google Scholar
Digital Library
- Jean-Baptiste Tristan and Xavier Leroy. Formal verification of translation validators: a case study on instruction scheduling optimizations. In PLDI, 2009. Google Scholar
Digital Library
- Deborah L. Whitfield and Mary Lou Soffa. An approach for exploring code improving transformations. ACM Transactions on Programming Languages and Systems, 19(6):1053--1084, November 1997. Google Scholar
Digital Library
- Kwangkeun Yi and Williams Ludwell Harrison III. Automatic generation and management of interprocedural program analyses. In POPL, 1993. Google Scholar
Digital Library
- William D. Young. A mechanically verified code generator. Journal of Automated Reasoning, 5(4):493--518, December 1989. Google Scholar
Digital Library
- Lenore Zuck, Amir Pnueli, Benjamin Goldberg, Clark Barrett, Yi Fang, and Ying Hu. Translation and run-time validation of loop transformations. Form. Methods Syst. Des., 27(3):335--360, 2005. Google Scholar
Digital Library
Index Terms
Proving optimizations correct using parameterized program equivalence
Recommendations
Proving optimizations correct using parameterized program equivalence
PLDI '09Translation validation is a technique for checking that, after an optimization has run, the input and output of the optimization are equivalent. Traditionally, translation validation has been used to prove concrete, fully specified programs equivalent. ...
Validating More Loop Optimizations
Translation validation is a technique for ensuring that a translator, such as a compiler, produces correct results. Because complete verification of the translator itself is often infeasible, translation validation advocates coupling the verification ...
Bringing extensibility to verified compilers
PLDI '10: Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and ImplementationVerified compilers, such as Leroy's CompCert, are accompanied by a fully checked correctness proof. Both the compiler and proof are often constructed with an interactive proof assistant. This technique provides a strong, end-to-end correctness guarantee ...







Comments