In my class we call a set of computable functions $A$ recursive if its indexing set $I_A=\{e\in\mathbb N:\phi_e\in A \}$ is recursive, where $\phi$ is some known Gödel numbering of the computable functions. This definition does not seem very sensible to me, for this numbering repeats each function an infinite amount of times.

To give more context, my lecturer proved that the class of $\mu$-recursive functions is the class of functions, computed by unlimited register machines (URM). Thus by the $n$-th function we mean the function computed by the $n$-th program. Each program is effectively coded into a string of numbers and we are in fact dealing with some Gödel numbering of the strings of numbers.

Is there any context for which non-trivial properties of computable functions are decidable upon? For instance, a setting in which we don't care about the procedure that computes the function, as we do in my class? Who examines such theory?

What do we need to give up on, if we want Rice's theorem to be untrue?


If I correctly understand the question, it concerns how a computable function is to be given to us. If, in some context, Rice's theorem fails, this would mean that we have an algorithm which, given a computable function $f$, decides some non-trivial property of it. The question then arises, how is $f$ given as an input to our algorithm? The original context for Rice's theorem was, as your teacher explained, that $f$ is given in the form of a program (or the Gödel number of a program). You need something different from that. The first thing that comes to mind is, if you're interested only in total functions $f$, then you (or your algorithm) could be given $f$ as an oracle, a black box into which the algorithm can put any number $n$ and get back the value $f(n)$. This context certainly lets you compute properties like "$f(7)$ is odd." So in that sense, Rice's theorem fails in this context. I suspect, though, that you want something that (1) is less trivial and (2) doesn't use oracles (and perhaps (3) other conditions). In that case, it would be good if you describe in more detail what sorts of contexts you're looking for. Specifically, how might a function $f$ be given, as an input to an algorithm, if not as an oracle and not as a program?

  • $\begingroup$ I've been hearing the word "algorithm" a lot, with no rigorous definition of what that means. I am guessing it means a program, but I want to make sure. Is that what it means? $\endgroup$ – superAnnoyingUser Dec 15 '13 at 19:14
  • $\begingroup$ @Ivan Algorithms can be written as programs, but it is possible for two different programs to express the same algorithm. An obvious example would be programs in different programming languages, but even within one language, trivial variations of a program would be regarded as the same algorithm. $\endgroup$ – Andreas Blass Dec 16 '13 at 15:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.