Friedberg–Muchnik theorem

From testwiki
Jump to navigation Jump to search

Template:Short description 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.Template:SfnTemplate:Sfn 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.Template:Sfn

Notation

We write An↑A to denote that A0⊂A1⊂⋯, and A=limnAn. We will always assume by default that A0,A1,… are finite.

An oracle is a subset A⊂ℕ. To make an inquiry to an oracle is to ask whether j∈A. The response is "j∈A" xor "j∉A".

H is the halting oracle.

≤T is Turing reducibility.

TMi is the i-th Turing machine.

TMiA is the i-th Turing machine equipped with an oracle for set A.

TMiA(j) is the output of TMiA upon input j. If the machine does not halt, then define TMiA(j)=⊥.

TMiA(j)[k] is the output of TMiA upon input j, if the machine halts within k steps. If it has not yet halted, then define TMiA(j)[k]=⊥. This definition ensures TMiA(j)=limkTMiA(j)[k].

ϕiA(j) is the largest number that would ever be inquired by TMiA while it is computing TMiA(j). If TMiA(j)=⊥, then define ϕiA(j)=⊥.

Kleene–Post theorem

Template:Math theorem

The theorem is proven by constructing a Turing machine equipped with H as its oracle, such that:

  • It streams out a sequence of binary strings α0,β0,α1,β1,….
  • Each αn+1 extends αn.
  • The characteristic function of A is χA:=limnαn.
  • Similarly for B.
  • All requirements R0,A,R0,B,R1,A,R1,A,… are satisfied.
    • Ri,A states that "The i-th Turing machine, equipped with B as oracle, fails to decide A".
    • Similarly for B.

Each Ri,A can be satisfied in two ways:

  • Negatively, if TMiB (the i-th Turing machine, equipped with B as oracle) fails to halt on some input.
  • Positively, if TMiB halts on some input j and outputs a value different from χA(j). Such j is called a witness to Ri,A.

The construction uses the priority method: The machine streams out α0,β0,α1,β1,… one by one, such that the requirements R0,A,R0,B,R1,A,R1,A,… are satisfied one by one in stages.

At stage 2n:

  • α0,β0,…,α2n−1,β2n−1 have already been constructed so far, and we seek to construct α2n,β2n.
  • Construct a Turing machine as follows:
    • For each possible binary string β′ that extends β2n−1, 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 β2n to its output β′. After that, compute TMnβ2n(n), and assign α2n=α2n−1⊕b, where b∈{0,1} is chosen to be different from TMnβ2n(n). This satisfies Rn,A positively.
  • Otherwise, it does not halt, indicating that all possible χB that extends the current β2n−1 will necessarily cause TMnB(n) to hang forever, thus meaning that Rn,A will be satisfied negatively no matter which χB we end up with. In that case, just define α2n:=α2n−1⊕0,β2n:=β2n−1⊕0, or whatever.

Stage 2n+1 is done similarly to satisfy Rn,B.

Friedberg–Muchnik theorem

The above construction uses the halting oracle, so the two sets A,B might not be enumerable. It can be strengthened:

Template:Math theorem

The theorem can be proved by constructing a Turing machine without oracle such that:

  • It streams out a sequence of finite sets A0,B0,A1,B1,… such that An↑A,Bn↑B, and similarly for B.
  • All requirements R0,A,R0,B,R1,A,R1,A,… are satisfied.
    • Ri,A states that "The i-th Turing machine, equipped with B as oracle, fails to decide A". Similarly for B.

Each Ri,A 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 A, then that would change the behavior of TMiA 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 R0,A≺R0,B≺⋯, 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:{0,2,4,6,…}∪{1,5,9,13,…}∪{3,11,19,27,…}∪⋯We enumerate them by rij for i,j∈ℕ. The idea is that ri0,ri1,… are a list of candidate witnesses to Ri,A, and Ri,B.

  • At stage 0, we initialize the algorithm by outputting A0:=∅,B0:=∅, and assigning witnesses to all requirements:
    • for Ri,A, assign witness wi,A←ri0;
    • for Ri,B, assign witness wi,B←ri0.
    • 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 Ri,A for all i∈0:2n−1, by simulating TMiB2n−1(wi,A) for up to 2n−1 steps.
    • If all these TMiB2n−1(wi,A)≠0 at step 2n−1, 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 outputA2n:=A2n−1,B2n:=B2n−1
    • Otherwise, find the lowest i such that TMiB2n−1(wi,A)=0. The requirement Ri,A is the priority injured requirement.
    • Output A2n:=A2n−1∪{wi,A} to heal the priority injured requirement, and simultaneously update all wi,B,wi+1,B,… bywj,B←min⁡{rjk:k∈ℕ,rjk>max⁡(wj,B,ϕiB2n−1(wi,A))}to ensure that, if we ever need to heal one of the requirements Ri,B,Ri+1,B by adding a witness into B, it will not thereby injure Ri,A. Nothing else needs to change, so we output B2n:=B2n−1 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 i is injured, then we must simultaneously update all wi+1,A,wi+2,A,…. This avoids an infinite mutual injury loop between Ri,A and Ri,B.

The construction ensures that Ri,A can only be injured by attempts to heal R0,B,R1,B,…,Ri−1,B, and Ri,B only by R0,A,R1,A,…,Ri,A.

Variants

The same idea allows us to construct variants or stronger versions of the Friedberg–Muchnik theorem.[1]

We say that A⊂ℕ is autoreducible for some Turing machine TMi, iff for all k,

  • TMiA∖{k}(k)=0 and k∉A, or
  • TMiA∖{k}(k)=1 and k∈A.

In other words, each k∈A question can be settled by TMi that inquires an oracle that will answer all questions concerning j∈A, as long as j≠k. We say A is not autoreducible iff it is not autoreducible for any TMi.

Then there exists an enumerable but not autoreducible set A. We construct it thus:

  • We ensure nonautoreducibility with an infinite list of requirements. Let Ri be the requirement that TMi does not autoreduce A.
  • We ensure every requirement can only be injured finitely often, by well-ordering the requirements R0≺R1≺⋯.
  • We ensure every requirement can be healed infinitely often, by assigning an infinite list of potential witnesses ri0<ri1<⋯ to each requirement Ri. We also ensure {ri0<ri1<⋯}i∈ℕ 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 C, we can construct C⊃A0⊃A1⊃⋯, such that A0,A1,… 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 Rijk be the requirement that TMiAj does not decide Ak. Here, j≠k.
  • 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 f:ℕ3→ℕ, then define Rijk≺Ri′j′k′⟺f(i,j,k)<f(i′,j′,k′).
  • We ensure every requirement can be healed infinitely often by assigning, for each i,j,k such that j≠k, an infinite list of potential witnesses rijk0<rijk1<⋯ that may eventually be inserted Ak to witness Rijk. For each k, the lists {rijk0<rijk1<⋯}i∈ℕ,j∈ℕ,j≠k are mutually disjoint.
  • We ensure C⊃A0⊃A1⊃⋯ sparsely by an iterative process of sparsification and partition:
    • Enumerate an infinite list of ascending elements c0<c1<⋯∈C. This is possible since C is infinite and enumerable.
    • At stage 0, sparsify the list to c0,c2,c4,c8,…. Call this list L0. Then partition L0 into a doubly-infinite list of lists {rij00<rij01<⋯}i∈ℕ,j∈ℕ,j≠0.
    • At stage 1, sparsify L0 into L1. Then partition L1 into a doubly-infinite list of lists {rij10<rij11<⋯}i∈ℕ,j∈ℕ,j≠1.
    • And so on.

Combining the above two constructions, we can make all A0,A1,… non-autoreducible as well.

Friedberg–Muchnik theorem below C

Template:Math theorem This shows that the order-structure of Turing degrees is quite complicated, even among enumerable sets.

WLOG, we assume that C is enumerated as C0⊊C1⊊C2⊊⋯, each Cn 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 An↑A,Cn↑C, we say that {Cn}n∈ℕ permits {An}n∈ℕ iff ∀n,iCn∩[0:i]=C∩[0:i]⟹i∉An+1∖AnA bit more generally, if f:ℕ→ℕ, then we say that {Cn}n∈ℕ f-permits {An}n∈ℕ iff ∀n,iCn∩[0:f(i)]=C∩[0:f(i)]⟹i∉An+1∖An

Template:Math theorem Template:Math proof

Proof

The requirements are still the same, with the same priority: R0,A≺R0,B≺R1,A≺R1,B≺⋯.

In the original construction for the Friedberg–Muchnik theorem, if it were true that every time we add a witness via A2n:=A2n−1∪{wi,A}, we also have wi,A≥min⁡(C2n+2∖C2n), then by the permitting lemma, A≤TC. Similarly for B≤TC. 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: (wi,A,0,−,−). This tentatively witnesses wi,A,0∉A and TMiB(wi,A,0)≠0.
  • Type 1 witness: (wi,A,0,wi,A,1,−). This tentatively witnesses wi,A,0∉A and TMiB(wi,A,0)≠0, and wi,A,1∉A and TMiB(wi,A,1)=0.
  • Type 2 witness: (−,−,wi,A,2). This tentatively witnesses wi,A,2∈A and TMiB(wi,A,2)=0.
  • 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 B, or because the computation has finally halted, a type 0 witness has been invalidated, in that TMiB2n(wi,A,0)=0. The witness updates into a type 1 witness.
  • Permitted move: Because wi,A,1≥min⁡(C2n+2∖C2n), 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 i be the smallest i such that wi,A,1≥min⁡(C2n+1∖C2n), and we perform the update:A2n+1:=A2n∪{wi,A,1},wi,A←(−,−,wi,A,1)and simultaneously incur type 0 injury on all wi,B,wi+1,B,… by updating each towj,B←(min⁡{rjk:k∈ℕ,rjk>max⁡(wj,B,ϕiB2n−1(wi,A))},−,−)
  • Otherwise, we check for all type 1 injuries.
    • For each i∈0:2n−1, such that wi,A is a type 0 or type 1 witness,
      • Simulate TMiB2n−1(wi,A,0) for up to 2n−1 steps.
      • If TMiB2n−1(wi,A,0)[2n−1]=0, then a type 1 injury has occurred. Update the witness towi,A←(min⁡{rik:k∈ℕ,rik>wi,A,0},wi,A,0,−)

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 R0,A,R0,B,…,Rn,A,Rn,B would only change their witnesses a finite number of times, Rn+1,A can only be type-0 injured a finite number of times. Consequently, the only way Rn+1,A 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 f(k) be wn+1,A,1 at stage 2k. By construction, f(k) is a function that is computable, non-decreasing, and because the witness is injured infinitely many times, limkf(k)=∞. By assumption, this witness will eventually be stuck forever as a type 1 witness, never permitted to move, sof(k)<min⁡(C2k+2∖C2k)for all large enough k. However, if this is the case, then C is decidable, contradicting the original assumption that C is enumerable but undecidable.

Sacks's splitting theorem

We also have[2]Template:Math theorem

and

Template:Math theorem

See also

References

Template:Reflist