More undecidable languages The Chinese University of Hong Kong Fall 2008 CSC 3130: Automata theory and formal languages More undecidable languages Andrej Bogdanov http://www.cse.cuhk.edu.hk/~andrejb/csc3130
More undecidable problems L1 = {〈M〉: M is a TM that accepts input e} L2 = {〈M〉: M is a TM that accepts some input} L3 = {〈M〉: M is a TM that accepts all inputs} L4 = {〈M, M’〉: M and M’ accept the same inputs} decidable recognizable but undecidable unrecognizable
Example 1 L1 = {〈M〉: M is a TM that accepts input e} Step 1: You gotta believe it To know if M accepts e, it looks like we have to simulate it But then we might end up in a loop Step 2: Use what you know ATM is undecidable
Proof by “reduction” ? L1 = {〈M〉: M is a TM that accepts input e} Show that if L1 can be decided, ... so can ATM 〈M〉 A accept if M accepts e reject if not ? accept if M accepts w 〈M〉, w reject if not
Proof by “reduction” A A M’ is a Turing Machine such that: accept if M accepts e reject if not accept if M accepts w A 〈M’〉 〈M〉, w reject if not M’ is a Turing Machine such that: If M accepts w, then M’ accepts e If M does not accept w, then M’ does not accept e
Proof by “reduction” A M’ M’: On input z, accept if M accepts w construct M’ A 〈M’〉 〈M〉, w reject if not M’ M’: On input z, q1 ☐/☐R If z = e, then simulate M on w Otherwise, reject ☐/☐L q0 M qrej qacc
Recognizable or not? L1 = {〈M〉: M is a TM that accepts input e} decidable recognizable but undecidable unrecognizable Algorithm for L1 On input 〈M〉: Simulate M on input e
Example 2 L2 = {〈M〉: M is a TM that accepts some input} Step 1: You gotta believe it To know if M accepts, it looks like we have to simulate it But then we might end up in a loop Step 2: Use what you know ATM is undecidable L1 is undecidable
Example 2 A A M’ is a Turing Machine such that: accept if M accepts some input reject if not accept if M accepts e A 〈M’〉 〈M〉 reject if not M’ is a Turing Machine such that: If M accepts e, then M’ accepts some input If M does not accept e, then M’ does not accept anything
Example 2 A M’: On input w, If w = e, then simulate M on e accept if M accepts w construct M’ A 〈M’〉 〈M〉 reject if not M’: On input w, If w = e, then simulate M on e Otherwise, reject decidable recognizable but undecidable unrecognizable
... Is it recognizable? L2 = {〈M〉: M is a TM that accepts some input} Attempt to recognize L2: Simulate M on input e Simulate M on input 0 Simulate M on input 1 Accept if one of them accepts Simulate M on input 00 ... ... but there are infinitely many!
Is it recognizable? L2 = {〈M〉: M is a TM that accepts some input} Attempt to recognize L2: For all possible strings x (in lexicographic order): Simulate M on input x what if M loops on e but M accepts, say, 11? If it accepts, accept. If it rejects, reject. lexicographic order: e, 0, 1, 00, 01, 10, 11, 000, 001, ...
Is it recognizable? L2 = {〈M〉: M is a TM that accepts some input} Description of Turing Machine that recognizes L2: k := 1 For all possible strings x (in lexicographic order): For all strings y that come before x Simulate M on y for k steps If it accepts, accept. If it rejects, reject. k := k + 1
Explanation of algorithm ... inputs e 1 00 01 Execution of algorithm Simulate M on e for 1 step If M accepts some w, algorithm will see this in some stage of the simulation Simulate M on e for 2 steps Simulate M on 0 for 2 steps Simulate M on e for 3 steps Simulate M on 0 for 3 steps Simulate M on 1 for 3 steps ... decidable recognizable but undecidable unrecognizable
Example 3 L3 = {〈M〉: M is a TM that accepts all inputs} Step 1: You gotta believe it To know if M accepts, it looks like we have to simulate it But then we might end up in a loop Step 2: Use what you know ... by yourself this time! decidable recognizable but undecidable unrecognizable
Is it recognizable? and then what? ... L3 = {〈M〉: M is a TM that accepts all inputs} Let’s try... Simulate M on e for 1 step and then what? Simulate M on e for 2 steps Simulate M on 0 for 2 steps accept if all of them accept Simulate M on e for 3 steps Simulate M on 0 for 3 steps but there are infinitely many! Simulate M on 1 for 3 steps ...
Is it recognizable? L3 = {〈M〉: M is a TM that accepts all inputs} To check that 〈M〉 is in L3, it looks like we have to wait for an infinite number of simulations to finish But we don’t have that much time! Step 1: You gotta believe it ... but I don’t! decidable recognizable but undecidable unrecognizable
How to argue unrecognizability L3 = {〈M〉: M is a TM that accepts all inputs} First attempt: Remember that ... so we can try to argue that L3 is recognizable If L and L are both recognizable, then L is decidable.
First attempt ... Let’s try... L3 = {〈M〉: M is a TM that accepts all inputs} L3 = {〈M〉: M is a TM that does not accept all inputs} Let’s try... Simulate M on e for 1 step Simulate M on e for 2 steps Simulate M on 0 for 2 steps Simulate M on e for 3 steps Simulate M on 0 for 3 steps Simulate M on 1 for 3 steps ... accept if M rejects or loops but how to know if it loops?
How to argue unrecognizability L3 = {〈M〉: M is a TM that accepts all inputs} Second attempt: Use what you know We can try to argue that ATM is not recognizable If we can recognize L3 then we can also recognize ATM
Proof by “reduction” A A M’ is a Turing Machine such that: accept if M accepts all inputs rej/loop if not accept if M does not accept w construct M’ A 〈M’〉 〈M〉, w rej/loop if M accepts w M’ is a Turing Machine such that: If M does not accept w, then M’ accepts all inputs If M accepts w, then M’ rejects or loops on some input
Constructing M’ M’ is a Turing Machine such that: If M does not accept w, then M’ accepts all inputs If M accepts w, then M’ rejects or loops on some input To do this, we want to simulate M on w ... but what if simulation loops? Idea: M’ keeps accepting more and more of its inputs as long as M has not halted on w If M never halts on w, M’ will accept all inputs
Constructing M’ Description of M’: M’ is a Turing Machine such that: If M does not accept w, then M’ accepts all inputs If M accepts w, then M’ rejects or loops on some input Description of M’: length of z On input z, Simulate M on input w for |z| steps If simulation of M reaches state qacc, reject. If simulation of M reaches state qrej, accept. If neither state is reached, accept.
Correctness of construction M’ is a Turing Machine such that: If M does not accept w, then M’ accepts all inputs If M accepts w, then M’ rejects or loops on some input Description of M’: On input z, Simulate M on input w for |z| steps If simulation of M reaches state qacc, reject. If simulation of M reaches state qrej, accept. If neither state is reached, accept.
Correctness of construction M’ is a Turing Machine such that: If M does not accept w, then M’ accepts all inputs If M accepts w, then M’ rejects or loops on some input In k steps z = 0k Description of M’: On input z, Simulate M on input w for |z| steps If simulation of M reaches state qacc, reject. If simulation of M reaches state qrej, accept. If neither state is reached, accept. M’ rejects input 0k
Example 3 recap L3 = {〈M〉: M is a TM that accepts all inputs} We showed that ... but we know ATM is not recognizable so If we can recognize L3 then we can also recognize ATM decidable recognizable but undecidable unrecognizable
Example 4 L4 = {(〈M1〉, 〈M2〉): M1 and M2 accept the same inputs} Step 1: You gotta believe it Step 2: Use what you know decidable recognizable but undecidable unrecognizable ATM is recognizable but undecidable L1 is recognizable but undecidable L2 is recognizable but undecidable L3 is unrecognizable ATM is unrecognizable
Example 4 ? A L4 = {(〈M1〉, 〈M2〉): M1 and M2 accept the same inputs} accept if M1, M2 accept same inputs rej/loop if not L3 = {〈M〉: M is a TM that accepts all inputs} ? accept if M accepts all inputs 〈M〉 rej/loop if not
Example 4 A A If M accepts all inputs, then M1, M2 accepts same inputs accept if M1, M2 accept same inputs rej/loop if not accept if M accepts all inputs 〈M〉 A 〈M1〉 〈M2〉 qacc rej/loop if not If M accepts all inputs, then M1, M2 accepts same inputs If M does not, then M1, M2 do not accept same inputs M1 = M M2 = TM that always accepts