Why doesn't Cohen's definition for the $\mu$ operator result in non-computable functions?

75 Views Asked by At

I am reading Paul Cohen's Set Theory and the Continuum Hypothesis. Cohen defines the $\mu$ operator as{}^1

$\mu_y f(y,x_1,...,x_n) \equiv g$

where

i) $g(x_1,...,x_n) \equiv 0 \text{ if for any } \overline{x}_1,...\overline{x}_n \forall y f(y,\overline{x}_1,...,\overline{x}_n) \ne 0$

ii) If i) does not apply then $g(x_1,...,x_n) = a$ if $a$ is the least $y$ such that $f(y,x_1,...,x_n) = 0$

This operator can be combined with the primitive recursive operators to obtain all computable functions${}^2$.

But I am confused because it seems to me that this definition allows obtaining even uncomputable functions.

For example, you could have a primitive recursive function $f(t,i,n)$ that simulates Turing machine $t$ on input $i$ for $n$ steps and returns 0 if the machine has halted by step $n$ and 1 otherwise. Then $\mu_n f(t,i,n)$ yields a function that returns $0$ if there is no $n$ satisfying $f(t,i,n) = 0$ i.e. it returns a function that can solve the halting problem.

${}^1$ enter image description here

enter image description here

${}^2$ Cohen provides a proof of this claim, but the proof assumes case i) is true and never mentions case ii).

enter image description here

1

There are 1 best solutions below

3
On BEST ANSWER

The definition is correct, but a bit confusing, and different from how it's ordinarily done.

Clause (i) does not say that $g(x) = 0$ if $\forall y\;f(x,y)\ne 0.$ It says $g(x)\equiv 0$ if $\exists z\forall y\; f(z,y)\ne 0$ (where I've renamed the variable $z$ and put the existential quantifier in symbols rather than words so to be less confusing than the original). So your counterexample just yields the function that is identically zero rather than the halting function.

So in order to get something interesting from the $\mu$ operator, we must plug in a function that does eventually hit zero, for all values of its other inputs.

As Dan Doel remarks in the comments, usually we allow partial functions at intermediate stages of the construction and just leave $\mu f$ undefined for the particular inputs on which it never hits zero. We define the "partial recursive functions" in this way, and then say something is a "total recursive function" if it is a partial recursive function that happens to be total.

In Cohen's approach, we only ever work with total functions. As the second part of Cohen's proof shows, (this version of) the minimization operation suffices to produce all total Turing-computable functions, i.e. all total recursive functions.

The major advantage of the partial function approach is that the partial recursive functions can be constructed and enumerated in a completely effective manner.$^*$


$^*$Actually, this is wrong, or at least deserving of clarification. In Cohen's approach, we can effectively enumerate terms in the calculus of computable functions in the same way as in the case where we're using the partial function approach... it's formally the exact same calculus! What's different is how we think about the resolution of the "diagonalization paradox."

The idea is that, if we were able to effectively enumerate the (terms representing) one-variable total computatable functions $f_1(x), f_2(x),\ldots,$ then we can make the function $g(x) = f_x(x)+1,$ which "should" be computable if the enumeration is effective and we can effectively compute these things by parsing the term... though it's obviously defined to be different from every function on the list.

In the usual case, we agree that the enumeration was effective and that we can compute these things by parsing the term, but we get out by noting that some of these computations will not halt, so we actually have partial functions. In Cohen's way, we have total functions, but we can no longer effectively compute these things by parsing the term, since the semantics of the $\mu$ operator would require us to be omniscient about whether certain computations terminate.