# MSc in Computation courses

## Algebraic Semantics

*Optional course, 16 lectures in Hilary Term*

Prof J Goguen and Dr G Malcolm

### Aims

Roughly speaking the most popular approaches to the semantics of imperative
languages divide into two groups: the axiomatic and the denotational. The
approach described in these lectures might be called algebraic denotational
semantics. We give an equational specification for a class of abstract
machines, and then define the semantics of programs by their effects on the
states of these machines. An advantage of this approach is that it admits as
models any desired organisation of memory, such as cache or disc. This is
achieved by axiomatising the properties that any suitable storage must have.
This approach allows us to give rules for mechanically proving the correctness
of programs.
### Synopsis

Algebraic specification of imperative programs, correctness, invariants,
abstract data types, OBJ3, mechanical verification.
### Reading

**Course text**: J Goguen & G Malcolm, *Algebraic
Semantics*, PRG Lecture notes 1994
- R Backhouse,
*Program construction and verification*,
Prentice-Hall (1986)
- E W Dijkstra,
*A Discipline of Programming*, Prentice-Hall (1977)
- D Gries,
*The Science of Programming*, Springer-Verlag (1981)
- C B Jones,
*Systematic Software Development using VDM* (2nd
edition), Prentice-Hall (1990)
- J C Reynolds,
*The Craft of Programming*, Prentice-Hall (1981)