Winskel, Glynn The formal semantics of programming languages: an introduction. (English) Zbl 0919.68082 MIT Press Series in the Foundations of Computing. London: MIT Press. XI, 361 p. (1993). This is a book based on lectures given at Cambridge and Aarhus Universities. It is introductory and is primarily addressed to undergraduate and graduate students in Computer Science and Mathematics beginning a study of the methods used to formalize and reason about programming languages. It provides the mathematical background necessary for the reader to invent, formalize and justify rules with which to reason about a variety of programming languages. Although the treatment is elementary, several of the topics covered are drawn from recent research. The book contains many exercises ranging from the simple to mini projects.Starting with basic set theory, structural operational semantics (as advocated by Plotkin) is introduced as a means to define the meaning of programming languages along with the basic proof techniques to accompany such definitions. Denotational and axiomatic semantics are illustrated on a simple language of while-programs, and full proofs are given of the equivalence of the operational and denotational semantics and soundness and relative completeness of the axiomatic semantics. A proof of Gödel’s incompleteness theorem is included. It emphasises the impossibility of ever achieving a fully complete axiomatic semantics. This is backed up by an appendix providing an introduction to the theory of computability based on while programs. After domain theory, the foundations of denotational semantics is presented, and the semantics and methods of proof for several functional languages are treated.The simplest language is that of recursion equations with both call-by-value and call-by-name evaluation. This work is extended to languages with higher and recursive types, which includes a treatment of the eager and lazy \(\lambda\)-calculi. Throughout, the relationship between denotational and operational semantics is stressed, and proofs of the correspondence between the operational and denotational semantics are provided. The treatment of recursive types – one of the more advanced parts of the book – relies on the use of information systems to represent domains. The book concludes with a chapter on parallel programming languages, accompanied by a discussion of methods for verifying nondeterministic and parallel programs. Cited in 2 ReviewsCited in 155 Documents MSC: 68Q55 Semantics in the theory of computing 68-01 Introductory exposition (textbooks, tutorial papers, etc.) pertaining to computer science 68N15 Theory of programming languages Keywords:structural operational semantics; Gödel’s incompleteness theorem PDFBibTeX XMLCite \textit{G. Winskel}, The formal semantics of programming languages: an introduction. London: MIT Press (1993; Zbl 0919.68082)