Friedberg–Muchnik theorem
Theorem about Turing reductions
From Wikipedia, the free encyclopedia
In mathematical logic, the Friedberg–Muchnik theorem is a theorem about Turing reductions that was proven independently by Albert Muchnik and Richard Friedberg in the middle of the 1950s.[1][2] It is a more general view of the Kleene–Post theorem. The Kleene–Post theorem states that there exist incomparable languages A and B that are Turing reducible to the halting problem. The Friedberg–Muchnik theorem states that there exist incomparable, computably enumerable languages A and B. Incomparable meaning that there does not exist a Turing reduction from A to B or a Turing reduction from B to A. It is notable for its use of the priority finite injury approach.[3]
Notation
We write to denote that , and . We will always assume by default that are finite.
An oracle is a subset . To make an inquiry to an oracle is to ask whether . The response is "" xor "".
is the halting oracle.
is Turing reducibility.
is the i-th Turing machine.
is the i-th Turing machine equipped with an oracle for set .
is the output of upon input . If the machine does not halt, then define .
is the output of upon input , if the machine halts within k steps. If it has not yet halted, then define . This definition ensures .
is the largest number that would ever be inquired by while it is computing . If , then define .
Kleene–Post theorem
Kleene–Post theorem—There exists two subsets , such that . Here, is the halting oracle, i.e. the set of i such that the i-th Turing machine halts on the empty input.
The theorem is proven by constructing a Turing machine equipped with as its oracle, such that:
- It streams out a sequence of binary strings .
- Each extends .
- The characteristic function of A is .
- Similarly for B.
- All requirements are satisfied.
- states that "The i-th Turing machine, equipped with B as oracle, fails to decide A".
- Similarly for B.
Each can be satisfied in two ways:
- Negatively, if (the i-th Turing machine, equipped with B as oracle) fails to halt on some input.
- Positively, if halts on some input j and outputs a value different from . Such j is called a witness to .
The construction uses the priority method: The machine streams out one by one, such that the requirements are satisfied one by one in stages.
At stage 2n:
- have already been constructed so far, and we seek to construct .
- Construct a Turing machine as follows:
- For each possible binary string that extends , it tests whether the n-th Turing machine would halt on input n given as its oracle, without attempting to read any bit outside of .
- As soon as such a machine is found, it outputs and halts.
- Then the halting oracle is consulted to see if the previously constructed Turing machine halts.
- If it halts, then run it, and assign to its output . After that, compute , and assign , where is chosen to be different from . This satisfies positively.
- Otherwise, it does not halt, indicating that all possible that extends the current will necessarily cause to hang forever, thus meaning that will be satisfied negatively no matter which we end up with. In that case, just define , or whatever.
Stage 2n+1 is done similarly to satisfy .
Friedberg–Muchnik theorem
The above construction uses the halting oracle, so the two sets might not be enumerable. It can be strengthened:
Friedberg–Muchnik theorem—There exists two computationally enumerable subsets , such that .
The theorem can be proved by constructing a Turing machine without oracle such that:
- It streams out a sequence of finite sets such that , and similarly for B.
- All requirements are satisfied.
- states that "The i-th Turing machine, equipped with B as oracle, fails to decide A". Similarly for B.
Each can be satisfied in two ways as before. Negatively without a witness, or positively with a witness.
Finite injury method
The idea of the finite injury method is that we will optimistically hope that the sets we have constructed so far are good enough, and will procrastinate on change for as long as possible, until a requirement gets "injured" (as they must eventually). The injury is positive evidence that our optimism has failed. So we reluctantly update the sets, healing the requirement, update some witnesses, then optimisitically hope all over again.
Because there are infinitely many requirements, healing a requirement might clobber other requirements. Specifically, if we ever change our mind about what should go into , then that would change the behavior of for some i, which might then injure some previously satisfied requirements. To bypass this difficulty, the finite injury method ensures:
- Every requirement can be healed infinitely often, because it has an infinite pool of witnesses to choose from.
- Every requirement can be injured only finitely often, because we arrange the requirements in a well-ordered set of priorities , and ensure that every requirement can only be clobbered by requirements prior to it.
Thus, all requirements will be satisfied in the end.
Proof
We computably partition into infinitely many infinite sets. For example, we can define them by repeated bisection:We enumerate them by for . The idea is that are a list of candidate witnesses to , and .
- At stage 0, we initialize the algorithm by outputting , and assigning witnesses to all requirements:
- for , assign witness ;
- for , assign witness .
- Note that, even though we are performing an infinite number of assignments, this can be done, because the entire assignment is computable. Later, we will update this infinite list of assignments. But we will ensure every update is still computable.
- At stage 2n,
- We check the health of all requirements for all , by simulating for up to steps.
- If all these at step , either because it hasn't halted yet, or because it halted on a different value, then we have no positive evidence that we need to change anything. So we change nothing. Keep all witnesses the same, and output
- Otherwise, find the lowest such that . The requirement is the priority injured requirement.
- Output to heal the priority injured requirement, and simultaneously update all byto ensure that, if we ever need to heal one of the requirements by adding a witness into , it will not thereby injure . Nothing else needs to change, so we output and keep all other witnesses the same.
- In order to compute the assignment, we simply need to apply all updates in sequence. It is as if applying a list of software patches, one patch after another. Since each update is computable, the whole witness assignment at this step is still computable.
- At stage 2n+1, the construction goes over almost exactly the same way.
- The only difference is that, if is injured, then we must simultaneously update all . This avoids an infinite mutual injury loop between and .
The construction ensures that can only be injured by attempts to heal , and only by .
Variants
The same idea allows us to construct variants or stronger versions of the Friedberg–Muchnik theorem.[4]
We say that is autoreducible for some Turing machine , iff for all ,
- and , or
- and .
In other words, each question can be settled by that inquires an oracle that will answer all questions concerning , as long as . We say is not autoreducible iff it is not autoreducible for any .
Then there exists an enumerable but not autoreducible set . We construct it thus:
- We ensure nonautoreducibility with an infinite list of requirements. Let be the requirement that does not autoreduce .
- We ensure every requirement can only be injured finitely often, by well-ordering the requirements .
- We ensure every requirement can be healed infinitely often, by assigning an infinite list of potential witnesses to each requirement . We also ensure are mutually disjoint.
The previous construction then works in the same way, because it is impossible for any requirement to cause self-injury.
Given an infinite and enumerable set , we can construct , such that are enumerable, mutually irreducible, and every inclusion is sparse. We construct it by generalizing the previous construction:
- We ensure mutual irreducibility with an infinite list of requirements. Let be the requirement that does not decide . Here, .
- We ensure every requirement can only be injured finitely often, by well-ordering the requirements.
- Any computable well-ordering will work. For example, we can use the Cantor zig-zag function , then define .
- We ensure every requirement can be healed infinitely often by assigning, for each such that , an infinite list of potential witnesses that may eventually be inserted to witness . For each , the lists are mutually disjoint.
- We ensure sparsely by an iterative process of sparsification and partition:
- Enumerate an infinite list of ascending elements . This is possible since is infinite and enumerable.
- At stage 0, sparsify the list to . Call this list . Then partition into a doubly-infinite list of lists .
- At stage 1, sparsify into . Then partition into a doubly-infinite list of lists .
- And so on.
Combining the above two constructions, we can make all non-autoreducible as well.
Friedberg–Muchnik theorem below C
Friedberg–Muchnik theorem below —Given an enumerable but not computable , there exists enumerable sets , such that .
This shows that the order-structure of Turing degrees is quite complicated, even among enumerable sets.
WLOG, we assume that is enumerated as , each being a finite set.
Permit
To prove the theorem, we define the concept of permission. Technically, this is the Yates permitting. There are other kids of permissions.
Given two sequences of finite sets , we say that permits iff A bit more generally, if , then we say that f-permits iff
Permitting lemma—Given enumerable sequences of finite sets , and a function computable by a Turing machine equipped with -oracle, if f-permits , then
Given any , the finite initial segment is a limit of a sequence of finite sets: , and it is a finite set. So, we construct a C-oracle Turing machine, which takes as input, and outputs the smallest such that the limit is reached: .
Then, given any , compute the corresponding . By the permitting condition, , thus iff , which is decidable.
Proof
The requirements are still the same, with the same priority: .
In the original construction for the Friedberg–Muchnik theorem, if it were true that every time we add a witness via , we also have , then by the permitting lemma, . Similarly for . However, this is not true in general.
In order to bypass the difficulty, we define 3 types of witnesses, 2 types of injuries, and 1 type of permissive moves, that a requirement can have.
- Type 0 witness: . This tentatively witnesses and .
- Type 1 witness: . This tentatively witnesses and , and and .
- Type 2 witness: . This tentatively witnesses and .
- Type 0 injury: Because a prior requirement has made a permitted move, this requirement's witness has possibly been invalidated. The witness updates into a type 0 witness.
- Type 1 injury: Because of a previous update to , or because the computation has finally halted, a type 0 witness has been invalidated, in that . The witness updates into a type 1 witness.
- Permitted move: Because , the type 1 witness updates into a type 2 witness.
At stage 2n,
- We check if any type 1 witness is permitted to be moved into a type 2 witness.
- If so, then let be the smallest such that , and we perform the update:and simultaneously incur type 0 injury on all by updating each to
- Otherwise, we check for all type 1 injuries.
- For each , such that is a type 0 or type 1 witness,
- Simulate for up to steps.
- If , then a type 1 injury has occurred. Update the witness to
- For each , such that is a type 0 or type 1 witness,
Similarly for stage (2n+1).
To show that the construction works, we need to show that each requirement's witness can only change state a finite number of times, by induction on the requirements.
By inductive hypothesis, since would only change their witnesses a finite number of times, can only be type-0 injured a finite number of times. Consequently, the only way can change its witness is if it is type-1 injured an infinite number of times. Suppose this is the case, then its witness will eventually settle into an infinite process of being repeatedly type-1 injured, never permitted to move into a type 2 witness.
Suppose this is the case, then let be at stage 2k. By construction, is a function that is computable, non-decreasing, and because the witness is injured infinitely many times, . By assumption, this witness will eventually be stuck forever as a type 1 witness, never permitted to move, sofor all large enough k. However, if this is the case, then is decidable, contradicting the original assumption that is enumerable but undecidable.
Sacks's splitting theorem
We also have[5]
Sacks's splitting theorem—Given an enumerable but not computable , it can be partitioned into two enumerable sets , such that .
and
Sacks's density theorem—The computably enumerable degrees are dense.