Skip to main content

Parameterized Program Equivalence Checking

  • Chapter
  • First Online:
High-Level Verification
  • 723 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. 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)

    Google Scholar 

  2. 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)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    MathSciNet  Google Scholar 

  6. 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)

    Article  Google Scholar 

  7. 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

  8. Guttman, J., Ramsdell, J., Wand, M.: VLISP: A verified implementation of Scheme. Lisp and Symbolic Computation 8(1-2), 33–110 (1995)

    Article  Google Scholar 

  9. Kauffmann, M., Boyer, R.: The Boyer-Moore theorem prover and its interactive enhancement. Computers and Mathematics with Applications 29(2), 27–62 (1995)

    Article  MathSciNet  Google Scholar 

  10. Kelly, W., Pugh, W.: Finding legal reordering transformations using mappings. In: Proceedings of Languages and Compilers for Parallel Computing (1994)

    Google Scholar 

  11. Kozen, D.: Kleene algebra with tests. ACM Transactions on Programming Langauges and Systems 19(3), 427–443 (1997)

    Article  Google Scholar 

  12. 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)

    Google Scholar 

  13. 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)

    Google Scholar 

  14. 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)

    Google Scholar 

  15. 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)

    Google Scholar 

  16. 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)

    Google Scholar 

  17. 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)

    Google Scholar 

  18. 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)

    Google Scholar 

  19. Muchnick, S.: Advanced Compiler Design And Implementation. Morgan Kaufmann Publishers (1997)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. 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)

    Google Scholar 

  22. Pugh, W.: The omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM 8, 4–13 (1992)

    Google Scholar 

  23. Rinard, M., Marinov, D.: Credible compilation. In: Proceedings of the FLoC Workshop Run-Time Result Verification (1999)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. 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)

    Google Scholar 

  26. 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)

    Google Scholar 

  27. 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)

    Google Scholar 

  28. Tristan, J.B., Leroy, X.: Verified validation of lazy code motion. In: Proceedings of the 35th ACM Symposium on Principles of Programming Languages (2008)

    Google Scholar 

  29. 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)

    Google Scholar 

  30. 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)

    Article  Google Scholar 

  31. 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)

    Google Scholar 

  32. Young, W.D.: A mechanically verified code generator. Journal of Automated Reasoning 5(4), 493–518 (1989)

    Article  Google Scholar 

  33. 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Zachary Tatlock .

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics