From UT Austin CS345 "Programming Language" lecture by T.dillig. http://cs.utexas.edu/~tdillig/cs345