Concepts, Techniques, and Models of Computer Programming by Peter Van Roy & Seif Haridi