Assertion programming

  • Andrzej J. Blikle
Invited Lectures
Part of the Lecture Notes in Computer Science book series (LNCS, volume 74)


The paper describes a method of the systematic development of programs supplemented by specifications. A program in our sense consists of an instruction (the virtual program) plus the specification which in turn consists of a precondition, a postcondition and a set of assertions. Such a program is called correct if the instruction is totally correct wrt the pre- and postcondition, if it does not abort and if the set of assertions is adequate for the corresponding proof of correctness. In the presented method correct programs are developed by sound transformations. The method is illustrated by the derivation of a bubblesort program.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Back, R. J., On the correctness of refinement steps in program development, Dept. of Computer Science, University of Helsinki, Report A-1978-4.Google Scholar
  2. 2.
    Bär, D., A Methodology for simultaneously developing and verifying PASCAL programs, in: Constructing Quality Software (Proc. IFIP TC-2 Working Conf., May 1977, Novosibirsk), North Holland, Amsterdam 1978.Google Scholar
  3. 3.
    Bjørner, D., The Vienna development method (VDM): Software specification & program synthesis, in: Mathematical Studies of Information Processing (Proc. Int. Conf. Kyoto, August 1978), 307–340, to appear in LNCS by Springer Verlag.Google Scholar
  4. 4.
    Blikle, A., A mathematical approach to the derivation of correct programs, in: Semantics of Programming Languages (Proc. Int. Workshop, Bad Honnef, March 1977), Abteilung Informatik, Universität Dortmund, Bericht Nr. 4,1 (1977), 25–29.Google Scholar
  5. 5.
    Blikle, A., Towards mathematical structured programming, in: Formal Description of Programming Concepts (Proc. IFIP Working Conf. St. Anarews, N.B. Canada, August 1–5, 1977, E.J. Neuhold, ed.), 183–202, North Holland, Amsterdam 1978.Google Scholar
  6. 6.
    Blikle, A., A comparative review of some program-verification methods. Mathematical Foundations of Computer Science 1977 (Proc. 6th Symp. Tatranska Lomnica, 1977), Lecture Notes in Computer Science 53, Springer Verlag, Heidelberg 1977, 17–33.Google Scholar
  7. 7.
    Blikle, A., Specified programming, in: Mathematical Studies of Information Processing (Proc. Int. Conf. Kyoto, August 1978).Google Scholar
  8. 8.
    Blikle, A., A survey of input-output semantics and program verification. ICS PAS Reports 344 (1979).Google Scholar
  9. 9.
    Blikle, A., On the development of correct programs with the documentation, College of Eng., University of California, Berkeley, Memo UCB/ERL, M7925, April 1979.Google Scholar
  10. 10.
    Burstall, R.M. and Darlington, J., A transformation system for developing recursive programs, J. ACM, 24 (1977), 44–67.CrossRefGoogle Scholar
  11. 11.
    Darlington, J., Applications of program transformation to program synthesis, Proc. Symp. of Proving and Improving Programs, Arc-et-Senans 1975, pp. 133–144.Google Scholar
  12. 12.
    Darlington, J., Transforming specifications into efficient programs. New Directions in Algorithmic Languages 1976 (ed. S.A. Schuman), IRIA Rocquencourt 1976.Google Scholar
  13. 13.
    Dershowitz, N. and Manna, Z., Inference rules for program annotation, Report No. STAN-CS-77-631 (1977).Google Scholar
  14. 14.
    Dijkstra, E.W., A constructive approach to the problem of program correctness, BIT 8 (1968), 174–186.Google Scholar
  15. 15.
    Dijkstra, E.W., Guarded commands, non-determinism and a calculus for the derivation of programs, Proc. 1975 Int. Conf. Reliable Software, pp. 2.0–2.13. Also in: Comm. ACM, 18 (1975), 453–457.Google Scholar
  16. 16.
    Dijkstra, E.W., Formal techniques and sizable programs, Proc. 1st Conf. Eur. Coop. Inf. Amsterdam 1976, Lecture Notes Comput. Sci. 44, 225–235 (1976).Google Scholar
  17. 17.
    Emden van, M.H., Verification conditions as representations for programs, manuscript (1975).Google Scholar
  18. 18.
    Emden van, M.H., Unstructured systematic programming, Dept. CS, Univ. Waterloo, CS-76-09 (1976).Google Scholar
  19. 19.
    Erig, H., Kreowski, H.J., Padawitz, P., Stepwise specification and implementation of abstract data types, in: Automata Languages and Programming (Proc. Fifth Coll. Udine, July 1978), Springer-Verlag LNCS 62, New York 1978, 205–226.Google Scholar
  20. 20.
    Floyd, R.W., Assigning meanings to programs, Proc. Sym. in Applied Math., 19 (1967), 19–32.Google Scholar
  21. 21.
    Goguen, J., Some ideas in algebraic semantics, (manuscript) presented at IBM Conference in Kyoto (Japan), 1978.Google Scholar
  22. 22.
    Goguen, J.A., Thatcher, J.W., Wagner, E.G., Wright, J.B., Abstract data types as initial algebras and correctness of data representations, Proc. Conf. on Comp. Graphics, Pattern Recognition and Data Structure, May 1975, 89–93.Google Scholar
  23. 23.
    Guttag, J., Abstract data types and the development of data structures, Comm. ACM, 20 (1977), 396–404.CrossRefGoogle Scholar
  24. 24.
    Irlik, J., Constructing iterative version of a system of recursive procedures, In: MFCS (Proc. Int. Symp. MFCS'76) Lecture Notes in CS, Springer-Verlag, Heidelberg 1976, vol. 45.Google Scholar
  25. 25.
    Lee, S., de Roever, W.R., Gerhart, S.L., The evolution of list-copying algorithms, 6th ACM Symposium on Principles of Programming Languages, January 1979.Google Scholar
  26. 26.
    Liskov, B.H., Zilles, S.N., Specification techniques for data abstraction, IEEE Trans. on SE Vol. Se-1, No. 1 (1975), 7–19.Google Scholar
  27. 27.
    Manna, Z., Mathematical Theory of Computation, McGraw-Hill, New York 1974.Google Scholar
  28. 28.
    Manna, Z., Pnueli, A., Axiomatic approach to total correctness of programs, Acta Informatica (1974).Google Scholar
  29. 29.
    McCarthy, J., A basis for a mathematical theory of computation, in: Computer Programming and Formal Systems, R. Braffort and D. Hirschberg eds., North-Holland, Amsterdam 1976, pp. 33–70.Google Scholar
  30. 30.
    Spitzen, J.M., Levitt, K.N., Lawrence, R., An example of hierarchial design and proof. New Directions in Algorithmic Languages 1976 (ed. S.A. Schuman), IRIA, Rocquencourt 1976.Google Scholar
  31. 31.
    Wegbreit, B., Goal-directed program transformations, IEEE TSE. Vol. SE-2, No. 2, (1976), 69–79.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1979

Authors and Affiliations

  • Andrzej J. Blikle
    • 1
  1. 1.Institute of Computer SciencePolish Academy of Sciences, PKiNWarsawPoland

Personalised recommendations