Talk:Computably enumerable set

Tuple
What the hell is a tuple??
 * An ordered pair. Dysprosia 03:23, 12 Dec 2003 (UTC)

No: All ordered pairs are tuples, but many tuples are not ordered pairs; some are ordered triples, etc. Michael Hardy 21:10, 12 Feb 2004 (UTC)

Ehm.. Tuple --NavarroJ 12:59, 20 August 2007 (UTC)

Is this correct?
"There is an algorithm that, when given an input — typically an integer or a tuple of integers or a sequence of characters — eventually halts if it is a member of S and otherwise runs forever." I've changed this sentence because all recursive sets are also recursively enumerable. Algorithms for RE sets are simply not guaranteed to halt if the input is not a member of the set. Also notice that the above sentence contradicts one of the examples.


 * Both versions are correct. But perhaps your version is clearer. If I have an algorithm A for a recursive set S which terminates if an element e is not in S I can create a new algorithm A' which is the same as A but instead of terminating if e is not in S it goes into an infinite loop. Using this construction I can covert all terminating algorithms into non-terminating ones.


 * P.S.If you post messages on talk pages please sign your message with ~ .MathMartin 19:19, 5 Apr 2005 (UTC)


 * Actually, Matiyasevich's Theorem says the converse: Every recursively enumerable set is Diophantine.   Jim

"if" versus "if and only if"

 * I can not agree with the wording "... eventually halts if and only if the input is an element of S ...". If it was so, recursive set could not be recursively enumerable, as the algurithm stops for input not being from S. I have changed the wording to "... eventually halts if the input is an element of S ...". This will allow recursive sets being also recursively enumerable. Zde 15:09, 3 January 2006 (UTC).
 * Unfortunately your definition allows any set whatsoever to be recursively enumerable. (Think about it.)
 * Given a recursive set, it's true that there's an algorithm that always halts and says whether the input is or is not in the set. But there's another algorithm that halts if and only if the input is in the set. For example, take your first algorithm, and rewrite it so that whenever it would have halted saying the element is not in the set, it instead goes into an infinite loop. (This is actually how you prove that recursive sets are recursively enumerable, or one way to prove it anyway.)
 * Accordingly, I'm reverting your edit (don't take it personally; it's a simple matter of correctness). --Trovatore 18:40, 3 January 2006 (UTC)

Circularity of Definitions
Isn't this definition of a computable function:

A partial function $$f:\subseteq \mathbb{N} \to \mathbb{N}$$ is called computable if the graph of $$f$$ is a recursively enumerable set.

circular with the definition of a recursively enumerable set:

A countable set S is called recursively enumerable if there exists a partial computable function $$f : \mathbb{N} \to S$$ such that $$S$$ is the range of $$f$$? --Michael Stone 00:25, 11 March 2006 (UTC)
 * Good catch. The definitions in computable function should be reworked, and probably computable function and recursive function should be merged. --Trovatore 00:41, 11 March 2006 (UTC)

Invalid definition of r.e. set
This is the invalid definition of recursively enumerable set from the article
 * There is an algorithm that, when given an input — typically an integer or a tuple of integers or a sequence of characters — eventually halts if and only if the input is an element of S.

The problem is that there is no formal definition of algorithm (unless you choose the nonstandard definition that identifies algorithms with Turing machines, or something else equally nonstandard). The definitions of recursively enumerable set that apear in current texts all make reference to one of the several equivalent formally defined models of computation. It is only via Church's thesis that they identify the sets that are recursively enumerable with the sets that are enumerable by some “algorithm.” This confusion about Church's thesis is pervasive in many of the articles about computability.

Several of the comments for the suggested merge of Recursive function and Computable function suffer from the same confusion. There can be no formal definition of computable function which does not make reference to some model of computation.

CMummert 20:25, 14 July 2006 (UTC)

To add to the the above, the first paragraph in the "Remarks" section seems to contradict the opening definition of recursively enumerable sets.

kapil (talk) 06:53, 23 March 2010 (UTC)
 * How ya figure? --Trovatore (talk) 07:42, 23 March 2010 (UTC)

Equivalent definitions?
I can't see how both definitions can be considered "equivalent". I can see how, having an algorithm that enumerates the set, I can have another algorithm that, given an input number, eventually halts iff the element is in the set. But I can't see how, having such an algorithm, I could possibly enumerate the elements of the set. -- Anonymous, 13:20, 23 August 2006 (UTC)


 * The definitions aren't considered equivalent -- they are provably equivalent. If you have an algorithm A that halts on exactly those numbers that are in a set S, you can enumerate S based on how many steps it takes A to halt, as follows.  Run A for one time step on input 0.  Then run A for two time steps on input 0 and for two time steps on input 1.  Then run A for three time steps on each of the inputs 0, 1, and 2.  Whenever you run A long enough on a particular input that A halts, enumerate that input into S.  If you continue methodically in the pattern just listed, you run A arbitrarily long on every input, and thus your enumeration will include every number for which A halts.  CMummert 13:53, 23 August 2006 (UTC)

Does S have to be a set of natural numbers?
Why not just say that a set S (of natural numbers, teacups, or whatever) is r.e. if ? Why (as is done in the article) restrict S to a set of nat. num's and attempt to accommodate other sets via goedel numbering? Infinite sets of natural numbers don't necessarily have godel numbers. Consider the set C of those that do. Now consider one that doesn't--of course, it's not possible to actually specify one--and call it s. C U {s} is r.e., but not (not entirely) due to goedel numbering. In any case, it seems to me that the best method would be to present the general definition (where the nature of the elements of S is left unspecified) and then later, if necessary, restrict attention to r.e. sets of natural numbers. ...or more simply: C U {teacup} is r.e., but goedel numbering won't tell which is the x s.t. $$f(x) = teacup$$ —The preceding unsigned comment was added by Futonchild (talk • contribs) 06:25, 28 February 2007 (UTC).


 * The problem is that there is no definition of an r.e. set of teacups, because no computer has ever been seen to output a teacup. CMummert · talk 13:14, 28 February 2007 (UTC)


 * No computer has ever been seen to output a natural number, either. But the set of natural numbers is r.e. all the same.  --Futonchild 17:04, 28 February 2007 (UTC)


 * What exactly do you believe is the formal definition of "the set A is recursively enumerable"? CMummert · talk 18:43, 28 February 2007 (UTC)


 * You are right. The range of a recursive function has to be a set of natural numbers, so an r.e. set has to be a set of nat num's too.  This makes me think though that maybe the comment about goedel numberings should be edited to reflect the fact that a goedel numbering function, while clearly intuitively effectively computable, cannot be, strictly speaking, recursive--?  Also, does this mean that the Church-Turing thesis must also be restricted to functions from (n-tuples of) nat. num's to nat. num's--since clearly there are effectively computable functions (e.g. goedel numberings) that are not recursive?  --Futonchild 21:52, 28 February 2007 (UTC)


 * Yes, it is true that the things called Godel numberings in computability theory, like the Godel numbering of the sentences of a formal language, cannot literally be "computable functions" unless their domain and range are included in the set of legal inputs/outputs of whatever model of computation we use. I used the word "corresponds" in this article precisely for that reason. Unfortunately the WP article on Godel numberings is currently in very bad shape.  Feel free to edit either article if you would like to improve them.
 * And yes, the Church-Turing thesis is limited to functions whose domain and range are included in the set of possible inputs/outputs of the model of computation. For example, the successor operation on ordinals, although in some sense effective, can't be computable because there is no model of computation that can represent all the ordinals as inputs. CMummert · talk 23:14, 28 February 2007 (UTC)

Dumb Questions
QUOTING from the article:

"A set S of natural numbers is called recursively enumerable if there is a partial recursive (i.e. computable) function whose domain (co-range) is exactly S, meaning that the function is defined if and only if its input is a member of S."

I'm starting pretty far back in trying to comprehend this. May I please have answers to these questions:


 * Is "partial recursive function" synonymous with "computable function"? (Partial recursive and computable are not defined or linked. Are they regarded as obvious in meaning?)


 * I know the terms domain and range. But why "co-range"? Is there any good reason to introduce this alternate and confusing term here?


 * The test of whether the set S is recursively enumerable relates to the "domain" of functions. Does the "range" of functions have any relevance to the matter?


 * After pondering my way through the introduction to the article, I was pleased to see that there is a section of "Examples". I eagerly went to it, and was deeply disappointed to see that it contains no (IMO) real examples of functions; only what I would call examples of types of functions. Are there any simple examples of what this article is about?


 * Is the set of all integers that are multiples of 7 recursively enumerable?. If so, what function satisfies the test?

Thanks very much. Wanderer57 (talk) 14:13, 8 August 2008 (UTC)
 * Yes, "partial recursive function" is the same as "partial computable function". Logically it should really be "recursive partial function" but this is the traditional name. They should be defined or linked.
 * I think "co-range" is kind of silly.
 * An r.e. set may be defined either as the domain or as the range of a partial recursive function. The two definitions are equivalent, but one may sometimes be more ocnvenient than the other.
 * Sure, there are tons of simple examples. Whether it's useful to list them is something that might want some thought....
 * Yes, the multiples of 7 form an r.e. set. Write a program that tests the input to see if it's a multiple of 7, and if so outputs 0; otherwise, it goes into an infinite loop. The partial recursive function defined by that program witnesses that the set is r.e. --Trovatore (talk) 18:45, 8 August 2008 (UTC)


 * Thank you very much. That helps a bit.  Encouraged by that, I'm going to ask another question.
 * Suppose I now have my program that tests the input to see if it is a multiple of 7. If it is, the output is 0. If it is not, the output is 41. BUT the domain of this function is all positive integers, not all integers that are multiples of 7.   ???


 * I didn't mean to suggest including tons of examples but I think a few examples would help a lot. Thanks.  Wanderer57 (talk) 19:10, 8 August 2008 (UTC)


 * The answer to your question is "yes" (well, except I'd quibble on "positive", since we seem to be allowing 0), and your program witnesses that the set of all natural numbers is r.e. --Trovatore (talk) 19:14, 8 August 2008 (UTC)


 * Thanks. Can you suggest a program that witnesses that the set of natural numbers that are multiples of 7 are r.e., because the domain of the function is that set? Wanderer57 (talk) 19:28, 8 August 2008 (UTC)


 * Trovatore's original function witnesses that. If the input is a multiple of 7, the program halts. Otherwise, it does not halt. So the domain (set of values for which it halts) is exactly the set of multiples of 7. This is a partial function.


 * The term "co-range" is not used in recursion theory; it's a category-theory term. I think it was added here in an attempt to clarify for category theorists which meaning of "domain" is intended. See domain (mathematics) &mdash; Carl (CBM · talk) 19:46, 8 August 2008 (UTC)

(unindent) The word "domain" is ambiguous. According to Binary relation, "A binary relation R is usually defined as an ordered triple (X, Y, G) where X and Y are arbitrary sets (or classes), and G is a subset of the Cartesian product X × Y. The sets X and Y are called the domain and codomain, respectively, of the relation, and G is called its graph.". Sometimes it is used to mean the set of things which might be considered as inputs to the function &mdash; in our case, the domain in that sense of a partial recursive function is always the natural numbers. Other times, domain (second sense) is used to mean the set of things within the domain (first sense) which when input to the function yields a value. This is what I was calling the "co-range" (for want of a better word) because the "range" of a function is the set of values which it outputs while the "co-domain" is the set of things within which the range (image of the domain) is located, that is, in our case, the natural numbers (again). JRSpriggs (talk) 06:00, 9 August 2008 (UTC)


 * Sure, domain is ambiguous in general, but it's not ambiguous in recursion theory or descriptive set theory. In those fields it has a standard meaning. On the other hand co-range I have never heard of — Carl says it's a category-theory term, which is possible, but in my limited experience with category theory I've never come across it. We aren't supposed to make up language here. --Trovatore (talk) 07:22, 9 August 2008 (UTC)


 * Thanks to all of you for your help in uderstanding this. As I said, I'm starting pretty far back.


 * As a general comment, I think complex terminology is a huge barrier to comprehension of this subject area. Both the article itself and some of the above discussion illustrate that.


 * For example, in the first sentence of the article, even before an r.e. set is defined, the reader is given an alternate name for the subject (i.e., computability theory, traditionally called recursion theory) and four alternatives for the term r.e. (i.e., computably enumerable, semidecidable, provable and Turing-recognizable). IMO this is packing too much information into one sentence.


 * Thanks, Wanderer57 (talk) 18:53, 9 August 2008 (UTC)


 * It is hard to avoid doing that. We need to identify the subject of the article quickly by whatever name a reader might know it. Once you realize that these are synonyms, you can ignore the ones you do not recognize on your first reading of the article. JRSpriggs (talk) 06:41, 10 August 2008 (UTC)


 * Thanks. I wonder if an initial statement in italics might be better, by taking the synonyms out of the defining sentence. E.g.,
 * (Computably enumerable, semidecidable, provable and Turing-recognizable are synonyms for recursively enumerable.)


 * Another question -- suppose a lookup table is created by picking a million numbers from a random number table, and an algorithm is created that halts only when given an input that is in the lookup table. Would that algorithm determine an r.e. set? Wanderer57 (talk) 15:45, 10 August 2008 (UTC)
 * Yes. Every finite (or co-finite) set of natural numbers is recursively enumerable. Indeed, they are recursive. JRSpriggs (talk) 16:13, 10 August 2008 (UTC)

"Algorithm"
Article says:
 * There is an algorithm that enumerates the members of S. That means that its output is simply a list of the members of S: s1, s2, s3, ... . If necessary, this algorithm may run forever.

I have requested discussion at
 * Talk:Algorithm characterizations

of whether this is a legitimate use of the word "algorithm", which I thought had to produce at most finite output. 66.127.52.47 (talk) 21:20, 20 March 2010 (UTC)

Universal recursively enumerable set
Strangely, I do not see here a universal recursively enumerable set. Boris Tsirelson (talk) 17:52, 17 February 2018 (UTC)


 * It is not defined here (and I have forgotten the definition), but I believe that these two examples listed in the section on examples would qualify:
 * Given a Gödel numbering $$\phi$$ of the computable functions, the set $$\{\langle i,x \rangle \mid \phi_i(x) \downarrow \}$$ (where $$\langle i,x \rangle$$ is the Cantor pairing function and $$\phi_i(x)\downarrow$$ indicates $$\phi_i(x)$$ is defined) is recursively enumerable (cf. picture for a fixed x). This set encodes the halting problem as it describes the input parameters for which each Turing machine halts.
 * Given a Gödel numbering $$\phi$$ of the computable functions, the set $$\lbrace \left \langle x, y, z \right \rangle \mid \phi_x(y)=z \rbrace$$ is recursively enumerable. This set encodes the problem of deciding a function value.
 * JRSpriggs (talk) 12:39, 18 February 2018 (UTC)

Should move to computably enumerable set
I have tagged computably enumerable set as G6 -- this page should be moved there per WP:NOUN. I think this is pretty cut and dried; I hope we don't need an RM. --Trovatore (talk) 05:53, 29 July 2022 (UTC)

2021 renaming
Detailed here: Wikipedia_talk:WikiProject_Mathematics/Archive/2021/Jun. --Dan Polansky (talk) 14:55, 10 October 2023 (UTC)

Origin of enumerable = partial?
Instinctively, I would expect ’enumerable’ to mean that I can make an enumeration, in which case ‘computably enumerable’ ought to mean that there is some algorithm which computes the next item in the sequence for me. Instead it seems to mean the opposite: adding this attribute to a term weakens it so that I can never be sure what is the next item in a sequence, unless it is just the numerical successor! ‘Partial’ I can see why it should be like that, but for ‘enumerable’ it comes across as a mystery. What is the historical background for this choice of terminology? (That would be a useful addition to the article.) 130.243.94.123 (talk) 16:45, 25 January 2024 (UTC)

Okay, found the explanation — in the alternative definition "The set S is the range of a total computable function, or empty.", which in at least is taken as the primary definition. The proof that this implies "is the domain of a partial recursive function" is straightforward, but the converse is very difficult. 130.243.94.123 (talk) 17:33, 25 January 2024 (UTC)
 * This isn't the place to discuss it, but actually the proof of the converse is not conceptually difficult. There might be a few details to get past, but the idea is straightforward.  If you want to know more, please ask a question on WP:RD/Math. --Trovatore (talk) 19:17, 25 January 2024 (UTC)