Source: http://www.cse.chalmers.se/~coquand/AUTOMATA/o2.pdf