Fall 2000, CSE 468: Assignment 5
Distributed: Published on the web on November 6.
Due: November 17 (in class).
Total maximum score: 100 points.
The purpose of this assignment is to 
to provide experience with context-free languages and with Pushdown automata.
Please write your solutions as clearly and concisely as possible. 
-  (50 pts)
For each of the following languages, give a pushdown automaton that accepts it, 
and say whether the automaton is deterministic or not. 
Try to give a deterministic automaton whenever possible. 
-  L = L(G) where G is the grammar
   S -> lambda | ( S ) S
Note: L is the language of the balanced parentheses.
 -  L = { x in {a,b}* | #a(x) = #b(x) }
 -  L = { anx  | n >=0, x in {a,b}*, and |x| = n }    
where "n >= 0" means "n greater than or equal to 0", and |x| is the length of x.
 
 -  (50 pts) 
For each of the following languages, say whether it is context-free
or not, and prove your answer. (If the language is context-free, the proof
can be done by defining the corresponding CFG or PDA. If the language is not 
context-free, the proof can be done as a proof-by-contadiction via the 
pumping lemma.)
- L =  {anbnan | n >= 0}
 - L =  {ananbn | n >= 0}
 - L = {xx~ | x in {a,b}*} where 
    x~ represents the string obtained from x by 
    changing all a's in b's
    and viceversa. Example: if x = aaba then x~ = bbab