Se tiene que una condición para que un lenguaje sea reconocido por un autómata de pila es que ese lenguaje sea libre de contexto. En esta sección probaremos y ejemplificaremos que la condición es necesaria. Pospondremos la suficiencia de esta condición a la exposición de los lenguajes libres de contexto.
Proposición 3.1
Para cualquier autómata de pila
su lenguaje
es libre de contexto.
En efecto, sea
la gramática tal que
1.
2.
si
entonces inclúyase la producción
para cualesquiera selecciones de los estados
.
3.
si
entonces inclúyase la producción
para cualesquiera selecciones de los estados
.
4.
si
entonces inclúyase la producción
.
5.
si
entonces inclúyase la producción
.
La idea subyacente en esta construcción consiste en que toda derivación siniestra en la gramática definida ha de simular una computación reconocedora en el autómata dado.
Veamos que para cualquier palabra
y para cualesquiera ,
se cumple
(51)
Mostremos esta implicación por inducción en el número de pasos de derivación.
Caso base: Supongamos que la DI
se siga inmediatamente de la DI .
Entonces
consta a lo sumo de un símbolo y necesariamente
.
Por tanto,
es una producción legal en G. Eso da el correspondiente miembro izquierdo de la relación 5.1.
Caso inductivo: Sea k>0. Supongamos que si
se deriva de
en a lo sumo k pasos, entonces
.
Consideremos ahora el caso en el que
se deriva de
en exactamente k+1 pasos.
Escribamos
.
Necesariamente, existe una primera DI
tal que
donde la última derivación se hace en a lo sumo k pasos.
Descompongamos
en m tramos,
,
donde cada
realiza el efecto global de ``desempilar'' al símbolo Yi. Se tiene que existen
tales que
(52)
Por la hipótesis de inducción se tiene
Ahora, de la primera derivación
,
se tiene
(53)
y consecuentemente, de 5.2 y 5.3
.
Mostremos ahora la implicación recíproca por inducción en el número de pasos de derivación.
Caso base: Si
es una producción legal en G, entonces
consta a lo sumo de un símbolo y
.
Por tanto la DI
se sigue inmediatamente de la DI .
Esto da el correspondiente miembro derecho de la relación 5.1.
Caso inductivo: Sea k>0. Supongamos que si
se deriva en a lo sumo k pasos, entonces
se deriva de .
Consideremos ahora el caso en el que
se deriva de [q,Y,q'] en exactamente k+1 pasos.
Escribamos
.
Necesariamente, para una primera derivación se ha de tener
donde la última derivación se hace en a lo sumo k pasos.
Escribamos
,
donde cada
es tal que
.
Por la hipótesis de inducción se tiene que
y de aquí se tiene también que
(54)
Como
es una producción, necesariamente
(55)
y consecuentemente, de 5.4 y 5.5
.
q.e.d.Ejemplo:
En un ejemplo anterior, vimos que el lenguaje
es reconocido por el autómata
donde en cualquier otra configuración, la función de transición asocia el conjunto vacío.
De acuerdo con la construcción anterior, el conjunto de variables de la gramática que simula computaciones en el autómata es
el cual, en este caso, tiene
símbolos. Construyendo las producciones conforme van apareciendo los símbolos variables, obtenemos lo siguiente:
Producciones para S: Las producciones ``iniciales'' son
con k=0,1,2,3.
Producciones para
[q0,X,qk]: Como
,
tenemos las producciones
Producciones para
[q0,C,qk]: Como
y
,
tenemos las producciones
Producciones para
[q1,C,q2]: Como
,
tenemos la producción
.
Producciones para
[q2,C,q3] y
[q3,C,q1]: Como
y
,
tenemos las producciones
y
.
Producciones para
[q1,X,q1]: Como
,
tenemos la producción
.
Producciones de errores: Como
,
tenemos la producción
De manera similar, de las demás condiciones de error tendremos las producciones
y no hay producciones para variables de la forma
[qi,A,qk], por lo que una vez que se generaron no hay manera de conducirlas a una palabra terminal.
Reescribamos las variables como se indica a continuación:
En la codificación anterior entre las variables de la forma
[qj,X,qk] sólo consideramos a
F=[q1,X,q1] pues las demás no aparecen como antecedentes de ninguna producción.
Entonces, las producciones que no corresponden a situaciones de error son las siguientes:
Ahora, si suprimimos a las producciones que en su consecuente tengan símbolos que no aparecen en el antecedente de ninguna otra producción (pues esos símbolos no podrán sustituirse y por tanto no derivan ninguna palabra terminal) se tiene las producciones:
Observemos ahora que toda vez que se genera B0 no hay manera de suprimirla. Por tanto, ninguna derivación terminal puede involucrar a esa variable. Así pues, omitiendo las producciones que involucran a B0 se tiene la gramática