Skip to main content

Connecting Different Proof Styles

  • Chapter
  • First Online:
Scalable Techniques for Formal Verification
  • 698 Accesses

Abstract

We consider formal relation between the three common program verification strategies. In particular, we prove that each strategy is both sound and complete. The completeness result implies that given any proof of correctness of a sequential program one can derive a proof in each of the above strategies.

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

Notes

  1. 1.

    One notable exception is the Hoare logic. There has been significant work on analysis of soundness and completeness of Hoare axioms for various programming language constructs. See the bibliographic notes for this chapter.

  2. 2.

    This criticism has been rarely written in print, but usually expressed in conference question–answer sessions. However, there has been a nagging feeling that clock functions require more work. The absence of published criticism and the presence of this “nagging feeling” have both been confirmed by an extensive literature search and private communications with some of the authors of other theorem provers.

  3. 3.

    The actual symbol they use is \(\mathtt{=\,=}\) instead of ↪. We use the latter to avoid confusion between this relation and equality.

References

  1. K. R. Apt. Ten Years of Hoare’s Logic: A Survey – Part I. ACM Transactions on Programming Languages and Systems (ACM TOPLAS), 3(4):431–483, October 1981.

    Article  MATH  Google Scholar 

  2. W. R. Bevier. A Verified Operating System Kernel. PhD thesis, Department of Computer Sciences, The University of Texas at Austin, 1987.

    Google Scholar 

  3. R. S. Boyer and Y. Yu. Automated Proofs of Object Code for a Widely Used Microprocessor. Journal of the ACM, 43(1), January 1996.

    Google Scholar 

  4. E. M. Clarke. Completeness and Incompleteness of Hoare-Like Axiom Systems. PhD thesis, Cornell University, 1976.

    Google Scholar 

  5. M. Clint. Program Proving: Coroutines. Acta Informatica, 2:50–63, 1973.

    Article  Google Scholar 

  6. M. Clint and C. A. R. Hoare. Program Proving: Jumps and Functions. Acta Informatica, 1:214–224, 1971.

    Article  MATH  Google Scholar 

  7. S. A. Cook. Soundness and Completeness of an Axiom System for Program Verification. SIAM Journal of Computing, 7(1):70–90, 1978.

    Article  MATH  Google Scholar 

  8. J. W. de Bakker. Mathematical Theory of Program Correctness. Prentice-Hall, 1980.

    Google Scholar 

  9. E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1978.

    Google Scholar 

  10. J. Harrison. Formalizing Dijkstra. In J. Grundy and M. Newer, editors, Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics (TPHOLS 1998), volume 1479 of LNCS, pages 171–188, Canberra, ACT, 1998, Springer-Verlag.

    Chapter  Google Scholar 

  11. C. A. R. Hoare. Proof of Correctness of Data Representations. Acta Informatica, 1:271–281, 1972.

    Article  MATH  Google Scholar 

  12. W. A. Hunt, Jr. FM8501: A Verified Microprocessor, volume 795 of LNAI. Springer-Verlag, 1994.

    Google Scholar 

  13. H. Liu and J. S. Moore. Java Program Verification via a JVM Deep Embedding in ACL2. In K. Slind, A. Bunker, and G. Gopalakrishnan, editors, Proceedings of the 17th International Conference on Theorem Proving in Higher Order Logics (TPHOLs 2004), volume 3233 of LNCS, pages 184–200, Park City, Utah, 2004. Springer-Verlag.

    Chapter  Google Scholar 

  14. P. Manolios and J. S. Moore. Partial Functions in ACL2. Journal of Automated Reasoning, 31(2):107–127, 2003.

    Article  MathSciNet  MATH  Google Scholar 

  15. J. S. Moore. Piton: A Mechanically Verified Assembly Language. Kluwer Academic Publishers, 1996.

    Google Scholar 

  16. J. S. Moore. Proving Theorems About Java-Like Byte Code. In E. R. Olderog and B. Stefen, editors, Correct System Design – Recent Insights and Advances, volume 1710 of LNCS, pages 139–162, 1999.

    Google Scholar 

  17. J. S. Moore. Proving Theorems About Java and the JVM with ACL2. In M. Broy and M. Pizka, editors, Models, Algebras, and Logic of Engineering Software, pages 227–290. IOS Press, 2003.

    Google Scholar 

  18. D. C. Oppen and S. A. Cook. Proving Assertions About Programs that Manipulate Data Structures. In Proceedings of the 7th Annual ACM Symposium on Theory of Computing (STOC 1975), pages 107–116, Albuquerque, NM, 1975. ACM Press.

    Google Scholar 

  19. S. S. Owicki and D. Gries. Verifying Properties of Parallel Programs: An Axiomatic Approach. Communications of the ACM, 19(5):279–285, 1976.

    Article  MathSciNet  MATH  Google Scholar 

  20. S. Ray and W. A. Hunt, Jr. Deductive Verification of Pipelined Machines Using First-Order Quantification. In R. Alur and D. A. Peled, editors, Proceedings of the 16th International Conference on Computer-Aided Verification (CAV 2004), volume 3114 of LNCS, pages 31–43, Boston, MA, July 2004. Springer-Verlag.

    Chapter  Google Scholar 

  21. S. Ray, W. A. Hunt, Jr., J. Matthews, and J. S. Moore. A Mechanical Analysis of Program Verification Strategies. Journal of Automated Reasoning, 40(4):245–269, May 2008.

    Article  MathSciNet  MATH  Google Scholar 

  22. S. Ray and J. S. Moore. Proof Styles in Operational Semantics. In A. J. Hu and A. K. Martin, editors, Proceedings of the 5th International Conference on Formal Methods in Computer-Aided Design (FMCAD 2004), volume 3312 of LNCS, pages 67–81, Austin, TX, November 2004. Springer-Verlag.

    Google Scholar 

  23. S. Sokolowski. Axioms for Total Correctness. Acta Informatica, 9:61–71, 1977.

    Article  MathSciNet  MATH  Google Scholar 

  24. M. Wand. A New Incompleteness Result for Hoare’s System. Journal of the ACM, 25(1): 168–175, January 1978.

    Article  MathSciNet  MATH  Google Scholar 

  25. M. Wilding. Robust Computer System Proofs in PVS. In C. M. Holloway and K. J. Hayhurst, editors, 4th NASA Langley Formal Methods Workshop, number 3356 in NASA Conference Publication, 1997.

    Google Scholar 

  26. W. D. Young. A Verified Code Generator for a Subset of Gypsy. Technical Report 33, Computational Logic Inc., 1988.

    Google Scholar 

  27. Y. Yu. Automated Proofs of Object Code for a Widely Used Microprocessor. PhD thesis, Department of Computer Sciences, The University of Texas at Austin, 1992.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sandip Ray .

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer Science+Business Media, LLC

About this chapter

Cite this chapter

Ray, S. (2010). Connecting Different Proof Styles. In: Scalable Techniques for Formal Verification. Springer, Boston, MA. https://doi.org/10.1007/978-1-4419-5998-0_6

Download citation

  • DOI: https://doi.org/10.1007/978-1-4419-5998-0_6

  • Published:

  • Publisher Name: Springer, Boston, MA

  • Print ISBN: 978-1-4419-5997-3

  • Online ISBN: 978-1-4419-5998-0

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics