Proofs-as-Imperative-Programs: Application to Synthesis of Contracts

  • Iman Poernomo
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2890)


Proofs-as-programs is an approach to program synthesis involving the transformation of intuitionistic proofs of specification requirements to functional programs (see, e.g., [1, 2, 12]). Various authors have adapted the proofs-as-programs to other logics and programming paradigms. This paper presents a novel approach to adapting proofs-as-programs for the synthesis of imperativeSML programs with side-effect-free return values, from proofs in a constructive version of the Hoare logic. We will demonstrate the utility of this approach by sketching how our work can be used to synthesize assertion contracts, aiding software development according to the principles of design-by-contract [8].


Boolean Function Intuitionistic Logic Functional Program Program Synthesis Imperative Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Constable, R., Mendler, N., Howe, D.: Implementing Mathematics with the Nuprl Proof Development System. Prentice-Hall, Englewood Cliffs (1986)Google Scholar
  2. 2.
    Coquand, T.: Metamathematical Investigations of a Calculus of Constructions. In: Logic and Computer Science, pp. 91–122 (1990)Google Scholar
  3. 3.
    Filliâtre, J.-C.: Preuve de programmes impératifs en théorie des types. Thése de doctorat, Université Paris-Sud (July 1999)Google Scholar
  4. 4.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the Association for Computing Machinery 12, 576–580 (1969)zbMATHGoogle Scholar
  5. 5.
    Ireland, A., Stark, J.: The automatic discovery of loop invariants (1997)Google Scholar
  6. 6.
    Manna, Z., Waldinger, R.J.: The deductive synthesis of imperative LISP programs. In: National Conference on Artificial Intelligence, pp. 155–160 (1987)Google Scholar
  7. 7.
    Matskin, M., Tyugu, E.: Strategies of Structural Synthesis of Programs. In: Proceedings 12th IEEE International Conference Automated Software Engineering, pp. 305–306. IEEE Computer Society, Los Alamitos (1998)Google Scholar
  8. 8.
    Meyer, B.: Object-Oriented Software Construction. Prentice-Hall, Englewood Cliffs (1997)zbMATHGoogle Scholar
  9. 9.
    Meyer, B.: Agents, iterators and introspection. Technology paper, ISE Corporation (May 2000), Available at
  10. 10.
    Milner, R., Tofte, M., Harper, R.: The definition of Standard ML. MIT Press, Cambridge (1990)Google Scholar
  11. 11.
    Poernomo, I.: Variations on a theme of Curry and Howard: The Curry- Howard isomorphism and the proofs-as-programs paradigm adapted for imperative and structured program synthesis. Phd thesis, Monash University, Available from the author on request (2003)Google Scholar
  12. 12.
    Poernomo, I., Crossley, J.N.: Protocols between programs and proofs. In: Lau, K.-K. (ed.) LOPSTR 2000. LNCS, vol. 2042, p. 18. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  13. 13.
    Poernomo, I., Crossley, J.N.: The Curry-Howard isomorphism adapted for imperative program synthesis and reasoning. In: Downey, R. (ed.) Proceedings of the 7th and 8th Asian Logic Conferences, World Scientific, Singapore (2003)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Iman Poernomo
    • 1
  1. 1.School of Computer Science and Software EngineeringMonash UniversityCaulfield EastAustralia

Personalised recommendations