9. Push Down Automata

Find PDAs that accept each of the languages below, both by empty stack and by final state. Identify which approach feels more suitable for each language.

9.1.1. $ L = \{\: w \in \{A,B\}^* \ | \:w \text{ is a palindrome}\} $.

9.1.2. $ L = \{ A^{m} B^{m+n} C^{n} \ | \: n, m \geq 0 \} $

9.1.3. $ L = \{w \in \{a, b\}^* | \#_a(w) = \#_b(w) \} $

9.1.4. $ L = \{w \in \{a, b\}^* | \#_a(w) \neq \#_b(w) \} $

9.1.5. $ L = \{a^ib^jc^k | i = j \lor j = k \} $

9.2.1. Prove that PDAs that accept by empty stack and PDAs that accept by final state are equivalent. More concretely:

  • starting from a PDA $ A$ which accepts by empty stack, create a PDA $ A'$ which accepts by final state, such that $ L(A) = L(A')$ .
  • perform the same task - vice-versa.

9.2.2. Prove that the language $ L(A)$ where $ A$ is a PDA which uses only a fixed number of $ k$ stack cells, is regular.