Skip to main content
Log in

Inductive assertions and operational semantics

  • Special section on Recent Advances in Hardware Verification
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. 1 Boyer, R.S., Moore, J.S.: A Computational Logic Handbook, 2nd edn. Academic, New York (1997)

    Google Scholar 

  2. 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. 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. 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)

    Google Scholar 

  5. 5 Gordon, M., Melham, T.: Introduction to HOL: A Theorem Proving Environment for Higher Order Logic. Cambridge University Press, Cambridge (1993)

    MATH  Google Scholar 

  6. 6 Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–583 (1969)

    Article  MATH  Google Scholar 

  7. 7 Homeier, P., Martin, D.: A mechanically verified verification condition generator. Comput. J. 38(2), 131–141 (1995)

    Article  Google Scholar 

  8. 8 Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer, Boston (2000)

    Google Scholar 

  9. 9 King, J.C.: A program verifier. Ph.D. thesis, Carnegie Mellon University, Pittsburgh, PA (1969)

    Google Scholar 

  10. 10 Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn Addison-Wesley, Boston (1999)

    Google Scholar 

  11. 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. 12 Manolios, P., Moore, J.S.: Partial functions in ACL2. J. Automated Reason. 31(2), 107–127 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  13. 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. 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. 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. 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. 17 Moore, J.S., Porter, G.: The Apprentice challenge. ACM TOPLAS 24(3), 1–24 (2002)

    Article  Google Scholar 

  18. 18 Morris, F.L., Jones, C.B.: An early program proof by Alan Turing. Ann. Hist. Comput. 6(2) 139–143 (1984)

    Article  MathSciNet  MATH  Google Scholar 

  19. 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)

    Google Scholar 

  20. 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. 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)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to J. Strother Moore.

Rights and permissions

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-005-0180-2

Keywords

Navigation