|
Logic & Semantics |
In functional programming, there is considerable interest in the use of recursion operators such as fold and unfold to structure programs, and in the use of algebraic properties of these operators to reason about programs. In this talk I will explain how the same techniques can be used to structure and reason about program semantics within a functional language. I will show how denotational semantics can be written using fold, how operational semantics can be written using unfold, and how reasoning about such semantics can be simplified by using algebraic properties of fold and unfold. The techniques will be illustrated using a simple language of concurrent processes.