Foundations for Programming Languages by John C. Mitchell