Abstract
This paper shows how classic inductive assertions can be used in conjunction with a formal operational semantics to prove partial correctness properties of programs. The method imposes only the proof obligations that would be produced by a verification condition generator – but does not require the definition of a verification condition generator. All that is required is a theorem prover, a formal operational semantics, and the object program with appropriate assertions at user-selected cut points. The verification conditions are generated in the course of the theorem-proving process by straightforward symbolic evaluation of the formal operational semantics. The technique is demonstrated by proving the partial correctness of simple bytecode programs with respect to a preexisting operational model of the Java Virtual Machine.
Similar content being viewed by others
References
1 Boyer, R.S., Moore, J.S.: A Computational Logic Handbook, 2nd edn. Academic, New York (1997)
2 Floyd, R.: Assigning meanings to programs. In: Mathematical Aspects of Computer Science. Proceedings of Symposia in Applied Mathematics, vol. XIX, pp. 19–32. American Mathematical Society, Providence, Rhode Island (1967)
3 Gloess, P.Y.: Imperative program verification in PVS. Technical Report http://-dept-info.labri.u-bordeaux.fr/~gloessimperative/index.html. École Nationale Supérieure Électronique. Informatique et Radiocommunications de Bordeaux (1999)
4 Goldstine, H.H., von Neumann, J.: Planning and coding problems for an electronic computing instrument. In: John von Neumann, Collected Works, vol. V. Pergamon Press, Oxford (1961)
5 Gordon, M., Melham, T.: Introduction to HOL: A Theorem Proving Environment for Higher Order Logic. Cambridge University Press, Cambridge (1993)
6 Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–583 (1969)
7 Homeier, P., Martin, D.: A mechanically verified verification condition generator. Comput. J. 38(2), 131–141 (1995)
8 Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer, Boston (2000)
9 King, J.C.: A program verifier. Ph.D. thesis, Carnegie Mellon University, Pittsburgh, PA (1969)
10 Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn Addison-Wesley, Boston (1999)
11 Liu, H., Moore, J.S.: Executable JVM model for analytical reasoning: a study. In: Proceedings of the ACM SIGPLAN Workshop on Interpreters, Virtual Machines and Emulators 2003 (IVME ’03), San Diego (2003)
12 Manolios, P., Moore, J.S.: Partial functions in ACL2. J. Automated Reason. 31(2), 107–127 (2003)
13 McCarthy, J.: Towards a mathematical science of computation. In: Proceedings of the Information Processing Congress 62, Munich, pp. 21–28. North-Holland, Amsterdam (1962)
14 Moore, J.S.: An NQTHM formalization of a smallmachine. Technical Report ftp://-/ftp./-cs./-utexas./-edu//-pub//-boyer//-nqthm//-nqthm-1992//-examples//-basic//-small-machine./-events, Computational Logic, Inc. (1991)
15 Moore, J.S.: Inductive assertions and operational semantics—long version. Technical Report http://www.cs.utexas.edu/users/moore/publications/trecia/index.html. Department of Computer Sciences, University of Texas at Austin (2003)
16 Moore, J.S.: Proving theorems about Java and the JVM with ACL2. In: Broy, M., Pizka, M. (eds.) Models, Algebras and Logic of Engineering Software, pp. 227–290. IOS, Amsterdam (2003); http://www.cs.utexas.edu/users/moore/publications/marktoberdorf/03.
17 Moore, J.S., Porter, G.: The Apprentice challenge. ACM TOPLAS 24(3), 1–24 (2002)
18 Morris, F.L., Jones, C.B.: An early program proof by Alan Turing. Ann. Hist. Comput. 6(2) 139–143 (1984)
19 Owre, S., Rushby, J., Shankar, N.: PVS: A prototype verification system. In: Kapur, D. (ed.) Proceedings of the 11th International Conference on Automated Deduction (CADE), Heidelberg. Lecture Notes in Artificial Intelligence, vol. 607 pp. 748–752. Springer, Berlin Heidelberg New York (1992)
20 Ray, S., Moore, J.S.: Proof Styles in Operational Semantics. In: Hu, A.J., Martin, A.K. (eds.) Formal Methods in Computer-Aided Design (FMCAD 2004). Springer LNCS, vol. 3312, pp. 67–81 (2004)
21 Turing, A.M.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, pp. 67–69. University Mathematical Laboratory, Cambridge, UK (1949)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Moore, J.S. Inductive assertions and operational semantics. Int J Softw Tools Technol Transfer 8, 359–371 (2006). https://doi.org/10.1007/s10009-005-0180-2
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-005-0180-2