Source: http://web.cse.msstate.edu/~hansen/classes/3813spring05/slides/20Rice.pdf