Syntax and Semantics of Programming Languages
This mini-course is about the mathematical structure of programming
languages regarded as syntactic objects equipped with a computational
In Part I, I will start by recalling the basics of the algebraic
approach to understanding abstract syntax and follow by presenting an
extension that incorporates binding operators. With this background,
in Part II, I will consider a unified framework for giving structured,
compositional semantics to process calculi. Our running examples will
be CCS, value-passing CCS, and the pi-calculus.
The aim of the mini-course is to offer tools for thinking about
syntactic and semantics aspects of programming languages in a principled
- Signatures. Algebraic syntax. Substitution. Initial algebra
semantics. Inductive types. Structural recursion.
- Binding signatures. Algebraic syntax with variable binding.
Capture-avoiding substitution. Initial algebra semantics.
- Coalgebraic transition systems. Bisimilarity. Final coalgebra
semantics. Structural operational semantics. Compositionality,
full abstraction, congruence. Examples: CCS, value-passing CCS,
- D.Turi and G.Plotkin.
Towards a mathematical operational semantics.
In 12th Logic in Computer Science Conference, pages 280-291. IEEE,
Computer Society Press, 1997.
- M.Fiore, E.Moggi, and D.Sangiorgi. A fully-abstract model for the
pi-calculus . In 11th Logic in Computer Science Conf. (LICS'96),
pages 43-54. IEEE, Computer Society Press, 1996.
- M.Fiore and D.Turi.
Semantics of Name and Value Passing.
To appear in 16th Logic in Computer Science Conference. IEEE,
Computer Society Press, 2001.