The denotational semantics of programming languages

This paper is a tutorial introduction to the theory of programming language semantics developed by D. Scott and C. Strachey. The application of the theory to formal language specification is demonstrated and other applications are surveyed. The first language considered, LOOP, is very elementary and its definition merely introduces the notation and methodology of the approach. Then the semantic concepts of environments, stores, and continuations are introduced to model classes of programming language features and the underlying mathematical theory of computation due to Scott is motivated and outlined. Finally, the paper presents a formal definition of the language GEDANKEN.

[1]  Donald E. Knuth,et al.  Structured Programming with go to Statements , 1974, CSUR.

[2]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[3]  Dana S. Scott Mathematical concepts in programming language semantics , 1971, AFIPS '72 (Spring).

[4]  Robin Milner,et al.  Proving compiler correctness in a mechanised logic , 1972 .

[5]  Robin Milner,et al.  Implementation and applications of Scott's logic for computable functions , 1972, Proving Assertions About Programs.

[6]  J. W. de Bakker Least Fixed Points Revisited , 1976, Theor. Comput. Sci..

[7]  John McCarthy,et al.  A BASIS FOR A MATHEMATICAL THEORY OF COMPUTATION 1) , 2018 .

[8]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[9]  John C. Reynolds,et al.  On the Relation between Direct and Continuation Semantics , 1974, ICALP.

[10]  J. Vuillemin Proof techniques for recursive programs , 1973 .

[11]  Jean-Jacques Lévy,et al.  Mechanizable Proofs about Parallel Processes , 1973, SWAT.

[12]  Dana S. Scott,et al.  Outline of a Mathematical Theory of Computation , 1970 .

[13]  Robert Milne The Formal Semantics of Computer Languages and their Implementations , 1974 .

[14]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[15]  A. Church The calculi of lambda-conversion , 1941 .

[16]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[17]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[18]  Dennis M. Ritchie,et al.  The complexity of loop programs , 1967, ACM National Conference.

[19]  John C. Reynolds,et al.  GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept , 1970, Commun. ACM.

[20]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[21]  Ellis S. Cohen A semantic model for parallel systems with scheduling , 1975, POPL '75.

[22]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[23]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[24]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[25]  James H. Morris,et al.  Another recursion induction principle , 1971, CACM.

[26]  D. Scott Models for Various Type-Free Calculi , 1973 .

[27]  Willard Van Orman Quine,et al.  Word and Object , 1960 .

[28]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[29]  Henry F. Ledgard Ten Mini-Languages: A Study of Topical Issues in Programming Languages , 1971, CSUR.

[30]  Francis Lockwood Morris Correctness of translations of programming languages--an algebraic approach , 1972 .

[31]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[32]  R. D. Tennent,et al.  Mathematical semantics and design of programming languages. , 1973 .

[33]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[34]  J. W. de Bakker,et al.  Semantics of Programming Languages , 1969 .

[35]  Johan Lewi,et al.  The composition of semantics in Algol 68 , 1971, CACM.

[36]  John C. Reynolds On the Interpretation of Scott's Domain , 1973 .

[37]  R. Milner Models of LCF. , 1973 .

[38]  J. M. Cadiou,et al.  Recursive definitions of partial functions and their computations , 1972, Proving Assertions About Programs.

[39]  Robin Milner,et al.  Processes: A Mathematical Model of Computing Agents , 1975 .

[40]  George T. Ligler A mathematical approach to language design , 1975, POPL '75.

[41]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.