Advertisement

Automated Software Engineering

, Volume 15, Issue 3–4, pp 299–312 | Cite as

Reasoning about programs via operational semantics: requirements for a support system

  • John R. D. Hughes
  • Cliff B. Jones
Article

Abstract

Reasoning about programs using “axioms” is well established; in this paper we argue that reasoning about a program directly in terms of Structural Operational Semantic (SOS) language descriptions is a viable addition and that this is anyway necessary for the vast majority of languages where there is nothing like a full axiomatic description. Using an SOS description is likely to require detailed proofs whose acceptability to users will depend on suitable support systems. The paper presents a very simple example to illustrate how we can reason about (in fact, develop) a program to prove that it satisfies a specification. The main contribution is to use this trivial example to point out issues in designing an interactive proof system for constructing such proofs.

Keywords

Structural operational semantics Proofs about programs Tool support 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press, Cambridge (1996) zbMATHGoogle Scholar
  2. Bicarregui, J.C., Fitzgerald, J.S., Lindsay, P.A., Moore, R., Ritchie, B.: Proof in VDM: A Practitioner’s Guide. FACIT. Springer, New York (1994). ISBN 3-540-19813-X Google Scholar
  3. Camilleri, J., Melham, T.: Reasoning with inductively defined relations in the HOL theorem prover. Technical Report 265, Computer Laboratory, University of Cambridge (August 1992). Google Scholar
  4. Coleman, J.W.: Constructing a tractable reasoning framework upon a fine-grained structural operational semantics. PhD thesis, Newcastle University (January 2008). Google Scholar
  5. Dijkstra, E.W., Scholten, C.S.: Predicate Calculus and Program Semantics. Springer, New York (1990). ISBN 0-387-96957-8, 3-540-96957-8 zbMATHGoogle Scholar
  6. Donahue, J.E.: Complementary Definitions of Programming Language Semantics. Lecture Notes in Computer Science, vol. 42. Springer, New York (1976) zbMATHGoogle Scholar
  7. Floyd, R.W.: Assigning meanings to programs. In: Proc. Symp. in Applied Mathematics, vol. 19: Mathematical Aspects of Computer Science, pp. 19–32. American Mathematical Society, Providence (1967) Google Scholar
  8. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580, 583 (1969) zbMATHCrossRefGoogle Scholar
  9. Hoare, C.A.R.: Proof of a program: FIND. Commun. ACM 14, 39–45 (1971) zbMATHMathSciNetGoogle Scholar
  10. Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Inf. 2, 335–355 (1973) CrossRefGoogle Scholar
  11. Holt, R.C., Matthews, P.A., Rosselet, J.A., Cordy, J.R.: The Turing Programming Language: Design and Definition. Prentice-Hall International, Englewood Cliffs (1988) zbMATHGoogle Scholar
  12. Jones, C.B.: Constructing a theory of a data structure as an aid to program development. Acta Inf. 11, 119–137 (1979) zbMATHGoogle Scholar
  13. Jones, C.B.: Software Development: A Rigorous Approach. Prentice-Hall International, Englewood Cliffs (1980) zbMATHGoogle Scholar
  14. Jones, C.B.: Systematic Software Development using VDM, 2nd edn. Prentice-Hall International, Englewood Cliffs (1990) zbMATHGoogle Scholar
  15. Jones, C.B.: The early search for tractable ways of reasoning about programs. IEEE, Ann. History Comput. 25(2), 26–49 (2003a) CrossRefGoogle Scholar
  16. Jones, C.B.: Operational semantics: concepts and their expression. Inf. Process. Lett. 88(1–2), 27–32 (2003b) CrossRefGoogle Scholar
  17. Jones, C.B.: Understanding programming language concepts via operational semantics. In: George, C., Liu, Z., Woodcock, J. (eds.) Domain Modeling and the Duration Calculus. Lecture Notes in Computer Science, vol. 4710, pp. 177–235. Springer, New York (2007) CrossRefGoogle Scholar
  18. Jones, C.B., Jones, K.D., Lindsay, P.A., Moore, R.: mural: A Formal Development Support System. Springer, New York (1991) zbMATHGoogle Scholar
  19. King, J.C.: A program verifier. PhD thesis, Department of Computer Science, Carnegie-Mellon University (1969) Google Scholar
  20. Klein, G., Nipkow, T.: Verified bytecode verifiers. Theor. Comput. Sci. 298(3), 583–626 (2003) zbMATHCrossRefMathSciNetGoogle Scholar
  21. Leavens, G.T., Abrial, J.-R., Batory, D., Butler, M., Coglio, A., Fisler, K., Hehner, E., Jones, C., Miller, D., Peyton-Jones, S., Sitaraman, M., Smith, D.R., Stump, A.: Roadmap for enhanced languages and methods to aid verification. Technical Report 06-21, Iowa State University, Department of Computer Science, Ames, IA (July 2006) Google Scholar
  22. Lauer, P.E.: Consistent formal theories of the semantics of programming languages. PhD thesis, Queen’s University of Belfast (1971). Printed as TR 25.121, IBM Lab. Vienna Google Scholar
  23. Lucas, P., Walk, K.: On The Formal Description of PL/I, Annual Review in Automatic Programming, Part 3, vol. 6. Pergamon, Oxford (1969) Google Scholar
  24. McCarthy, J.: A formal description of a subset of ALGOL. In: Steel, T. (ed.) Formal Language Description Languages for Computer Programing, pp. 1–12. North-Halland, Amsterdam (1966) Google Scholar
  25. Mehta, F.D.: Proofs for the working engineer. PhD thesis, ETH Zürich (2008) Google Scholar
  26. Plotkin, G.D.: The origins of structural operational semantics. J. Log. Algebraic Program. 60–61, 3–15 (2004) CrossRefMathSciNetGoogle Scholar
  27. Nieto, L.P.: Verification of parallel programs with the Owicki-Gries and rely-guarantee methods in isabelle/HOL. PhD thesis, Institut für Informatic der Technischen Universitaet München (2001) Google Scholar
  28. 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 (June 1949) Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2008

Authors and Affiliations

  1. 1.School of Computing ScienceNewcastle UniversityNewcastleUK

Personalised recommendations