The Formal Semantics Of Programming Languages: An Introduction

By (author): "Glynn Winskel"
The Formal Semantics Of Programming Languages: An Introduction
ISBN0262231697
ISBN139780262231695
AsinThe Formal Semantics Of Programming Languages: An Introduction
Original titleFormal Semantics of Programming Languages
"The Formal Semantics of Programming Languages" provides the basic mathematical techniques necessary for those who are beginning a study of the semantics and logics of programming languages. These techniques will allow students 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 are drawn from recent research, including the vital area of concurrency. The book contains many exercises ranging from simple to miniprojects. Starting with basic set theory, structural operational semantics is introduced as a way to define the meaning of programming languages along with associated proof techniques. 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 of the soundness and relative completeness of the axiomatic semantics. A proof of Gö del's incompleteness theorem, which emphasizes the impossibility of achieving a fully complete axiomatic semantics, is included.Following a presentation of domain theory, 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, including a treatment of the eager and lazy lambda-calculi. Throughout, the relationship between denotational and operational semantics is stressed, and the proofs of the correspondence between the operational and denotational semantics are provided. Thebook concludes with a chapter on parallel programming languages, accompanied by a discussion of methods for specifying and verifying nondeterministic and parallel programs.