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.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
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)
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)
Apt, K.R.: Ten years of Hoare logic: A survey – part I. ACM Transactions on Programming Languages and Systems (1981)
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)
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
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)
Borgida, A., Mylopoulos, J., Reiter, R.: On the frame problem in procedure specifications. IEEE Transactions on Software Engineering 21(10), 785–798 (1995)
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)
Detlefs, D.L., Leino, K.R.M., Nelson, G., Saxe, J.B.: Extended static checking. Research Report 159, Compaq Systems Research Center (1998)
Ernst, M.D.: Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington, Seattle (August 2000)
Harel, D.: Dynamic Logic. In: Gabbay, D., Guenthner, F. (eds.) Handbook of Philosophical Logic, Volume II: Extensions of Classical Logic. Reidel, Dordrechtz (1984)
Harel, D., Kozen, D., Tiuryn, J.: Dynamic Logic. The MIT Press, Cambridge (2000)
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)
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)
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)
Object Modeling Group. UML 2.0 OCL Specification (October 2003)
Object Modeling Group. UML 2.0 Superstructure Specification (October 2004)
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)
Rümmer, P.: A Language for Sequential, Parallel and Quantified Updates of First-order Structures, Forthcoming (2005)
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
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)
Spoto, F., Poll, E.: Static analysis for JML’s assignable clauses. In: Proceedings, Foundations of Object-Oriented Languages, FOOL10 (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)