Inter-program Properties

  • Andrei Voronkov
  • Iman Narasamdya
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5673)


We develop foundations for proving properties relating two programs. Our formalization is based on a suitably adapted notion of program invariant for a single program. First, we give an abstract formulation of the theory of program invariants based on the notion of assertion function: a function that assigns assertions to program points. Then, we develop this abstract notion further so that it can be used to prove properties between two programs. We describe an application of the theory to proving program properties in translation validation.


assertion function invariant translation validation 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barthe, G., Grégoire, B., Kunz, C., Rezk, T.: Certificate translation for optimizing compilers. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 301–317. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Benton, N.: Simple relational correctness proofs for static analyses and program transformations. In: POPL, pp. 14–25 (2004)Google Scholar
  3. 3.
    Floyd, R.W.: Assigning meaning to programs. In: Schwartz, J.T. (ed.) Proceedings of Symposium in Applied Mathematics, pp. 19–32 (1967)Google Scholar
  4. 4.
    Hoare, C.A.R.: An axiomatic basis for computer programming. CACM 12(10), 576–580 (1969)CrossRefMATHGoogle Scholar
  5. 5.
    Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Proving correctness of compiler optimizations by temporal logic. In: POPL (2002)Google Scholar
  6. 6.
    Leockx, J., Sieber, K., Stansifer, R.D.: The Foundations of Program Verification, 2nd edn. John Wiley & Sons, Inc., New York (1987)CrossRefGoogle Scholar
  7. 7.
    Lerner, S., Millstein, T., Chambers, C.: Automatically proving the correctness of compiler optimizations. In: PLDI, pp. 220–231 (2003)Google Scholar
  8. 8.
    Lerner, S., Millstein, T., Rice, E., Chambers, C.: Automated soundness proofs for dataflow analyses and transformations via local rules. In: POPL (2005)Google Scholar
  9. 9.
    Leroy, X.: Formal certification of a compiler back-end or: programming a compiler with a proof assistant. SIGPLAN Not. 41(1), 42–54 (2006)CrossRefGoogle Scholar
  10. 10.
    Manna, Z., Waldinger, R.: Is “sometime” sometimes better than “always”?: Intermittent assertions in proving program correctness. CACM 21(2), 159–172 (1978)MathSciNetCrossRefMATHGoogle Scholar
  11. 11.
    Narasamdya, I., Voronkov, A.: Finding basic block and variable correspondence. In: Hankin, C., Siveroni, I. (eds.) SAS 2005. LNCS, vol. 3672, pp. 251–267. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  12. 12.
    Narasamdya, I.: Establishing Program Equivalence in Translation Validation for Optimizing Compilers. PhD thesis, The University of Manchester (2007),
  13. 13.
    Narasamdya, I., Périn, M.: Certification of smart-card applications in common criteria. Technical Report TR-2008-14, Verimag (September 2008)Google Scholar
  14. 14.
    Necula, G.C.: Translation validation for an optimizing compiler. In: Proceedings of the ACM SIGPLAN Conference on Principles of Programming Languages Design and Implementation (PLDI), June 2000, pp. 83–95 (2000)Google Scholar
  15. 15.
    Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, p. 151. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  16. 16.
    Pnueli, A., Zaks, A.: Translation validation of interprocedural optimizations. In: Proceedings of 4th International Workshop on Software Verification and Validation (2006)Google Scholar
  17. 17.
    Pottier, F., Simonet, V.: Information flow inference for ml. SIGPLAN Not. 37(1), 319–330 (2002)CrossRefMATHGoogle Scholar
  18. 18.
    Rinard, M., Marinov, D.: Credible compilation with pointers. In: Proceedings of the FLoC Workshop on Run-Time Result Verification, Trento, Italy (July 1999)Google Scholar
  19. 19.
    Rival, X.: Symbolic transfer function-based approaches to certified compilation. In: Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 1–13. ACM Press, New York (2004)CrossRefGoogle Scholar
  20. 20.
    Voronkov, A., Narasamdya, I.: Proving inter-program properties. Technical Report TR-2008-13, Verimag (2008)Google Scholar
  21. 21.
    Yang, H.: Relational separation logic. Theor. Comput. Sci. 375(1-3), 308–334 (2007)MathSciNetCrossRefMATHGoogle Scholar
  22. 22.
    Zaks, A., Pnueli, A.: Covac: Compiler validation by program analysis of the cross-product. In: Cuellar, J., Maibaum, T., Sere, K. (eds.) FM 2008. LNCS, vol. 5014, pp. 35–51. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  23. 23.
    Zuck, L.D., Pnueli, A., Goldberg, B.: VOC: A methodology for the translation validation of optimizing compilers. J. UCS 9(3), 223–247 (2003)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Andrei Voronkov
    • 1
  • Iman Narasamdya
    • 2
  1. 1.The University of ManchesterUK
  2. 2.FBK-IrstItaly

Personalised recommendations