Foundations for programming languages - Mitchell, John C. (Foundations of computing, 1996)