October 6, Equivalence of Pushdown Automata with Context-Free Gramm

Similar documents
(pp ) PDAs and CFGs (Sec. 2.2)

(pp ) PDAs and CFGs (Sec. 2.2)

Introduction to Theory of Computing

FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY

PUSHDOWN AUTOMATA (PDA)

Computational Models - Lecture 5 1

Introduction to Formal Languages, Automata and Computability p.1/42

Context-Free Languages

Accept or reject. Stack

Pushdown Automata (Pre Lecture)

Pushdown Automata: Introduction (2)

CISC4090: Theory of Computation

CSE 105 THEORY OF COMPUTATION

Theory of Computation (IV) Yijia Chen Fudan University

Lecture 17: Language Recognition

CFGs and PDAs are Equivalent. We provide algorithms to convert a CFG to a PDA and vice versa.

AC68 FINITE AUTOMATA & FORMULA LANGUAGES DEC 2013

Harvard CS 121 and CSCI E-207 Lecture 10: CFLs: PDAs, Closure Properties, and Non-CFLs

Harvard CS 121 and CSCI E-207 Lecture 10: Ambiguity, Pushdown Automata

CSE 105 THEORY OF COMPUTATION

Pushdown Automata (2015/11/23)

Computational Models: Class 5

Theory of Computation (VI) Yijia Chen Fudan University

UNIT-VI PUSHDOWN AUTOMATA

Pushdown automata. Twan van Laarhoven. Institute for Computing and Information Sciences Intelligent Systems Radboud University Nijmegen

Computational Models Lecture 5

Intro to Theory of Computation

60-354, Theory of Computation Fall Asish Mukhopadhyay School of Computer Science University of Windsor

Part 4 out of 5 DFA NFA REX. Automata & languages. A primer on the Theory of Computation. Last week, we showed the equivalence of DFA, NFA and REX

CSE 211. Pushdown Automata. CSE 211 (Theory of Computation) Atif Hasan Rahman

September 11, Second Part of Regular Expressions Equivalence with Finite Aut

Nondeterministic Finite Automata

Pushdown Automata. Reading: Chapter 6

Computational Models - Lecture 4

CPS 220 Theory of Computation Pushdown Automata (PDA)

Pushdown Automata (PDA) The structure and the content of the lecture is based on

Pushdown Automata. Chapter 12

CFG and PDA accept the same languages

THEORY OF COMPUTATION (AUBER) EXAM CRIB SHEET

Undecidable Problems and Reducibility

NPDA, CFG equivalence

Fundamentele Informatica II

Outline. CS21 Decidability and Tractability. Machine view of FA. Machine view of FA. Machine view of FA. Machine view of FA.

Miscellaneous. Closure Properties Decision Properties

PS2 - Comments. University of Virginia - cs3102: Theory of Computation Spring 2010

Cliff s notes for equivalence of CFLs and L(PDAs) LisaCFL L = L(M) for some PDA M L=L(M)forsomePDAM L = L(G) for some CFG G

Pushdown Automata. We have seen examples of context-free languages that are not regular, and hence can not be recognized by finite automata.

CISC 4090 Theory of Computation

Equivalence of CFG s and PDA s

Foundations of Informatics: a Bridging Course

Homework. Context Free Languages. Announcements. Before We Start. Languages. Plan for today. Final Exam Dates have been announced.

Automata and Computability. Solutions to Exercises

MTH401A Theory of Computation. Lecture 17

Nondeterministic Finite Automata

Automata and Computability. Solutions to Exercises

Pushdown Automata. Notes on Automata and Theory of Computation. Chia-Ping Chen

DM17. Beregnelighed. Jacob Aae Mikkelsen

Please give details of your answer. A direct answer without explanation is not counted.

1. Draw a parse tree for the following derivation: S C A C C A b b b b A b b b b B b b b b a A a a b b b b a b a a b b 2. Show on your parse tree u,

Deterministic Finite Automata. Non deterministic finite automata. Non-Deterministic Finite Automata (NFA) Non-Deterministic Finite Automata (NFA)

Problem 2.6(d) [4 pts] Problem 2.12 [3pts] Original CFG:

CS375: Logic and Theory of Computing

UNIT-III REGULAR LANGUAGES

Theory of Computation

CSE 135: Introduction to Theory of Computation Nondeterministic Finite Automata (cont )

CS481F01 Prelim 2 Solutions

CpSc 421 Final Exam December 15, 2006

Closure under the Regular Operations

Pushdown Automata. Pushdown Automata. Pushdown Automata. Pushdown Automata. Pushdown Automata. Pushdown Automata. The stack

CISC 4090 Theory of Computation

Computability and Complexity

Definition: A grammar G = (V, T, P,S) is a context free grammar (cfg) if all productions in P have the form A x where

SCHEME FOR INTERNAL ASSESSMENT TEST 3

ECS 120: Theory of Computation UC Davis Phillip Rogaway February 16, Midterm Exam

Examples of Regular Expressions. Finite Automata vs. Regular Expressions. Example of Using flex. Application

Theory of Computation

CSE 105 THEORY OF COMPUTATION

CS 301. Lecture 18 Decidable languages. Stephen Checkoway. April 2, 2018

FORMAL LANGUAGES, AUTOMATA AND COMPUTATION

CS481F01 Solutions 8

Context-free Languages and Pushdown Automata

Einführung in die Computerlinguistik

Section 1 (closed-book) Total points 30

Theory of Computation Turing Machine and Pushdown Automata

MA/CSSE 474 Theory of Computation

Introduction to Languages and Computation

Chapter Five: Nondeterministic Finite Automata

Notes on Pumping Lemma

ECS 120 Lesson 15 Turing Machines, Pt. 1

cse303 ELEMENTS OF THE THEORY OF COMPUTATION Professor Anita Wasilewska

V Honors Theory of Computation

CSCE 551: Chin-Tser Huang. University of South Carolina

Part I: Definitions and Properties

CISC 4090: Theory of Computation Chapter 1 Regular Languages. Section 1.1: Finite Automata. What is a computer? Finite automata

Properties of Context-Free Languages. Closure Properties Decision Properties

CPSC 421: Tutorial #1

TAFL 1 (ECS-403) Unit- IV. 4.1 Push Down Automata. 4.2 The Formal Definition of Pushdown Automata. EXAMPLES for PDA. 4.3 The languages of PDA

CS Pushdown Automata

Final exam study sheet for CS3719 Turing machines and decidability.

Push-down Automata = FA + Stack

Transcription:

Equivalence of Pushdown Automata with Context-Free Grammar October 6, 2013

Motivation

Motivation CFG and PDA are equivalent in power: a CFG generates a context-free language and a PDA recognizes a context-free language.

Motivation CFG and PDA are equivalent in power: a CFG generates a context-free language and a PDA recognizes a context-free language. We show here how to convert a CFG into a PDA that recognizes the language specified by the CFG and vice versa

Motivation CFG and PDA are equivalent in power: a CFG generates a context-free language and a PDA recognizes a context-free language. We show here how to convert a CFG into a PDA that recognizes the language specified by the CFG and vice versa Application: this equivalence allows a CFG to be used to specify a programming language and the equivalent PDA to be used to implement its compiler.

Theorem 2.20 A language is context-free iff some pushdown automaton recognizes it. Note: This means that:

Theorem 2.20 A language is context-free iff some pushdown automaton recognizes it. Note: This means that: 1. if a language L is context-free then there is a PDA M L that recognizes it

Theorem 2.20 A language is context-free iff some pushdown automaton recognizes it. Note: This means that: 1. if a language L is context-free then there is a PDA M L that recognizes it 2. if a language L is recognized by a PDA M L then there is a CFG G L that generates L.

Lemma 2.21 If a language is context-free then some pushdown automaton recognizes it Proof idea:

Lemma 2.21 If a language is context-free then some pushdown automaton recognizes it Proof idea: 1. Let A be a CFL. From the definition we know that A has a CFG G, that generates it

Lemma 2.21 If a language is context-free then some pushdown automaton recognizes it Proof idea: 1. Let A be a CFL. From the definition we know that A has a CFG G, that generates it 2. We will show how to convert G into a PDA P that accepts strings w if G generates w

Lemma 2.21 If a language is context-free then some pushdown automaton recognizes it Proof idea: 1. Let A be a CFL. From the definition we know that A has a CFG G, that generates it 2. We will show how to convert G into a PDA P that accepts strings w if G generates w 3. P will work by determining a derivation of w.

What is a derivation? Recall: For G = (V, Σ, R, S), w L(G): A derivation of w is a sequence of substitutions S S α 1 A α w 2 B α 1... k w, S α 1, A α 2,..., B α k R, S, A,..., B not necessarily distinguished Each step in the derivation yields an intermediate string of variables and terminals Hence, P will determine whether some series of substitutions using rules in R can lead from start variable S to w

Difficulties expected How should we figure out which substitution to make?

Difficulties expected How should we figure out which substitution to make? Nondeterminism allows us to guess.

Difficulties expected How should we figure out which substitution to make? Nondeterminism allows us to guess. At each step of the derivation one of the rules for a particular variable is selected nondeterministically.

Difficulties expected How should we figure out which substitution to make? Nondeterminism allows us to guess. At each step of the derivation one of the rules for a particular variable is selected nondeterministically. How does P start?

Difficulties expected How should we figure out which substitution to make? Nondeterminism allows us to guess. At each step of the derivation one of the rules for a particular variable is selected nondeterministically. How does P start? P begins by writing the start variable on the stack and then continues working this string.

How does P terminate? If while consuming w, P arrives at a string of terminals that equals w then accept; otherwise reject

More questions The initial string (the start variable) is on the stack. How does P store the other intermediate strings? Using the stack doesn t quite work because the PDA needs to find the variables in the intermediate string and make substitutions. Note: stack does not support this because only the top is accessible

The way around Try to reconstruct the leftmost derivation of w Keep only part of the intermediate string on the stack starting with the first variable in the intermediate string. Any terminal symbol appearing before the first variable can be matched with symbols in the input. An example of graphic image of P is in Figure 1

An intermediate string Assume that S 01A1A0. stack $ 0 A 1 A Intermediate string 0 1 A 1 A 0 matched Input Control 0 1 1 0 0 1 A1A0 R Figure 1 : P representing 01A1A0

Informal description of P Place the marker symbol $ and the start variable on the stack

Informal description of P Place the marker symbol $ and the start variable on the stack Repeat

Informal description of P Place the marker symbol $ and the start variable on the stack Repeat 1. If the top of the stack is a variable symbol A, nondeterministically select a rule r such that lhs(r) = A and substitute A by the string rhs(r).

Informal description of P Place the marker symbol $ and the start variable on the stack Repeat 1. If the top of the stack is a variable symbol A, nondeterministically select a rule r such that lhs(r) = A and substitute A by the string rhs(r). 2. If the top of the stack is a terminal symbol, a, read the next input symbol and compare it with a. If they match pop the stack; if they don t match reject on this branch of nondeterminism

Informal description of P Place the marker symbol $ and the start variable on the stack Repeat 1. If the top of the stack is a variable symbol A, nondeterministically select a rule r such that lhs(r) = A and substitute A by the string rhs(r). 2. If the top of the stack is a terminal symbol, a, read the next input symbol and compare it with a. If they match pop the stack; if they don t match reject on this branch of nondeterminism 3. If the top of the stack is the symbol $, enter the accept state: accept state: if all text has been read accept, otherwise reject.

Informal description of P Place the marker symbol $ and the start variable on the stack Repeat 1. If the top of the stack is a variable symbol A, nondeterministically select a rule r such that lhs(r) = A and substitute A by the string rhs(r). 2. If the top of the stack is a terminal symbol, a, read the next input symbol and compare it with a. If they match pop the stack; if they don t match reject on this branch of nondeterminism 3. If the top of the stack is the symbol $, enter the accept state: accept state: if all text has been read accept, otherwise reject. until accept or reject

Proof of lemma 2.21 Now we can give formal details of the construction of the PDA P = (Q, Σ, Γ, δ, q 1, F )

Proof of lemma 2.21 Now we can give formal details of the construction of the PDA P = (Q, Σ, Γ, δ, q 1, F ) First we introduce an appropriate notation for transition function that provides a way to write an entire string rhs(r) on the stack in one step of the machine

Proof of lemma 2.21 Now we can give formal details of the construction of the PDA P = (Q, Σ, Γ, δ, q 1, F ) First we introduce an appropriate notation for transition function that provides a way to write an entire string rhs(r) on the stack in one step of the machine Simulation: this action can be simulated by introducing additional states to write the string symbol by symbol

Formal construction

Formal construction Let q, r Q, a Σ ɛ and s Γ ɛ.

Formal construction Let q, r Q, a Σ ɛ and s Γ ɛ. Assume that we want P to go from q to r when it reads a and pops s

Formal construction Let q, r Q, a Σ ɛ and s Γ ɛ. Assume that we want P to go from q to r when it reads a and pops s In addition, we want P to push on the stack the string u = u 1... u k at the same time

Implementation This construction can be implemented by introducing the new states q 1,...,q k 1 and setting transition function as follows:

Setting δ(q, a, s): (q 1, u k ) δ(q, a, s), δ(q 1, ɛ, ɛ) = {(q 2, u k 1 )}, δ(q 2, ɛ, ɛ) = {(q 3, u k 2 )},...... δ(q k 1, ɛ, ɛ) = {(r, u 1 )} Note: transitions that push u 1 u 2... u k on the stack operate on the reverse of u.

Notation (r, u) δ(q, a, s) means that when P is in state q, a is the next input symbol, and s is the symbol on top of the stack, P reads a, pop s, pushes u on the stack, and go to state r, as seen in Figure 2 Hence: (r, u) δ(q, a, s) is equivalent with q a,s u r

Graphic q r a, s xyz q a, s z q 1 ɛ, ɛ y q 2 r ɛ, ɛ x Figure 2 : Implementing the shorthand (r, xyz) δ(q, a, s)

Construction of P

Construction of P The states of P are Q = {q start, q loop, q accept } E where E is the set of states that we need to implement the shorthands.

Construction of P The states of P are Q = {q start, q loop, q accept } E where E is the set of states that we need to implement the shorthands. The transition function is defined as follows:

Construction of P The states of P are Q = {q start, q loop, q accept } E where E is the set of states that we need to implement the shorthands. The transition function is defined as follows: Initialize the stack to contain $ and S, i.e., δ(q start, ɛ, ɛ) = {(q loop, S$)}

Construction of P The states of P are Q = {q start, q loop, q accept } E where E is the set of states that we need to implement the shorthands. The transition function is defined as follows: Initialize the stack to contain $ and S, i.e., δ(q start, ɛ, ɛ) = {(q loop, S$)} Construct transitions for the main loop

Main loop transitions

Main loop transitions 1. First we handle the case where the top of the stack is a variable, by setting: δ(q loop, ɛ, A) = {(q loop, w) A w R} where R is the set of rules of CFG generating the language

Main loop transitions 1. First we handle the case where the top of the stack is a variable, by setting: δ(q loop, ɛ, A) = {(q loop, w) A w R} where R is the set of rules of CFG generating the language 2. Then we handle the case where the top of the stack is a terminal, setting: δ(q loop, a, a) = {(q loop, ɛ)}

Main loop transitions 1. First we handle the case where the top of the stack is a variable, by setting: δ(q loop, ɛ, A) = {(q loop, w) A w R} where R is the set of rules of CFG generating the language 2. Then we handle the case where the top of the stack is a terminal, setting: δ(q loop, a, a) = {(q loop, ɛ)} 3. Finally, if the top of stack is $ we set: δ(q loop, ɛ, $) = {(q accept, ɛ)}

Main loop transitions 1. First we handle the case where the top of the stack is a variable, by setting: δ(q loop, ɛ, A) = {(q loop, w) A w R} where R is the set of rules of CFG generating the language 2. Then we handle the case where the top of the stack is a terminal, setting: δ(q loop, a, a) = {(q loop, ɛ)} 3. Finally, if the top of stack is $ we set: δ(q loop, ɛ, $) = {(q accept, ɛ)} The state diagram of P is in Figure 3

State diagram of P q start ɛ, ɛ S$ ɛ, A w for rule A w q loop a, a ɛ for terminal a ɛ, $ ɛ q accept Figure 3 : State transition diagram of P

Example We use the procedure developed during the proof of Lemma 2.21 to construct the PDA P G that recognizes the language generated by the CFG G with the rules: S atb b T Ta ɛ A direct application of the construction in Figure 3 leads us to the PDA in Figure 4

State diagram of P G q start q loop 2 ɛ, ɛ S$ ɛ, $ ɛ q accept Figure 4 : ɛ, S b ɛ, ɛ T ɛ, ɛ a ɛ, T a ɛ, ɛ T ɛ, S b ɛ, T ɛ a, a ɛ b, b ɛ State transition diagram of P G

Lemma 2.27 If a language is recognized by a pushdown automaton then that language is a context-free language.

Proof idea Here we have a PDA P = (Q, Σ, Γ, δ, q 0, F ) and want to construct a CFG G that generates all strings recognized by P. For this we design G to do somewhat more: For each pair of states p, q Q, G will have a variable A pq that generates all strings that can take P from p with an empty stack to q with an empty stack. Assume that F = {q a }. Then A q0q a is the start symbol of the grammar Note: such strings can take P from p to q regardless of stack contents at p, leaving the stack at q the same as it was at p

Assumptions on P 1. P has a single accept state denoted q a 2. P empties its stack before accepting 3. At each transition P either pushes a symbol on the stack or pops of a symbol from the stack, but does not do both at the same time

Note 1 Giving features (1) and (2) to P is easy. 1. To give feature (1) to P add a new state say q a to Q, set {q a} the set of final states, and add the new tranbsitions: q F δ(q, ɛ, ɛ) = {(q a, ɛ)} 2. To guive feature (2) to P just add the transitions: b (V Σ) δ(q a, ɛ, b) = {(q r, ɛ)} where q r is a new reject-state in Q.

Nopte 2 To give feature (3) to P Replace each transition that simultaneously pops and pushes with a two transitions sequence that goes through a new state; In addition, replace each transition which neither pop nor push with a two transitions sequence that pushes and then pops an arbitrary stack symbol See Figure 5

Making it uniform Replace p a, b c q Replace ɛ, ɛ ɛ p q by by p a, b ɛ ɛ, ɛ c q p p ɛ, ɛ b ɛ, b ɛ q Figure 5 : Giving feature 3 to P p

Making it happens How is P working on a string x while moving from p with an empty stack to q with an empty stack? 1. P s first move on x must be a push, because each move is either a push or a pop, and the stack is empty. 2. Similarly, last move must be a pop because stack ends up empty. 3. Two possibilities occur during P s computation on x: 3.1 symbol popped at the end is the symbol pushed at the beginning; 3.2 symbol popped at the end is not the symbol pushed at the beginning

Note In case (a), the stack is empty only at the beginning and end of P s computation; In case (b) initially pushed symbol must get popped before end and thus stack becomes empty at that point.

Grammar simulation of P We simulate the case (a) of P s computation by the rule A pq aa rs b where a is the input symbol read at the first move, b is the symbol read at the last move, r is the state following p, and s is the state preceding q We simulate the case (b) of P s computation by the rule A pq A pr A rq where r is the state where the stack becomes empty

The formal proof Let P = (Q, Σ, Γ, δ, q 0, {q a }). Construct G = ({A pq p, q Q}, Σ, R, A q0 q a ) where R is constructed as follows: 1. For each p, q, r, s Q, t Γ, a, b Σ ɛ, if (r, t) δ(p, a, ɛ) (i.e., p a,ɛ t r) and (q, ɛ) δ(s, b, t) (i.e., s b,t ɛ q) then put A pq aa rsb in R 2. Fort each p, q, r Q put the rule A pq A pr A rq in R 3. For each p Q put the rule A pp ɛ in R Figures 6 and 7 provide the intuition of this construction

P s computation corresponding to A pq A pr A rq stack hight (0,0) p r q generated generated Input string Figure 6 : by A pr by A rq P s computation for A pq A pr A rq

P s computation corresponding to A pq aa rsb stack hight (0,0) r p a string generated s q b Input string Figure 7 : by A rs P s computation for A pq aa rsb

Claim 2.30 If A pq generates x then x brings P from p to q with empty stack Proof: by induction on the number of steps in the derivation of x from A pq

Induction basis Derivation has 1 step 1. A derivation with a single step must use a rule whose rhs contains no variables 2. The only rules in R whose rhs contain no variables are A pp ɛ 3. Clearly, the input ɛ takes P from p with empty stack to p with empty stack

Induction step Assume claim 2.30 true for derivations of length k, k 1, and prove it for k + 1 1. Suppose A pq x with k + 1 steps. The first step of this derivation is either A pq aa rsb or A pq A pr A rq 2. In the first case consider y portion of x generated by A rs, i.e., x = ayb. 3. Because A rs y with k steps, induction hypothesis tells us that P can go from r to s with empty stack 4. Because A pq aa rsb R, it follows that (r, t) δ(p, a, ɛ) (p a,ɛ t (q, ɛ) δ(s, b, t) (s b,t ɛ q) r) and

Induction step continuation 5. Hence, if P starts at p with empty stack, after reading a it can go to r and push t on the stack 6. Then, reading y it can go to s and leave t on the stack 7. At q, because (q, ɛ) δ(s, b, t), after reading b can go to state q and pop t off the stack. 8. Hence, x brings P from p to q with an empty stack

Induction step, second case 1. Consider the portions y and z of x that are generated by A pr and A rq, respectively, i.e., x = yz, A pr y, Arq z. 2. Because A pr y and Arq z are derivations containing at most k steps, y and z respectively bring P from p to r, and from r to q respectively, with empty stack 3. Hence, x can bring P from p to q with empty stack.

Claim 2.31 If x brings P from p to q with empty stack, then A pq generates x Proof: by induction on the number of steps in the computation of P going from p to q with empty stack on the input x

Induction basis Computation has 0 steps 1. With 0 steps, computation starts and ends with the same state p. 2. So, we must show that A pp x in 0 steps. 3. In zero steps P has only time to read the empty string, i.e., x = ɛ 4. By construction, R contains the rule A pp ɛ, hence A pp x

Induction step Assume claim 2.31 true for computations of length at most k, k 0, and show that it remains true for computations of length k + 1 Two cases: Case a: P has a computation of length k + 1 wherein x brings P from p to q with empty stack. Case b: P has a computation of length k + 1 wherein the stack is empty at the begin and end, and stacks may become empty also during computation

Case (a) stack is empty only at the beginning and end. 1. The symbol that is pushed at the first move must be the same as the symbol popped at the last move. Let it be t 2. Let a be the input read in the first move, b the input read at the last move, r be the state after the first move, and s be the state before the last move 3. Then (r, t) δ(p, a, ɛ) and (q, ɛ) δ(s, b, t), and A pq aa rsb R 4. Let y be the portion of x without a and b, i.e., x = ayb. Using induction we know that y brings P from r to s without touching t because we can remove the first and the last step of computation, hence A rs y. 5. But then A pq aa rsb ayb = x

Induction step, case (b) Let r be the state where the stack becomes empty other than at the beginning or end of computation on the input x 1. The portions of the computation from p to r and from r to q, both contain at most k steps 2. Let y be the input read during the computation from p to r and z be the input read during the computation from r to q 3. Using induction hypothesis we have A pr y and Arq z. 4. Because A pq A pr A rq R is result that A pq A pr A rq yz = x

Note We have proved that pushdown automata recognize the class of context free languages Every regular language is recognized by a finite automaton Every finite automaton is a pushdown automaton that ignores its stack Conclusion: every regular language is a context-free language.