Teorema: Un linguaggio è acontestuale se e solo se esiste un automa a pila (PDA) che lo riconosce.

Dimostrazione

Se per una qualche CFG , allora esiste un PDA tale che

Intuizione: Dato un input userà la pila e il non determinismo per cercare di capire se è generabile da .

Ad esempio:

La pila contiene le sostituzioni. Il determinismo serve perché l’automa deve esplorare per forza tutti gli alberi di sostituzione.

All’inizio nella pila (leggi da sinistra a destra) ci sarà \mid \\ S \mid\mid $\ V_{2}\ a\ V_{1} \mid$.

Di fatto esplora in profondità tutti gli alberi generabili da .

In dettaglio:

  • Inserisce \\ S$ nella pila
  • e ripete:
    • Se il cima alla pila c’è , sceglile non deterministicamente le regole del tipo di e sostituisce .
    • Se nella pila c’è , faccio pop di e provo a fare match con il prossimo carattere di input.

(nel disegno più passi sono stati eseguiti in uno per semplicità.)

Formalmente, .

Per semplicità, ammettiamo senza perdita di generalità:

3 stati = = .

All’inizio inserisce \\ S\delta(q_{\text{start}}, \varepsilon, \varepsilon) = {(q_{\text{loop}}, S\ $)}$ Poi:

  • Se la cima contiene la variabile :
  • Se la cima contiene il terminale :
  • Se la cima contiene \$$: \delta(q_{\text{loop}}, \varepsilon, $) = {(q_{\text{acc}}, \varepsilon)}$

Dimostrazione

Se per una qualche PDA , allora esiste un CFG tale che

Dato un PDA , facciamo la grammatica equivalente .

Per ogni coppia di stati pongo e .

Per semplificare la assumo che è in forma normale di Chomsky e è in forma canonica:

  • Prima di accettare svuota la pila.
  • Non fa mai push e pop insieme, ma separatamente.

Le regole: todo

  1. Per ogni e .