Transitions and Trees
Structural operational semantics is a simple, yet powerful mathematical theory for describing the behaviour of programs in an implementation-independent manner. This book provides a self-contained introduction to structural operational semantics, featuring semantic definitions using big-step and small-step semantics of many standard programming language constructs, including control structures, structured declarations and objects, parameter mechanisms and procedural abstraction, concurrency, nondeterminism and the features of functional programming languages. Along the way, the text introduces and applies the relevant proof techniques, including forms of induction and notions of semantic equivalence (including bisimilarity). Thoroughly class-tested, this book has evolved from lecture notes used by the author over a 10-year period at Aalborg University to teach undergraduate and graduate students. The result is a thorough introduction that makes the subject clear to students and computing professionals without sacrificing its rigour. No experience with any specific programming language is required.
- Does not require experience with any specific programming language
- Exercises and examples enable readers to test their own understanding of the material, while answers and hints are available online
- Material class-tested over 10 years at undergraduate and graduate level
Reviews & endorsements
'This book explains how programming languages actually work, with a wealth of examples. It shows convincingly that these languages go hand-in-hand with the simplest kind of logic. I would enjoy teaching from it.' Robin Milner, University of Cambridge
'A useful and thorough introduction to the structural operational semantics of programming languages.' Gordon Plotkin, University of Edinburgh
'This book is an excellent introduction to the theory of structured operational semantics, an ideal choice for a first course on semantics for students in computer science. The book covers the theory all the way from a few simple mathematical preliminaries to advanced examples of its use in describing and reasoning about modern programming language features. The presentation is a result of the author's experience in teaching the material over more than ten years, and it is unique in its pedagogical approach, guiding the reader gently via illustrative examples and exercises, as well as several invitations to the reader to pause and reflect: a moment's thought.' Mogens Nielsen, Aarhus University
Product details
No date availablePaperback
9780521147095
290 pages
246 × 174 × 15 mm
0.53kg
25 b/w illus. 75 tables 85 exercises
Table of Contents
- List of illustrations
- List of tables
- Preface
- About the illustrations
- Part I. Background:
- 1. A question of semantics
- 2. Mathematical preliminaries
- Part II. First Examples:
- 3. The basic principles
- 4. Basic imperative statements
- Part III. Language Constructs:
- 5. Control structures
- 6. Blocks and procedures (1)
- 7. Parameters
- 8. Concurrent communicating processes
- 9. Structured declarations
- 10. Blocks and procedures (2)
- 11. Concurrent object-oriented languages
- 12. Functional programming languages
- Part IV. Related Topics:
- 13. Typed programming languages
- 14. An introduction to denotational semantics
- 15. Recursive definitions
- Appendix A. A big-step semantics of Bip
- Appendix B. Implementing semantic definitions in SML
- References
- Index.