The Formal Semantics of Programming Languages: An IntroductionThe 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 covered are drawn from recent research, including the vital area of concurency. 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 fall proofs are given of the equivalence of the operational and denotational semantics and soundness and relative completeness of the axiomatic semantics. A proof of Godel's incompleteness theorem, which emphasizes the impossibility of achieving a fully complete axiomatic semantics, is included. It is supported by an appendix providing an introduction to the theory of computability based on while-programs. 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 lan guages 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 operation 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 specifying and verifying nondeterministic and parallel programs. |
What people are saying - Write a review
Reviews aren't verified, but Google checks for and removes fake content when it's identified
User Review - Flag as inappropriate
If you have some background with this kind of material the book might be okay, but if you don't it's terrible. The author does an awful job of explaining problems and ideas. It's very confusing and assumes you know the material already.
Contents
Introduction to operational semantics | 11 |
Some principles of induction | 35 |
Inductive definitions | 41 |
The denotational semantics of IMP | 55 |
The axiomatic semantics of IMP | 77 |
Completeness of the Hoare rules | 99 |
Introduction to domain theory | 119 |
Recursion equations | 141 |
Techniques for recursion | 163 |
Languages with higher types | 183 |
Information systems | 223 |
Recursive types | 251 |
Nondeterminism and parallelism | 297 |
A Incompleteness and undecidability | 337 |
Other editions - View all
The Formal Semantics of Programming Languages: An Introduction Glynn Winskel No preview available - 1993 |
The Formal Semantics of Programming Languages: An Introduction Glynn Winskel No preview available - 1993 |
Common terms and phrases
abstraction application argument arithmetic expressions assertion Assn associated Assume boolean expressions bottom called canonical forms chapter closed term commands complete computation conclude consider consisting construction continuous function converse corresponding cpo's defined definition denotational semantics derivation described eager elements empty environment equations equivalence evaluation example execution Exercise extend fact false finite follows free variables give given Hence holds inclusive information systems integer interpretation language lazy least fixed point Lemma lifting lists locations logic mathematical means method monotonic Note obtain operational semantics pair partial order particular precisely predicate presented principle proof Proposition prove reasoning recursive relation represent respect result rule induction rule instances rules satisfies sequence simple skip structural induction subset substitution Suppose syntax Theorem tokens true valid values variables well-founded write