The Inversion of Functions Defined by Turing Machines

Consider the problem of designing a machine to solve well-defined intellectual problems. We call a problem well-defined if there is a test which can be applied to a proposed solution. In case the proposed solution is a solution, the test must confirm this in a finite number of steps. If the proposed solution is not correct, we may either require that the test indicate this in a finite number of steps or else allow it to go on indefinitely. Since any test may be regarded as being performed by a Turing machine, this means that welldefined intellectual problems may be regarded as those of inverting functions and partial functions defined by Turing machines. Let fm(n) be the partial function computed by the m th Turing machine. It is not defined for a given value of n if the computation does not come to an end. This paper deals with the problem of designing a Turing machine which, when confronted by the number pair (m, r), computes as efficiently as possible a function g(m, r) such that fm(g(m, r)) = r. Again, for particular values of m and r no g(m, r) need exist. In fact, it has been shown that the existence of g(m, r) is an undecidable question in that there does not exist a Turing machine which will eventually come to a stop and print a 1 if g(m, r) does not exist. In spite of this, it is easy to show that a Turing machine exists which will