Theories Of Programming Languages by John Reynolds & John C. Reynolds