Source: http://personal.strath.ac.uk/ross.duncan/talks/2010/icalp-slides.pdf