University of Leicester


Midlands Graduate School

Operational Semantics Lectures 2006, 2007, 2008

Two languages are presented, a simple imperative language with state, and a simple pure (that is, stateless) eager functional language. For each language we present an evaluation (natural) semantics, an abstract machine, and we prove that the machine and evaluation semantics are mutually correct. This forms a nice story for a course of five (rapid) lectures. We do not cover types in great detail (polymorphism and type inference are not covered). Also, we do not cover transition (Plotkin) semantics, nor any form of lazy evaluation for the functional language. The MGS notes are based on previous courses given by the author which do cover these topics, and also denotational semantics. The notes for the previous courses can be obtained from the author, as well as an implementation (and descriptive report) of an operational semantics which is a considerable superset of the languages presented in the MGS course.

The lecture notes and slides are available below, and there are additional notes, slides and software available which expand and complement the MGS 2006, 2007 and 2008 lectures.

The Lecture Slides and Related Material

  • The Midlands Graduate School lecture notes and slides on Operational Semantics, Abstract Machines and Correctness. The slides are available 1-up and 8-up. These notes cover a big-step style evaluation relation, an abstract machine, and a proof of mutual correctness for a simple imperative language, and a small eager functional language.
  • Details of the category theory book mentioned in the 2007 lectures and here is what to look for in the shops.
  • Some full text lecture notes, from a previous course on Operational Semantics, and the slides from this course. These notes cover transition and evaluation relations for an imperative language, and their mutual correctness; evaluation relations for both eager and lazy functional languages (including named and nameless functions); type systems for all these languages; and a simple introduction to polymorphism and polymorphic type inference.
  • Some full text lecture notes, from a previous course on Semantics of Programming Languages. These notes cover much of the material above, but in addition cover a basic introduction to denotational semantics. I have to say that if I were to lecture this material now, I would present it differently, but you may still find these notes a useful introduction to a small part of this wide and interesting topic. These notes also define simultaneously specified inductive sets which one does not see presented very often. Of course, the reason is that the usual definition encompasses the "simultaneous" definition (why?), but the fact remains that in many "practical" situations one defines a number of sets inductively and at the same time.
  • Some years ago I produced a software tool which provides an implementation of an impure functional language. One can delcare some functions, write a program, and then beginning with a specified memory state the software will produce a sequence of small-step transitions, or the result of a big-step evaluation. You may like to look at a description of the KOREL tool. I will try to provide a new binary for KOREL in the future. When looking at the tool prior to the 2006 MGS, I found a few bugs, which should be fixed.

Author: Roy Crole.
University of Leicester April 2013. Last modified: 9th March 2013, 10:06:42.
Informatics Web Maintainer. This document has been approved by the Head of Department.