Skip to main content

An Improved Rule for While Loops in Deductive Program Verification

  • Conference paper
Formal Methods and Software Engineering (ICFEM 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3785))

Included in the following conference series:

Abstract

Performance and usability of deductive program verification systems can be enhanced if specifications not only consist of pre-/post-condition pairs and invariants but also include information on which memory locations are modified by the program. This allows to separate the aspects of (a) which locations change and (b) how they change, state the change information in a compact way, and make the proof process more efficient. In this paper, we extend this idea from method specifications to loop invariants; and we define a proof rule for while loops that makes use of the change information associated with the loop body. It has been implemented and is successfully used in the KeY software verification system.

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 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight 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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ahrendt, W., Baar, T., Beckert, B., Bubel, R., Giese, M., Hähnle, R., Menzel, W., Mostowski, W., Roth, A., Schlager, S., Schmitt, P.H.: The KeY tool. Software and System Modeling 4, 32–54 (2005)

    Article  Google Scholar 

  2. Ahrendt, W., Baar, T., Beckert, B., Giese, M., Habermalz, E., Hähnle, R., Menzel, W., Schmitt, P.H.: The KeY approach: Integrating object oriented design and formal verification. In: Brewka, G., Moniz Pereira, L., Ojeda-Aciego, M., de Guzmán, I.P. (eds.) JELIA 2000. LNCS (LNAI), vol. 1919, p. 21. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  3. Apt, K.R.: Ten years of Hoare logic: A survey – part I. ACM Transactions on Programming Languages and Systems (1981)

    Google Scholar 

  4. Beckert, B.: A dynamic logic for the formal verification of Java Card programs. In: Attali, I., Jensen, T. (eds.) JavaCard 2000. LNCS, vol. 2041, pp. 6–24. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  5. Beckert, B., Schlager, S., Schmitt, P.H.: An Improved Rule for While Loops in Deductive Program Verification. Technical Report in Computing Science 2005-26, Fakultät für Informatik, Universität Karlsruhe, Germany (September 2005), Available at http://i12www.ira.uka.de/~schlager/publications/TRInvRule.ps.gz

  6. Beckert, B., Schmitt, P.H.: Program verification using change information. In: Proceedings, Software Engineering and Formal Methods (SEFM), Brisbane, Australia, pp. 91–99. IEEE Press, Los Alamitos (2003)

    Google Scholar 

  7. Borgida, A., Mylopoulos, J., Reiter, R.: On the frame problem in procedure specifications. IEEE Transactions on Software Engineering 21(10), 785–798 (1995)

    Article  Google Scholar 

  8. Cataño, N., Huisman, M.: Chase: A static checker for JML’s assignable clause. In: Zuck, L.D., Attie, P.C., Cortesi, A., Mukhopadhyay, S. (eds.) VMCAI 2003. LNCS, vol. 2575, pp. 26–40. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  9. Detlefs, D.L., Leino, K.R.M., Nelson, G., Saxe, J.B.: Extended static checking. Research Report 159, Compaq Systems Research Center (1998)

    Google Scholar 

  10. Ernst, M.D.: Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington, Seattle (August 2000)

    Google Scholar 

  11. Harel, D.: Dynamic Logic. In: Gabbay, D., Guenthner, F. (eds.) Handbook of Philosophical Logic, Volume II: Extensions of Classical Logic. Reidel, Dordrechtz (1984)

    Google Scholar 

  12. Harel, D., Kozen, D., Tiuryn, J.: Dynamic Logic. The MIT Press, Cambridge (2000)

    MATH  Google Scholar 

  13. Kozen, D., Tiuryn, J.: Logic of programs. In: van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science, ch. 14, pp. 89–133. Elsevier, Amsterdam (1990)

    Google Scholar 

  14. Leavens, G.T., Baker, A.L., Ruby, C.: JML: A notation for detailed design. In: Kilov, H., Rumpe, B., Simmonds, I. (eds.) Behavioral Specifications of Businesses and Systems, ch. 12, pp. 175–188. Kluwer Academic Publishers, Dordrecht (1999)

    Google Scholar 

  15. Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: A behavioral interface specification language for Java. Technical Report 98-06z, Iowa State University, Department of Computer Science (December 2004)

    Google Scholar 

  16. Object Modeling Group. UML 2.0 OCL Specification (October 2003)

    Google Scholar 

  17. Object Modeling Group. UML 2.0 Superstructure Specification (October 2004)

    Google Scholar 

  18. Perkins, J.H., Ernst, M.D.: Efficient incremental algorithms for dynamic detection of likely invariants. In: Proceedings of the ACM SIGSOFT 12th Symposium on the Foundations of Software Engineering (FSE 2004), Newport Beach, CA, USA, November 2-4, pp. 23–32 (2004)

    Google Scholar 

  19. Rümmer, P.: A Language for Sequential, Parallel and Quantified Updates of First-order Structures, Forthcoming (2005)

    Google Scholar 

  20. Sasse, R.: Proof obligations for correctness of modifies clauses. Studienarbeit, Fakultät für Informatik, Universität Karlsruhe (2004), Available at http://i12www.ira.uka.de/~key/doc/2004/sasse2004.pdf

  21. Schirmer, N.: A verification environment for sequential imperative programs in Isabelle/HOL. In: Baader, F., Voronkov, A. (eds.) LPAR 2004. LNCS (LNAI), vol. 3452, pp. 398–414. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  22. Spoto, F., Poll, E.: Static analysis for JML’s assignable clauses. In: Proceedings, Foundations of Object-Oriented Languages, FOOL10 (2003)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Beckert, B., Schlager, S., Schmitt, P.H. (2005). An Improved Rule for While Loops in Deductive Program Verification. In: Lau, KK., Banach, R. (eds) Formal Methods and Software Engineering. ICFEM 2005. Lecture Notes in Computer Science, vol 3785. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11576280_22

Download citation

  • DOI: https://doi.org/10.1007/11576280_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-29797-0

  • Online ISBN: 978-3-540-32250-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics