Pumping Lemma - Context Free Grammars




CS154

Chris Pollett

Mar 4, 2020

Outline

The Pumping Lemma

More on the Pumping Lemma

Using the Pumping Lemma

We can use the pumping lemma to show there are languages that are not regular. For example, let `C={ w| w \ mbox(has an equal number of 0's and 1's)}`. To prove `C` is not regular:

More Examples

In-Class Exercise

Let `k: NN -> NN` be a function such that `k(n) > n`. We know by the surjective pigeonhole principle that any function from `f:{0,1}^n -> {0,1}^{k(n)}` where `k(n) > n` must miss some point in `{0,1}^{k(n)}` (i.e., is not onto). Suppose `f:{0,1}^{\star} -> {0,1}^{\star}` maps string of length `n` to one's of length `k(n)`. Such a function `f` is a hard with respect to a class of adversary languages `mathcal{A}` and stretch `k` if there is no `A in mathcal{A}` such that for all `n` and for all `y in {0,1}^{k(n)}`, `y in A` iff there is an `x in {0,1}^n` such that `f(x) = y`. Such an `f` is a pseudo-random number generator with respect to `mathcal{A}` if the odds an `A in mathcal{A}` guesses which strings of length `k(n)` are in the image of `f` cannot be bounded away from a half. In cryptography, one might study techniques for converting hard functions into pseudo random ones.

Consider the function `f:{0, 1}^\star -> {0, 1}^\star` which maps strings `w=w_0... w_n` to `w' = w_0... w_nz` where `z` has the same value as `w_{lfloor n/2 rfloor}`. To make this function defined for all strings we define `f(epsilon) = 1`. Show this function is hard with respect to adversaries which are regular languages.

Post your solution to the Mar 4 In-Class Exercise Thread.

Using the Myhill Nerode Theorem to Show a Language is not Regular

Context Free Languages

Example CFG

More on CFGs

Formal Definitions

Example