Theories of programming languages - Reynolds, John C. (Cambridge University Press, 1998)