alan turing automatic computing engine cambridge university press claude shannon computable function computer science counter machine digital object identifier donald knuth edvac halting problem john von neumann marvin minsky matthew cook microcode oxford university press partial function recursive function recursive language recursively enumerable language register machine stanford university stephen wolfram turing equivalence turing machine turing machine equivalents turing machine examples undecidable university of birmingham utm theorem vaughan pratt von neumann architecture wolfram research