Formalizing Dijkstra

  • John Harrison
Refereed Papers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1479)


We present a HOL formalization of the foundational parts of Dijkstra's classic monograph “A Discipline of Programming≓. While embedding programming language semantics in theorem provers is hardly new, this particular undertaking raises several interesting questions, and perhaps makes an interesting supplement to the monograph. Moreover, the failure of HOL's first order proof tactic to prove one ‘theorem’ indicates a technical error in the book.


Program Variable Concrete Syntax Weak Precondition Predicate Transformer Deterministic Machine 
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.
    R. Back. Correctness Preserving Program Transformations: Proof Theory and Applications, Volume 131 of Mathematical Centre Tracts. Mathematical Centre, Amsterdam, 1980.Google Scholar
  2. 2.
    R. DeMillo, R. Lipton, and A. Perlis. Social processes and proofs of theorems and programs. Communications of the ACM, 22, 271–280, 1979.CrossRefGoogle Scholar
  3. 3.
    E. W. Dijkstra. Trip report visit ETH Zurich, EWD474, 3–4 February 1975. See [8], pp. 95–98.Google Scholar
  4. 4.
    E. E. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976.Google Scholar
  5. 5.
    E. W. Dijkstra. Formal techniques and sizeable programs, EWD563. See [8], pp. 205–214, 1976. Paper prepared for Symposium on the Mathematical Foundations of Computing Science, Gdansk 1976.Google Scholar
  6. 6.
    E. W. Dijkstra. A somewhat open letter to EAA or: Why I proved the boundedness of the nondeterminacy in the way I did, EWD614, 1977. See [8], pp. 284–287.Google Scholar
  7. 7.
    E. W. Dijkstra. On a political pamphlet from the middle ages. ACM SIGSOFT, Software Engineering Notes, 3, 14, 1978.CrossRefGoogle Scholar
  8. 8.
    E. W. Dijkstra (ed.). Selected Writings on Computing: A Personal Perspective. Springer-Verlag, 1982.Google Scholar
  9. 9.
    M. J. C. Gordon. Mechanizing programming logics in higher order logic. In G. Birtwistle and P. A. Subrahmanyam (eds.), Current Trends in Hardware Verification and Automated Theorem Proving, pp. 387–439. Springer-Verlag, 1989.Google Scholar
  10. 10.
    J. Grundy. Predicative programming — a survey. In D. BjØrner, M. Broy, and I. V. Pottosin (eds.), Formal Methods in Programming and Their Applications: Proceedings of the International Conference, Volume 735 of Lecture Notes in Computer Science, Academgorodok, Novosibirsk, Russia, pp. 8–25. Springer-Verlag, 1993.Google Scholar
  11. 11.
    W. H. Hesselink. Programs, Recursion and Unbounded Choice, Volume 27 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.Google Scholar
  12. 12.
    J. J. Joyce and C. Seger (eds.). Proceedings of the 1993 International Workshop on the HOL theorem proving system and its applications, Volume 780 of Lecture Notes in Computer Science, UBC, Vancouver, Canada. Springer-Verlag, 1993.Google Scholar
  13. 13.
    D. Syme. Reasoning with the formal definition of Standard ML in HOL. See [12], pp. 43–60.Google Scholar
  14. 14.
    M. VanInwegen and E. Gunter. HOL-ML. See [12], pp. 61–74.Google Scholar
  15. 15.
    J. von Wright, J. Hekanaho, P. Luostarinen, and T. Långbacka. Mechanizing some advanced refinement concepts. Formal Methods in System Design, 3, 49–82, 1993.zbMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • John Harrison
    • 1
  1. 1.Intel CorporationHillsboroUSA

Personalised recommendations