skip to main content
chapter

Assessing the Success and Impact of Hoare’s Logic

Published:02 October 2021Publication History
First page image

References

  1. W. Ahrendt, B. Beckert, R. Bubel, R. Hähnle, P. H. Schmitt, and M. Ulbrich (Eds.). 2016. Deductive Software Verification—The KeY Book: From Theory to Practice, Vol. 10001 of Lecture Notes in Computer Science. Springer. ISBN 978-3-319-49811-9. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  2. K. R. Apt and E.-R. Olderog. 2019. Fifty years of Hoare’s logic. Form. Asp. Comput. 31, 6, 751–807. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. K. R. Apt, N. Francez, and W. P. de Roever. 1980. A proof system for communicating sequential processes. ACM Trans. Prog. Lang. Syst. 2, 3, 359–385. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. K. R. Apt, F. S. de Boer, and E.-R. Olderog. 2009. Verification of Sequential and Concurrent Programs (3rd. ed.). Springer-Verlag, New York. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  5. M. Barnett, B. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. 2005. Boogie: A modular reusable verifier for object-oriented programs. In F. S. de Boer, M. M. Bonsangue, S. Graf, and W. P. de Roever (Eds.), Formal Methods for Components and Objects, 4th International Symposium, FMCO 2005, Revised Lectures, Vol. 4111 of Lecture Notes in Computer Science. Springer, 364–387. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. E. M. Clarke. 1979. Programming language constructs for which it is impossible to obtain good Hoare axiom systems. J. ACM 26, 1, 129–147. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. A. Cook. 1978. Soundness and completeness of an axiom system for program verification. SIAM J. Comput. 7, 1, 70–90. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. W. Damm and B. Josko. 1983. A sound and relatively complete Hoare-logic for a language with higher type procedures. Acta Inf. 20, 59–101. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. W. P. de Roever, F. S. de Boer, U. Hannemann, J. Hooman, Y. Lakhnech, M. Poel, and J. Zwiers. 2001. Concurrency Verification: Introduction to Compositional and Noncompositional Methods, Vol. 54 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. W. Dijkstra. 1975. Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18, 453–457. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. W. Dijkstra. 1976. A Discipline of Programming. Prentice-Hall, Englewood Cliffs, NJ.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. J.-C. Filliâtre. 2007. Formal proof of a program: Find. Sci. Comput. Program. 64, 3, 332–340. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  13. J. Filliâtre and A. Paskevich. 2013. Why3—Where programs meet provers. In M. Felleisen and P. Gardner (Eds.), Programming Languages and Systems—22nd European Symposium on Programming, ESOP 2013, Proceedings, Vol. 7792 of Lecture Notes in Computer Science. Springer, 125–128. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. W. Floyd. 1967. Assigning meaning to programs. In J. T. Schwartz (Ed.), Proceedings of Symposium on Applied Mathematics 19, Mathematical Aspects of Computer Science. American Mathematical Society, New York, 19–32.Google ScholarGoogle Scholar
  15. M. Foley and C. A. R. Hoare. 1971. Proof of a recursive program: Quicksort. Comput. J. 14, 4, 391–395. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  16. S. M. German, E. M. Clarke, and J. Y. Halpern. 1989. Reasoning about procedures as parameters in the language L4. Inf. Comput. 83, 3, 265–359. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. G. A. Gorelick. 1975. A Complete Axiomatic System for Proving Assertions about Recursive and Nonrecursive Programs. Technical Report 75, Department of Computer Science, University of Toronto. Available at https://archive.org/details/ACompleteAxiomaticSystemForProvingAssertionsAboutRecursiveAnd.Google ScholarGoogle Scholar
  18. I. Greif and A. R. Meyer. 1981. Specifying the semantics of while programs: A tutorial and critique of a paper by Hoare and Lauer. ACM Trans. Program. Lang. Syst. 3, 4, 484–507. .Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. D. Harel. 1979. First-Order Dynamic Logic. Lecture Notes in Computer Science 68, Springer-Verlag, New York. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  20. C. A. R. Hoare. 1961a. Algorithm 65: Find. Commun. ACM 4, 7, 321. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. A. R. Hoare. 1961b. Algorithm 64: Quicksort. Commun. ACM 4, 7, 321. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. C. A. R. Hoare. 1969. An axiomatic basis for computer programming. Commun. ACM 12, 576–580, 583. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. A. R. Hoare. 1971a. Procedures and parameters: An axiomatic approach. In E. Engeler (Ed.), Proceedings of Symposium on the Semantics of Algorithmic Languages. Lecture Notes in Mathematics 188, Springer-Verlag, New York, 102–116.Google ScholarGoogle Scholar
  24. C. A. R. Hoare. 1971b. Proof of a program: FIND. Commun. ACM 14, 1, 39–45. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. C. A. R. Hoare. 1972a. Proof of a structured program: ‘The sieve of Eratosthenes’. Comput. J. 15, 4, 321–325. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  26. C. A. R. Hoare. 1972b. Proof of correctness of data representation. Acta Inf. 1, 271–281. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. C. A. R. Hoare. 1972c. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrot (Eds.), Operating Systems Techniques. Academic Press, London, 61–71.Google ScholarGoogle Scholar
  28. C. A. R. Hoare. 1975. Parallel programming: An axiomatic approach. Comput. Lang. 1, 2, 151–160. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. C. A. R. Hoare. 1978. Communicating sequential processes. Commun. ACM 21, 666–677. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. C. A. R. Hoare and N. Wirth. 1973. An axiomatic definition of the programming language PASCAL. Acta Inf. 2, 335–355. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. A. R. Hoare and P. E. Lauer. 1974. Consistent and complementary formal theories of the semantics of programming languages. Acta Inf. 3, 135–153. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. B. Jones. 1983. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst. 5, 4, 596–619. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. L. Lamport. 1977. Proving the correctness of multiprocess programs. IEEE Trans. Softw. Eng. SE-3, 2, 125–143. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. H. Langmaack and E.-R. Olderog. 1980. Present-day Hoare-like systems for programming languages with procedures: Power, limits and most likely expressions. In J. W. de Bakker and J. van Leeuwen (Eds.), Automata, Languages and Programming, 7th Colloquium, Vol. 85 of Lecture Notes in Computer Science. Springer, 363–373.Google ScholarGoogle Scholar
  35. G. T. Leavens, Y. Cheon, C. Clifton, C. Ruby, and D. R. Cok. 2005. How the design of JML accommodates both runtime assertion checking and formal verification. Sci. Comput. Program. 55, 1–3, 185–208. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. G. Levin and D. Gries. 1981. A proof technique for communicating sequential processes. Acta Inf. 15, 281–302. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Z. Manna and A. Pnueli. 1991. The Temporal Logic of Reactive and Concurrent Systems—Specification. Springer-Verlag, New York. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  38. Z. Manna and A. Pnueli. 1995. Temporal Verification of Reactive Systems—Safety. Springer-Verlag, New York. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  39. B. Meyer. 1997. Object-Oriented Software Construction (2nd. ed.). Prentice-Hall.Google ScholarGoogle Scholar
  40. G. Mirkowska and A. Salwicki. 1987. Algorithmic Logic. Kluwer Academic Publishers, Norwell, MA. ISBN 9027719284.Google ScholarGoogle Scholar
  41. F. L. Morris and C. B. Jones. 1984. An early program proof by Alan Turing. Ann. Hist. Comput. 6, 139–143. .Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. P. Naur. 1966. Proof of algorithms by general snapshots. BIT Numer. Math. 6, 4, 310–316. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. P. W. O’Hearn. 2007. Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375, 1–3, 271–307. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. P. W. O’Hearn. 2019. Separation logic. Commun. ACM 62, 2, 86–95. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. E.-R. Olderog. 1984. Correctness of programs with Pascal-like procedures without global variables. Theor. Comput. Sci. 30, 49–90. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  46. S. Owicki. 1978. Verifying concurrent programs with shared data classes. In E. J. Neuhold (Ed.), Proceedings of the IFIP Working Conference on Formal Description of Programming Concepts. North-Holland, Amsterdam, 79–298.Google ScholarGoogle Scholar
  47. S. Owicki and D. Gries. 1976a. An axiomatic proof technique for parallel programs. Acta Inf. 6, 319–340. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. S. Owicki and D. Gries. 1976b. Verifying properties of parallel programs: An axiomatic approach. Commun. ACM 19, 279–285. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. R. Piskac and P. Rümmer (Eds.). 2018. Verified Software. Theories, Tools, and Experiments—10th International Conference, VSTTE 2018, Oxford, UK, July 18–19, 2018, Revised Selected Papers, Vol. 11294 of Lecture Notes in Computer Science. Springer. ISBN 978-3-030-03591-4. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. A. Pnueli. 1977. The temporal logic of programs. In Proceedings of the 18th IEEE Symposium on Foundations of Computer Science. 46–57. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. V. R. Pratt. 1976. Semantical considerations on Floyd–Hoare logic. In 17th Annual Symposium on Foundations of Computer Science (FoCS 1976). IEEE Computer Society, 109–121. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. J. C. Reynolds. 2002. Separation logic: A logic for shared mutable data structures. In 17th IEEE Symposium on Logic in Computer Science (LICS 2002). IEEE Computer Society, 55–74. DOI: .Google ScholarGoogle ScholarCross RefCross Ref
  53. A. Salwicki. 1970. Formalized algorithmic languages. Bull. Acad. Pol. Sci. 18, 227–232.Google ScholarGoogle Scholar
  54. D. S. Scott and J. W. de Bakker. 1969. A theory of programs. Notes of an IBM Vienna Seminar.Google ScholarGoogle Scholar
  55. A. M. Turing. 1949. On checking a large routine. Report of a Conference on High Speed Automatic Calculating Machines. University Mathematics Laboratory, Cambridge, 67–69. (See also: F. L. Morris and C. B. Jones. 1984. An early program proof by Alan Turing. Ann. Hist. Comput. 6, 139–143.)Google ScholarGoogle Scholar
  56. M. Wand. 1978. A new incompleteness result for Hoare’s system. J. ACM 25, 1, 168–175. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. N. Wirth. 1971. Program development by stepwise refinement. Commun. ACM 14, 4, 221–227. DOI: .Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. N. Wirth. 1973. Systematic Programming: An Introduction. Prentice-Hall.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Assessing the Success and Impact of Hoare’s Logic
        Index terms have been assigned to the content through auto-classification.

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Books
          Theories of Programming: The Life and Works of Tony Hoare
          October 2021
          450 pages
          ISBN:9781450387286
          DOI:10.1145/3477355

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 2 October 2021

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • chapter

          Appears In

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader