Types and programming languages Benjamin C. Pierce. - Pierce, Benjamin C. (MIT Press, 2002)