CS 235 Spring 2015 Lab 11 Key Rhys April 5, 2015 Introduction Undecidability, huh? My partner Daphne Duck and I are undecided as to how we like this lab. 1 Exercise 1 (Sipser 5.19, both editions) Show that the Silly PCP (where all the pairs have strings of the same length top and bottom) is decidable. There is a solution to the SPCP if and only if it begins with a single domino that has identical strings top and bottom. So here’s the decider: boolean sillyPCPDecider(DominoSet ds) { for each Domino d in ds { if (d.topString.equals(d.bottomString)) return true; } return false; } 2 Exercise 2 (Sipser 5.21, both editions) Use PCP to show that the ambiguity of a CFG is undecidable. The hint given by Sipser is crucial to this proof. Assume, to get a contradiction that AMBIG CF G is decidable, i.e. that there is a guaranteed halting correct TM decider boolean AmbigCFGDecider(CFG G) { // returns true if there is a string w in L(G) with two leftmost derivations // returns false otherwise } We will reduce PCP (which we know is undecidable) to AMBIG CF G and thus show that AMBIG CF G is undecidable. To do this we will create a (contradictory since it cannot exist) decider for PCP . 1 nh i h i h io tk t1 t2 We may write P = . , , · · · b1 b2 bk We may now define a context-free grammar G by: S → T |B T → t1 T a1 | t2 T a2 | · · · | tk T ak t1 a1 | t2 a2 | · · · | tk ak B → b1 Ba1 | b2 Ba2 | · · · | bk Bak b1 a1 | b2 a2 | · · · | bk ak where a1 , a2 , · · · , ak are new terminal symbols. We will show that the PCP P has a solution if and only if this CFG is ambiguous. Then we will have our contradictory: boolean PCPDecider(PCPInstance P) { return AmbigCFGDecider(G); } One direction is easy: If P has a match ti1 ti2 · · · tin = bi1 bi2 · · · bin then we have a string that has two leftmost derivations in G. That string is ti1 ti2 · · · tin ai1 ai2 · · · ain = bi1 bi2 · · · bin ai1 ai2 · · · ain which has one derivation via T and another via B. So G is ambiguous. Conversely, it remains to prove that if G is ambiguous then the PCP P has a solution. So suppose a string w has two distinct leftmost derivations. We remark that every string in L(G) is of the form xaim aim−1 · · · ai1 where the string x is composed entirely of symbols that appear on the dominos of PCP P . Furthermore, every derivation in G must begin with S → T or S → B. If the derivation begins S → T then the rest of the derivation of xai1 ai2 · · · aim is determined completely by the sequence i1 i2 · · · im . In fact the derivation is S → T → ti1 T ai1 ⇒ ti1 ti2 T ai2 ai1 ⇒ ti1 ti2 · · · tim aim · · · ai2 ai1 The only candidate for a second derivation for w will begin S → B and the rest will again be completely determined by the sequence i1 i2 · · · im . In fact the derivation is S → B → bi1 Bai1 ⇒ bi1 bi2 Bai2 ai1 ⇒ bi1 bi2 · · · bim aim · · · ai2 ai1 Since w is ambiguous we have ti1 ti2 · · · tim aim · · · ai2 ai1 = bi1 bi2 · · · bim aim · · · ai2 ai1 and so ti1 ti2 · · · tim = bi1 bi2 · · · bim . And this is a solution to the PCP P . 3 Exercise 3 Sipser 5.30. 1. Prove that INFINITE T M = {hM i | M is a TM and L is an infinite language} is undecidable. INFINITETM is nontrivial because some TMs have infinite languages and other TMs have finite languages. Secondly, it is a language property rather than a machine property because if there are two TMs 2 M1 and M2 with L(M1 ) = L(M2 ) then either both hM1 i and hM1 i ∈ INFINITETM or both hM1 i and hM1 i ∈ / INFINITETM . So by Rice’s Theorem, we conclude that INFINITE T M is undecidable. 2. Prove that {hM i | M is a TM and 1011 ∈ L(M )} is undecidable. Again we need show only that it’s a non-trivial language property. It’s non-trivial because some TMs accept 1011 and others don’t. It’s a language rather than a machine property because any time two TMs recognize the same language, either both have descriptions in this set or neither do. 3. ALLTM = {hM i | M is a TM and L(M ) = Σ∗ }. This is nontrivial because there are some TMs that recognize Σ∗ and there are others that do not. Secondly, it’s a language property because if two TMs have the same language, then either both have descriptions in ALLTM or neither does. 4 Exercise 4 Prove that ALLCFG is undecidable. Notice that LP AL and LP CP for a given instance of PCP are both deterministic context-free languages. Since DCFLs are closed under complement and CFLs are closed under union, we conclude that LP AL ∪ LP C is contextfree. Now LP AL ∪ LP C = Σ∗ if and only if LP AL ∪ LP C = ∅ if and only if LP AL ∩ LP C = ∅ which we know is undecidable. Hence it is undecidable if the language of a context free grammar is all of Σ∗ . 5 Exercise 5 Say a variable A in a CFG G is necessary if it appears in every derivation of some string w. Let NECESSARYCFG be the language of pairs {hG, Ai | A is a necessary variable in G}. Show that NECESSARYCFG is Turing recognizable and undecidable. In other words, we are asked to provide a recognizer: boolean NecessaryRecognizer(CFG G, Variable A) { // return true if there is a string w in L(G) // and A appears in every derivation of w } and prove that there does not exist a 3 boolean NecessaryDecider(CFG G, Variable A) { // return true if there is a string w in L(G) // and A appears in every derivation of w // return false if every string w has a derivation without A } Let’s begin by showing that it’s decidable if a variable A is necessary in the derivation of a particular string w. Specifically: boolean NecessaryForDerivationOf(CFG G, Variable A, String w) { Let the CFG G’ be the same as G but with every reference to A removed return w in L(G’) -- which we know is decidable } Now use that decider to show that NECESSARYCFG is Turing recognizable: boolean NecessaryRecognizer(CFG G, Variable A) { // return true if there is a string w in L(G) // and A appears in every derivation of w Let w1, w2, .. be an enumeration of Sigma* for w = w1, w2, ... { if (NecessaryForDerivationOf(G,A,w)) return true; } } We will prove NECESSARYCFG is undecidable by reducing ALLCFG to NECESSARYCFG . So assume, to get a contradiction, that a decider boolean NecessaryDecider(CFG G, Variable A) { // return true if there is a string w in L(G) // and A appears in every derivation of w // return false if every string w has a derivation without A } has been written. We will use it to make: boolean AllCFGDecider(CFG G) { // We know this should be impossible // because the problem is undecidable! Construct a new CFG G’ which has all the rules of G together with S0 -> S | T T -> aT | epsilon for all a in Sigma where S0 is the new start symbol, S is the old start symbol and T is new return(not(NecessaryDecider(G’,T))) } This works because, if L(G) = Σ∗ then also L(G0 ) = Σ∗ because G0 can do anything G can do. Furthermore, anything G can do G0 can also do without using T . So if L(G) = Σ∗ then T is not necessary in G0 . However, if L(G) 6= Sigma∗ , that means there is a string w ∈ Σ∗ but w ∈ / L(G). Notice however that w ∈ L(G0 ) but that any derivation of w in G0 requires T . Hence hGi ∈ ALLCFG if and only if hG0 , T i ∈ / NECESSARYCFG . 4
© Copyright 2024