A uniform approach to applicative and imperative features in programming languages

  • Stefan Sokołowski
Part of the Lecture Notes in Computer Science book series (LNCS, volume 88)


We call “applicative” such features of programming languages as functional procedures or recursion inside arithmetical expressions. We call “imperative” such features as local variables, states, assignments, loops or parameters called by reference. We give a uniform input/output semantics and proof rules for a toy programming language that includes both. The semantics is nice in that it does not introduce explicitly anything that programmer chooses to leave implicit (e.g. stacks for recursion). The proof rules do not involve complicated variable- and parameter- replacements as is customary for procedures with parameters.

The paper is an informal bird's eye view rather than a formal exposition and the Reader is referred to other papers for technicalities of the approach. Several examples are given.


Procedure Call Semantical Meaning Denotational Semantic Partial Correctness Proof Rule 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Backus, J. “Can programming be liberated from the von Neumann style ? A functional programming style and its algebra of programs” Comm. ACM 21, 8, 1978Google Scholar
  2. [2]
    Backus, J. “Programming language semantics and closed applicative languages” Proc. ACM Symp. on Principles of Programming Languages 1973, 71–86Google Scholar
  3. [3]
    de Bakker, J. “The fixed point approach in semantics: theory and applications” Foundations of Computer Science, Mathematical Centre Tracts 63, 3–53, Amsterdam 1975Google Scholar
  4. [4]
    Blikle, A. “An analysis of programs by algebraic means” Banach Center Publications, Vol. 2, 167–213, Warsaw 1977Google Scholar
  5. [5]
    Blikle, A. “A survey of input-output semantics and program verification” ICS PAS Report 344, Warsaw 1979Google Scholar
  6. [6]
    Blikle, A. “Specified programming” ICS PAS Report 333, Warsaw 1978Google Scholar
  7. [7]
    Blikle, A.; Mazurkiewicz, A. “An algebraic approach to the theory of programs, algorithms, languages and recursiveness” MFCS 72, Proc. Symp. Jablonna 1972Google Scholar
  8. [8]
    Katz, S.; Manna, Z. “A closer look at termination” Acta Informatica 5, 333–352, 1975Google Scholar
  9. [9]
    Mazurkiewicz, A. “Foundations of theory of programming” (in Polish) Problemy przetwarzania informacji, 39–93, Warsaw 1974Google Scholar
  10. [10]
    Mazurkiewicz, A. “Proving properties of processes” Algorytmy XI, 5–22, 1974Google Scholar
  11. [11]
    Sokołowski, S. “Axioms for total correctness” Acta Informatica 9, 61–71, 1977Google Scholar
  12. [12]
    Sokołowski, S. “Procedures and functions with parameters in the calculus of relations” Univ. of Gdańsk, Inst. of Math., Preprint No. 17, 1979Google Scholar
  13. [13]
    Sokołowski, S. “Programs as term transformers” to appear in Fundamenta InformaticaeGoogle Scholar
  14. [14]
    Sokołowski, S. “Total correctness for procedures” MFCS 77, Lecture Notes in Computer Science Vol. 53, 475–483, 1977Google Scholar
  15. [15]
    Sokołowski, S. “Term transformations and their role in investigating properties of programs” (in Polish) in preparationGoogle Scholar
  16. [16]
    Tennent, R.D. “The denotational semantics of programming languages” Comm. ACM, Vol. 19, No. 8, 437–453, 1976Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1980

Authors and Affiliations

  • Stefan Sokołowski
    • 1
  1. 1.Institute of MathematicsUniversity of GdańskGdańskPoland

Personalised recommendations