Abstract
In the previous chapter we discussed an approach to verify if two programs are equivalent, thereby proving that the translation (performed by an HLS tool) from high-level design to low-level design is correct. In this chapter, we discuss another approach that guarantees correctness of the translation from high-level design to low-level design, by proving the HLS tool itself correct. Unlike translation validation, this approach proves the correctness of an HLS tool once and for all, before it is ever run. In the following sections we describe in details an approach called Parametrized Equivalence Checking [120] (PEC ) that generalizes the translation validation approach discussed in the previous chapter to automatically establish the correctness of semantics preserving transformations once and for all.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Benton, N.: Simple relational correctness proofs for static analyses and program transformations. In: Proceedings of the 31st ACM Symposium on Principles of Programming Languages (2004)
Cachera, D., Jensen, T., Pichardie, D., Rusu, V.: Extracting a data flow analyser in constructive logic. In: Proceedings of the 13th European Symposium on Programming (ESOP 2004), Lecture Notes in Computer Science, vol. 2986. Springer-Verlag (2004)
Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Proceedings of the 4th ACM Symposium on Principles of Programming Languages, pp. 238–252. Los Angeles CA (1977)
Cousot, P., Cousot, R.: Systematic design of program transformation frameworks by abstract interpretation. In: Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Portland OR (2002)
Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: A theorem prover for program checking. Journal of the Association for Computing Machinery 52(3), 365–473 (2005)
Goldberg, B., Zuck, L., Barrett, C.: Into the loops: Practical issues in translation validation for optimizing compilers. Electronic Notes in Theoretical Computer Science 132(1), 53–71 (2005)
Gupta, S., Dutt, N., Gupta, R., Nicolau, A.: Spark: A high-level synthesis framework for applying parallelizing compiler transformations. In: International. Conference on VLSI Design (2003). URL citeseer.ist.psu.edu/gupta03spark.html
Guttman, J., Ramsdell, J., Wand, M.: VLISP: A verified implementation of Scheme. Lisp and Symbolic Computation 8(1-2), 33–110 (1995)
Kauffmann, M., Boyer, R.: The Boyer-Moore theorem prover and its interactive enhancement. Computers and Mathematics with Applications 29(2), 27–62 (1995)
Kelly, W., Pugh, W.: Finding legal reordering transformations using mappings. In: Proceedings of Languages and Compilers for Parallel Computing (1994)
Kozen, D.: Kleene algebra with tests. ACM Transactions on Programming Langauges and Systems 19(3), 427–443 (1997)
Kundu, S., Lerner, S., Gupta, R.: Automated Refinement Checking of Concurrent Systems. In: ICCAD ’07: Proceedings of the 2007 IEEE/ACM International Conference on Computer-Aided Design, pp. 318–325. IEEE Press, Piscataway, NJ, USA (2007)
Kundu, S., Lerner, S., Gupta, R.: Validating High-Level Synthesis. In: CAV ’08: Proceedings of the 20th international conference on Computer Aided Verification, pp. 459–472. Springer, Princeton, NJ, USA (2008)
Kundu, S., Tatlock, Z., Lerner, S.: Proving Optimizations Correct using Parameterized Program Equivalence. In: PLDI ’09: Proceedings of the 2009 ACM SIGPLAN conference on Programming Language Design and Implementation (2009)
Lacey, D., Jones, N.D., Wyk, E.V., Frederiksen, C.C.: Proving correctness of compiler optimizations by temporal logic. In: Proceedings of the 29th ACM Symposium on Principles of Programming Languages (2002)
Lerner, S., Millstein, T., Chambers, C.: Automatically proving the correctness of compiler optimizations. In: PLDI ’03: Proceedings of the 2003 ACM SIGPLAN conference on Programming Language Design and Implementation (2003)
Lerner, S., Millstein, T., Rice, E., Chambers, C.: Automated soundness proofs for dataflow analyses and transformations via local rules. In: Proceedings of the 32nd ACM Symposium on Principles of Programming Languages (2005)
Leroy, X.: Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In: Proceedings of the 33rd ACM Symposium on Principles of Programming Languages (2006)
Muchnick, S.: Advanced Compiler Design And Implementation. Morgan Kaufmann Publishers (1997)
Necula, G.C.: Translation validation for an optimizing compiler. In: PLDI ’00: Proceedings of the 2000 ACM SIGPLAN conference on Programming Language Design and Implementation (2000)
Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: TACAS ’98: Proceedings of the 4th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Lecture Notes in Computer Science, vol. 1384, pp. 151–166 (1998)
Pugh, W.: The omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM 8, 4–13 (1992)
Rinard, M., Marinov, D.: Credible compilation. In: Proceedings of the FLoC Workshop Run-Time Result Verification (1999)
Rinard, M.C., Diniz, P.C.: Commutativity analysis: a new analysis framework for parallelizing compilers. In: PLDI ’96: Proceedings of the 1996 ACM SIGPLAN conference on Programming Language Design and Implementation (1996)
Sittampalam, G., de Moor, O., Larsen, K.F.: Incremental execution of transformation specifications. In: Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Venice Italy (2004)
Steffen, B.: Data flow analysis as model checking. In: T. Ito, A. Meyer (eds.) Theoretical Aspects of Computer Science (TACS), Sendai (Japan), Lecture Notes in Computer Science (LNCS), vol. 526, pp. 346–364. Springer-Verlag (1991)
Tjiang, S.W.K., Hennessy, J.L.: Sharlit – A tool for building optimizers. In: PLDI ’92: Proceedings of the 1992 ACM SIGPLAN conference on Programming Language Design and Implementation, pp. 82–93 (1992)
Tristan, J.B., Leroy, X.: Verified validation of lazy code motion. In: Proceedings of the 35th ACM Symposium on Principles of Programming Languages (2008)
Tristan, J.B., Leroy, X.: Formal verification of translation validators: a case study on instruction scheduling optimizations. In: PLDI ’09: Proceedings of the 2009 ACM SIGPLAN conference on Programming Language Design and Implementation (2009)
Whitfield, D.L., Soffa, M.L.: An approach for exploring code improving transformations. ACM Transactions on Programming Languages and Systems 19(6), 1053–1084 (1997)
Yi, K., Harrison III, W.L.: Automatic generation and management of interprocedural program analyses. In: Proceedings of the 20th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 246–259 (1993)
Young, W.D.: A mechanically verified code generator. Journal of Automated Reasoning 5(4), 493–518 (1989)
Zuck, L., Pnueli, A., Goldberg, B., Barrett, C., Fang, Y., Hu, Y.: Translation and run-time validation of loop transformations. Formal Methods in System Design 27(3), 335–360 (2005). DOI http://dx.doi.org/10.1007/s10703-005-3402-z
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this chapter
Cite this chapter
Tatlock, Z. (2011). Parameterized Program Equivalence Checking. In: High-Level Verification. Springer, New York, NY. https://doi.org/10.1007/978-1-4419-9359-5_8
Download citation
DOI: https://doi.org/10.1007/978-1-4419-9359-5_8
Published:
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-9358-8
Online ISBN: 978-1-4419-9359-5
eBook Packages: EngineeringEngineering (R0)