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.
Similar content being viewed by others
References
Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press, Cambridge (1996)
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
Camilleri, J., Melham, T.: Reasoning with inductively defined relations in the HOL theorem prover. Technical Report 265, Computer Laboratory, University of Cambridge (August 1992).
Coleman, J.W.: Constructing a tractable reasoning framework upon a fine-grained structural operational semantics. PhD thesis, Newcastle University (January 2008).
Dijkstra, E.W., Scholten, C.S.: Predicate Calculus and Program Semantics. Springer, New York (1990). ISBN 0-387-96957-8, 3-540-96957-8
Donahue, J.E.: Complementary Definitions of Programming Language Semantics. Lecture Notes in Computer Science, vol. 42. Springer, New York (1976)
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)
Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580, 583 (1969)
Hoare, C.A.R.: Proof of a program: FIND. Commun. ACM 14, 39–45 (1971)
Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Inf. 2, 335–355 (1973)
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)
Jones, C.B.: Constructing a theory of a data structure as an aid to program development. Acta Inf. 11, 119–137 (1979)
Jones, C.B.: Software Development: A Rigorous Approach. Prentice-Hall International, Englewood Cliffs (1980)
Jones, C.B.: Systematic Software Development using VDM, 2nd edn. Prentice-Hall International, Englewood Cliffs (1990)
Jones, C.B.: The early search for tractable ways of reasoning about programs. IEEE, Ann. History Comput. 25(2), 26–49 (2003a)
Jones, C.B.: Operational semantics: concepts and their expression. Inf. Process. Lett. 88(1–2), 27–32 (2003b)
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)
Jones, C.B., Jones, K.D., Lindsay, P.A., Moore, R.: mural: A Formal Development Support System. Springer, New York (1991)
King, J.C.: A program verifier. PhD thesis, Department of Computer Science, Carnegie-Mellon University (1969)
Klein, G., Nipkow, T.: Verified bytecode verifiers. Theor. Comput. Sci. 298(3), 583–626 (2003)
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)
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
Lucas, P., Walk, K.: On The Formal Description of PL/I, Annual Review in Automatic Programming, Part 3, vol. 6. Pergamon, Oxford (1969)
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)
Mehta, F.D.: Proofs for the working engineer. PhD thesis, ETH Zürich (2008)
Plotkin, G.D.: The origins of structural operational semantics. J. Log. Algebraic Program. 60–61, 3–15 (2004)
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)
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)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Hughes, J.R.D., Jones, C.B. Reasoning about programs via operational semantics: requirements for a support system. Autom Softw Eng 15, 299–312 (2008). https://doi.org/10.1007/s10515-008-0036-6
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10515-008-0036-6