Introduction To The Theory Of Programming Languages by Gilles Dowek & Jean-Jacques L. Vy