You are on page 1of 29

MELJUN P.

CORTES, MBA,MPA,BSCS,ACS 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,
〈M〉

A

accept if M accepts e reject if not

... so can ATM
〈M〉, w

?

accept if M accepts w reject if not

Proof by “reduction”
〈M〉

A

accept if M accepts e reject if not accept if M accepts w reject if not

〈M〉, w

〈M’〉

A

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”
〈M〉, w construct 〈M’〉 M’ accept if M accepts w reject if not

A

M’: On input z, If z = e, then simulate M on w Otherwise, reject

q1 q0
☐/☐L

M’

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
〈M〉

A

accept if M accepts some input reject if not accept if M accepts e reject if not

〈M〉

〈M’〉

A

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
〈M〉 construct 〈M’〉 M’ accept if M accepts w reject if not

A

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 Simulate M on input 00 Accept if one of them accepts

...
... 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 If it accepts, accept. but M accepts, say, 11? 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 0 1 00 01

...

• Execution of algorithm
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 decidable

If M accepts some w, algorithm will see this in some stage of the simulation

...
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 decidable recognizable but unrecognizable time!
undecidable

Is it recognizable?
L3 = {〈M〉: M is a TM that accepts all inputs} • Let’s try...
Simulate M on e for 1 step Simulate M on e for 2 steps and then what? Simulate M on 0 for 2 steps Simulate M on e for 3 steps accept if all of them accept 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

If L and L are both recognizable, then L is decidable.
... so we can try to argue that L3 is recognizable

First attempt
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 accept if M rejects or loops Simulate M on e for 3 steps but how to know if it loops? Simulate M on 0 for 3 steps Simulate M on 1 for 3 steps

...

How to argue unrecognizability
L3 = {〈M〉: M is a TM that accepts all inputs} • Second attempt: Use what you know

ATM is not recognizable
• We can try to argue that

If we can recognize L3 then we can also recognize ATM

Proof by “reduction”
〈M〉

A

accept if M accepts all inputs rej/loop if not

〈M〉, w

construct 〈M’〉 M’

A

accept if M does not accept 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’
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,
length of 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 Description of M’:

In k steps

z = 0k

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 If we can recognize L3 then we can also recognize ATM ... but we know ATM is not recognizable

so
decidable recognizable but undecidable unrecognizable

Example 4

L4 = {(〈M1〉, 〈M2〉): M1 and M2 accept the same inputs} • Step 1: You gotta believe it
decidable recognizable but undecidable unrecognizable

• Step 2: Use what you know
ATM is recognizable L1 is recognizable but undecidable but undecidable
ATM is unrecognizable

L2 is recognizable but undecidable

L3 is unrecognizable

Example 4
L4 = {(〈M1〉, 〈M2〉): M1 and M2 accept the same inputs}
〈M1〉, 〈M2〉

A

accept if M1, M2 accept same inputs
rej/loop if not

L3 = {〈M〉: M is a TM that accepts all inputs}
〈M〉 accept if M accepts all inputs rej/loop if not

?

Example 4
〈M1〉, 〈M2〉

A
〈M1〉
qacc

accept if M1, M2 accept same inputs rej/loop if not accept if M accepts all inputs rej/loop if not

〈M〉

〈M2〉

A

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