You are on page 1of 8

Capítulo 7: Propiedades de los lenguajes independientes del contexto. 7.

1 Formas normales para las gramáticas independientes del contexto 7.1.1 Eliminación de símbolos inútiles 7.1.2 Cálculo de símbolos generadores y alcanzables 7.1.3 Eliminación de producciones-ε 7.1.4 Eliminación de las producciones unitarias 7.1.5 Forma Normal de Chomsky 7.2 El lema de bombeo para los lenguajes independientes del contexto 7.3 Propiedades de clausura de los lenguajes independientes del contexto 7.4 Propiedades de decisión de los LIC

Capítulo 7: Propiedades de los lenguajes independientes del contexto.
7.1 Formas normales para las gramáticas independientes del contexto
Todo LIC (sin ε) es generado por una GIC en la que todas las producciones son de la forma A→BC o A→a, donde A, B y C son variables y a es un símbolo terminal (forma normal de Chomsky). Para llegar a ella, tenemos que: l. Eliminar los símbolos inútiles, aquellas variables o símbolos terminales que no aparecen en ninguna derivación de una cadena terminal que parta del símbolo inicial. 2. Eliminar las producciones-ε, aquellas de la forma A→ε para alguna variable A. 3. Eliminar las Producciones unitarias, aquellas de la forma A→B para A y B.

7.1.1 Eliminación de símbolos inútiles
Un símbolo X es útil para una gramática G = (V, T, P, S) si existe alguna derivación de la forma

S ⇒ αXβ ⇒ w , donde

*

*

w pertenece a T*. Observe que X puede ser V o T, y la forma sentencial αXβ puede ser la primera o la última en la derivación. Si X no es útil, decimos que es inútil. La omisión de los símbolos inútiles de una gramática no cambiará el lenguaje generado. El método para eliminar los símbolos inútiles identifica las dos cosas que un símbolo tiene que cumplir para resultar útil: l. Decimos que X es generador si w puede ser ese mismo símbolo terminal obtenido en cero pasos. 2. Decimos que X es alcanzable si existe una derivación
*

X ⇒ w para alguna cadena terminal w. Todo símbolo terminal es generador, ya que S ⇒ αXβ ⇒ w para algún α y β.
*

*

Un símbolo que es útil será generador y alcanzable. Si eliminamos los símbolos que no son generadores en primer lugar y luego eliminamos aquellos símbolos que no son alcanzables, tendremos sólo los símbolos útiles Ejemplo 7.1. Considere la gramática: S→AB| a, A→b. Todos los símbolos excepto B son generadores; a y b se generan a sí mismos; S genera a y A genera b. Si eliminamos B, tenemos que eliminar la producción S → AB, quedando la gramática: S→a A→b Ahora comprobamos que sólo S y a son alcanzables a partir de S. Eliminando A y b sólo queda la producción S→a. Dicha producción por sí misma es una gramática cuyo lenguaje es {a}, igual que el lenguaje de la gramática original. Si primero comprobamos la alcanzabilidad, nos encontramos con que todos los símbolos de la gramática son alcanzables. Si luego eliminamos el símbolo B porque no es generador, obtenemos una gramática que todavía tiene símbolos inútiles, en concreto, A y b. Teorema 7.2. Sea G = (V, T, P, S) una GIC y supongamos que L(G) ≠ Ø; es decir, G genera al menos una cadena. Sea G1 = (V1, T1, P1, S) la gramática que obtenemos mediante los siguientes pasos: l. Primero eliminamos los símbolos no generadores y todas las producciones que impliquen a uno o más de dichos símbolos. Sea G2 = (V2, T2, P2, S) esta nueva gramática. Observe que S tiene que ser generador, ya que suponemos que L(G) tiene al menos una cadena. 2. En segundo lugar, eliminamos todos los símbolos que no son alcanzables de la gramática G2. Luego G1 no tiene ningún símbolo inútil, y L(G1) = L(G) .

7.1.2 Cálculo de símbolos generadores y alcanzables

1

es generador. Por tanto. T. Si las construcciones inductivas apropiadas de estos conjuntos no consiguen descubrir un símbolo que sea generador o alcanzable. Por tanto. podemos utilizar la producción A→b para concluir que A es generador y podemos emplear la producción S→a para concluir que S es generador. Construimos una nueva gramática G1 = (V. a. concluimos que A. entonces B es anulable. Sea G = (V. En cualquier gramática G. Ahora no se puede añadir ningún símbolo más al conjunto de símbolos alcanzables. El paso inductivo termina en dicho punto. donde cada Ci es anulable. T. Según el paso inductivo. La nueva gramática G1 tendrá 2m versiones de esta producción. Si A→ε es una producción de G. Por supuesto. P. S) una GIC. Consideremos ahora el algoritmo inductivo mediante el que determinaremos el conjunto de símbolos alcanzables para la gramática G = (V. suponemos que m de los k Xi son símbolos anulables.1. T. ya que se genera a sí mismo. Paso inductivo. Supongamos que existe una producción A→α y que todo símbolo de α es generador. Todo símbolo de T. S}. Considere la gramática del ejemplo 7. A puede (o no) generar ε. Sea G = (V. entonces el símbolo no es de ninguno de esos tipos. concluimos que b es alcanzable. entonces L . Paso inductivo. Construimos dos versiones de la producción.1. y el otro en el que A si está presente en (B→CAD).{ε} tiene una GIC sin producciones-ε. S) una GIC. entonces el propio L es L . El algoritmo anterior determina todos (y sólo) los símbolos alcanzables de G. que corresponde al caso en que A tendría que haberse empleado para generar ε.1. Ahora proporcionamos la construcción de una gramática sin producciones. por lo que sólo hay que considerar las producciones cuyos cuerpos sean sólo variables. podemos demostrar que cualquier símbolo que no añadamos al conjunto de símbolos alcanzables no es realmente alcanzable. Por tanto. El algoritmo anterior encuentra todos y sólo los símbolos generadores de G. entonces * 2 . De acuerdo con el caso base. Teorema 7.{ε}. Si existe una producción B→C1C2…Ck.3 Eliminación de producciones-ε Ahora vamos a demostrar que las producciones-ε. el conjunto de símbolos generadores es {a. De nuevo. Base.7. aunque sean convenientes en muchos problemas de diseño de gramáticas.4. Para ambos problemas. Esta regla incluye el caso en que α = ε. Podemos encontrar todos los símbolos anulables de G mediante el siguiente algoritmo iterativo. Sea G = (V. es decir. S) una gramática. T. por lo que L tiene una GIC sin producciones-ε. donde los Xi anulables. P1. A. A. entonces A es anulable. Determinamos todos los símbolos anulables de G. S es alcanzable. Una variable A es anulable si cuando A aparece en el cuerpo de una producción. Observe que cada Ci tiene que ser una variable anulable. Teorema 7. Partimos de la gramática del ejemplo 7. b. pero A tiene A→b. porque no se ha demostrado que B sea generador.3. entonces no podemos permitir que A genere ε. B y a son alcanzables. donde k ≥1. entonces no incluimos el A ⇒ ε .Trataremos de saber cómo. para una gramática. P. calcular el conjunto de símbolos generadores y calcular el conjunto de símbolos alcanzables. Teorema 7. Entonces A es generador. P.5. Para cada producción A→X1X2…Xk de P. en todas las posibles combinaciones están presentes o ausentes. Existe una excepción: si m = k. B no tiene producciones. Para calcular los símbolos generadores de G. realizamos la siguiente inducción. Ejemplo 7. S). respectivamente. No podemos utilizar la producción S→AB. sin una producción que tenga un cuerpo ε. 7. Si utilizamos la versión en la que aparece A. a y b son generadores. cuyo conjunto de producciones P1 se determina como sigue. S). los únicos símbolos anulables son las variables encontradas por el algoritmo anterior. Si ε no pertenece a L. T. De acuerdo con el caso base. Hay que descubrir qué variables son "anulables". es imposible generar la cadena vacía como miembro del lenguaje. Base.6. lo que realmente vamos a demostrar es que si el lenguaje L tiene una GIC. que es {S.ε. una sin A en el cuerpo (B→CD). todos los símbolos son anulables. Ejemplo 7. no son esenciales. Dado que S tiene cuerpos de producción AB y a. b}. decimos que B→CAD. todas las variables que tienen ε como cuerpo de una producción son generadoras. B. vamos a emplear el algoritmo que intenta descubrir los símbolos de dichos tipos. Si A es anulable. P.

B→bBB| bB| b. De forma similar. (E. F) y (I. T) y la producción T→F generan el par unitario (T. B) es un par unitario y que B→C es una producción. entonces L(Gl) = L(G) . Sin embargo. Para el paso inductivo. La segunda y tercera posiciones son símbolos anulables. F) y la producción F→I generan el par unitario (T. (T. no incluimos esta producción en P1. E) y la producción E→T generan el par unitario (E. Todos los símbolos del cuerpo son anulables. donde A y B son variables. por lo que sólo existen tres producciones: S→AB| A| B. (F. I). F). Comenzamos viendo la construcción inductiva de los pares (A. E). Si la gramática G1 se construye a partir de G mediante la construcción anterior para eliminar las producciones-ε. estos diez pares representan todas las derivaciones que no usan nada más que producciones unitarias. 7.. no podemos elegir que todos los símbolos estén ausentes. Considere la gramática S→AB. 3. Estas cuatro opciones dan las producciones: A→aAA| aA| aA| a. Las dos opciones intermedias generan la misma producción. Es decir. 2. estas tres variables son anulables. F) y la producción F→I generan el par unitario (F. A y B son directamente anulables porque tienen producciones con ε como cuerpo. El caso base nos proporciona los pares unitarios (E. ya que el símbolo no anulable a estará presente en cualquier caso. ninguna de las cuatro opciones es anulable. A→α. A→aAA| aA| a. es decir. F) y la producción F→I generan el par unitario (E. Por tanto. Las dos producciones-ε de G no generan nada para G1. Entonces.caso en que todos los Xi están ausentes. T) y la producción T→F generan el par unitario (E. utilizando sólo * Una vez que hayamos determinado dichos pares. De hecho. (A.9. Luego (A.10. (F. 4. por lo que existen cuatro formas en las que podemos elegir que A y B estén presentes o ausentes de forma independiente. podemos reemplazar cualquier secuencia de pasos de derivación en la que A ⇒ B1 ⇒ B2 ⇒ . 6. Base. (T. Por tanto. En este caso. Considere la gramática de la figura. F).8. la gramática final G1 sólo tendrá tres producciones para A. (T. porque la producción S→AB tiene un cuerpo que consta sólo de símbolos anulables.4 Eliminación de las producciones unitarias Una producción unitaria es una producción de la forma A→B. Por tanto. A ⇒ B . T). Teorema 7.{ε}. por ejemplo. (E. Suponga que hemos determinado que (A. A→aAA| ε. ⇒ Bn ⇒ α por una producción que utilice directamente la producción no unitaria Bn→α a partir de A. Ejemplo 7. determinamos los símbolos anulables. A ⇒ B empleando * Paso Inductivo. Observe también que si una producción de la forma A→ε existe en P. I). Ejemplo 7. Ahora construimos las producciones de la gramática G1. para crear una gramática no ambigua a partir de otra. I). determinamos que S es anulable. A) es un par unitario para cualquier variable A. No pueden inferirse más pares. * 3 . por lo que de nuevo existen cuatro opciones de presencia o ausencia. C) es un par unitario.1. A continuación consideramos la producción A→aAA. 5. la producción B proporciona para G1: B→bBB| bB| b. Estas producciones pueden resultar útiles. La técnica que está garantizada para funcionar implica determinar en primer lugar todos aquellos pares de variables A y B tales que una secuencia de producciones unitarias. En primer lugar. B→bBB| ε. B) tales que sólo producciones unitarias. G1 está constituido por las siguientes producciones: S→AB| A| B. podemos hacer las siguientes inferencias: 1. A ⇒ A en cero pasos. Concluimos este estudio sobre la eliminación de las producciones-ε demostrando que la construcción dada anteriormente no cambia el lenguaje. T). (E. donde C es una variable. excepto porque ε ya no está presente si es que existía en el lenguaje de G. Denominamos a este tipo de pares par unitario. ya que no importa qué A eliminemos si decidimos eliminar una de ellas. En primer lugar.. consideramos S→AB. I).

P1. de esa forma. aunque genera el mismo conjunto de expresiones que la gramática original. 3. 7. Una gramática así se dice que está en la forma normal de Chomsky. o 2. P. hacemos lo siguiente. en el que se llevó a cabo el paso (l) de la construcción anterior. B y C son variables. ni producciones unitarias ni símbolos inútiles. Si la gramática G1 se construye a partir de la gramática G mediante el algoritmo descrito anteriormente para eliminar las producciones unitarias. en el que hemos creado el nuevo conjunto de producciones utilizando el primer miembro de un par como la cabeza y todos los cuerpos no unitarios del segundo miembro del par como los cuerpos de la producción. donde B→α es una producción no unitaria de P. 4 .1. S). por ejemplo A.13. El algoritmo anterior determina exactamente los pares unitarios para una GIC G. entonces L(G1) = L(G). partimos de una gramática que no contenga producciones- ε. La figura resume el paso (2) del algoritmo. T.5 Forma normal de Chomsky Completamos el estudio sobre las simplificaciones gramaticales demostrando que todo LIC no vacío sin ε tiene una gramática G en la que todas las producciones tienen una de las dos formas siguientes: l.10. Teorema 7. G no contiene símbolos inútiles. teniendo cada una de ellas un cuerpo formado sólo por dos variables.11. Eliminar los símbolos inútiles. A→BC. Además. añadimos a P1 todas las producciones A→α. 2. Continuamos con el ejemplo 7. 2. A continuación utilizamos dichos pares para eliminar las producciones unitarias de una gramática y demostrar que los lenguajes de ambas gramáticas son el mismo. Teorema 7.12. Teorema 7. P1 contiene todas las producciones no unitarias de P. ni producciones-ε. Eliminar las producciones unitarias. ni producciones unitarias ni símbolos inútiles. creamos una nueva variable. Eliminar las producciones-ε. ni producciones unitarias hay que realizar las siguientes simplificaciones. donde A. En este punto. en el orden indicado: l. no tiene ninguna producción unitaria. donde A es una variable y a es un símbolo terminal. Nuestras tareas son entonces: a) Conseguir que todos los cuerpos de longitud 2 o superior estén formados sólo por variables. Ejemplo 7. Esta variable sólo tiene una producción. toda producción tendrá un cuerpo formado por un sólo símbolo terminal o por al menos dos variables y ningún símbolo terminal. Toda producción de dicha gramática es de la forma A→a. construimos la GIC G1 = (V. Si G es una GIC que genera un lenguaje que contiene al menos una cadena distinta de ε. Para expresar una gramática en la forma normal de Chomsky. Determinamos todos los pares unitarios de G. entonces existe otra GIC G1 tal que L(G1) = L(G) .14. Observe que A = B es posible. b) Descomponer los cuerpos de longitud 3 o superior en una cascada de producciones. S): l. Dada una GIC G = (V. A→a. Si Deseamos convertir cualquier GIC G en una GIC equivalente que no emplee ningún símbolo inútil. Para cada par unitario (A. o FNC. A→a. B). y G1 no tiene producciones-ε. La construcción para (a) es la siguiente: para todo símbolo a que aparezca en un cuerpo de longitud 2 o superior.{ε}. Ahora empleamos A en lugar de a en cualquier lugar que aparezca esta última dentro de un cuerpo de longitud 2 o superior. La gramática resultante. El paso final consiste en eliminar las producciones unitarias de la gramática de la figura anterior. Para eliminar las producciones unitarias. T. que es una forma permitida por la FNC.Existe una demostración sencilla de que el algoritmo propuesto proporciona todos los pares que deseamos. o tiene un cuerpo de longitud 2 o superior.

Si G es una GIC cuyo lenguaje consta de al menos una cadena distinta de ε. b. L→(. Por tanto. O→1. establece que en cualquier cadena lo suficientemente larga de un LIC. T→LER y F→LER por E→L C3.…. Si la longitud del camino más largo es n. C2. P→+. observe que existen ocho símbolos terminales. Ck-3→Bk-2Ck-2. Ahora todas las producciones están en la forma normal de Chomsky excepto aquellas cuyos cuerpos tienen longitud 3: EPT. Es decir. se muestra en la figura. *. en un grupo de producciones con dos variables en cada cuerpo. sujeta a las siguientes condiciones: l. introducimos la nueva variable C1. y la cadena resultante pertenecerá al lenguaje. tenemos que introducir ocho nuevas variables. conocido como "lema de bombeo para lenguajes independientes del contexto". que está en la forma normal de Chomsky. para cualquier entero i.2 El lema de bombeo para lenguajes independientes del contexto El teorema. la parte central no es demasiado larga. Suponga que tenemos un árbol de derivación de la gramática en forma normal de Chomsky G = (V. es posible encontrar a los sumo dos subcadenas cortas y muy próximas que pueden "bombearse" en tándem. son reemplazadas por E→T C2. Las dos producciones que utilizan este cuerpo. (. B→b. +. Ck-2→Bk-1 Bk Ejemplo 7. entonces podemos escribir z = uvwxy. 7. TMF y LER.18.12 en su FNC.{ε}. y ocho producciones en las que la nueva variable es reemplazada por el símbolo terminal. Introducimos k-2 nuevas variables. Teorema 7. C1.Para el paso (b). Entonces existe una constante n tal que si z es cualquier cadena de L tal que |z| ≥ n.2. S) y que el resultado del árbol es una cadena terminal w. 7. Para TMF introducimos la nueva variable C2. Algunos de estos cuerpos aparecen en más de una producción. 7. Ck-2. y reemplazamos la producción E→EPT por E→EC1 y C1→PT. (Lema de bombeo para los lenguajes independientes del contexto). C1→B2C2. 0. Para EPT. obtenemos la gramática mostrada en la figura. tenemos que descomponer dichas producciones A→B1B2…Bk para k ≥3. podemos repetir ambas cadenas i veces. Vamos a expresar la gramática del ejemplo 7. 1. E→TMF y T→TMF. Estos árboles tienen propiedades interesantes y aquí vamos a aprovechar una de ellas. R→) Si introducimos estas producciones y reemplazamos cada uno de los símbolos terminales de un cuerpo formado por más de un símbolo terminal por la variable correspondiente.16. E→LER. La gramática final. F→L C3 y C3→ER. M→*.15.1 El tamaño de los árboles de derivación Una de las aplicaciones de la FNC es transformar los árboles de derivación en árboles binarios. entonces |w| ≤ 2n-1. vx ≠ ε. Teorema 7. T→L C3.2 Enunciado del lema de bombeo Teorema 7. a. La producción original se reemplaza por las k-1 producciones: A→B1C1. esta condición establece que al menos una de las cadenas que se van a bombear no tiene que ser vacía. Para la parte (a). Puesto que v y x son las partes que se van a "bombear". P. Utilizando las iniciales obvias como las nuevas variables.…. pero podemos tratarlos introduciendo una variable adicional en cada uno. Z→0. y). entonces existe una gramática G1 en la forma normal de Chomsky. introducimos: A→a. |vwx| ≤ n. tal que L(G1) = L(G) . Sea L un LIC.2.17. Es decir. T→TC2 y C2→MF. cada uno de los cuales aparece en un cuerpo que no está formado por un único símbolo terminal. 2. Para LER introducimos la nueva variable C3 y reemplazamos las tres producciones que utiliza. T. 5 .

Entonces existe un entero n que nos viene determinado por el lema de bombeo. y como | vwx| ≤ n. Ejemplo 7. podemos descomponer z = uvwxy. 1}*}. si las cadenas se eligen de un alfabeto de más de un símbolo Ejemplo 7.24.an es una cadena de Σ*. L consta de cadenas que se repiten.3 Propiedades de clausura de los lenguajes independientes del contexto Ahora vamos a abordar algunas de las operaciones sobre los lenguajes independientes del contexto que está garantizado que generan un LIC. 0101.…. al bombear con i ≠ 1. Teorema 7. la intersección o la diferencia de un LIC y un lenguaje regular siempre es un LIC. Otra cosa que los LIC no pueden hacer es emparejar dos pares de números iguales de símbolos. pertenece a la primera w. Estos lenguajes que elegimos pueden emplear cualquier alfabeto. Muchas se parecen a la de los lenguajes regulares. Precisamos esta idea en el siguiente ejemplo.3 Aplicaciones del lema de bombeo para los LlC El primer ejemplo demuestra que. y s es una sustitución sobre Σ tal que s(a) es un LIC para cada a de Σ. entonces las dos cadenas dejarían de ser iguales. Si L es independiente del contexto. dejará de cumplirse la condición de igualdad de número de símbolos entre 0s y 2s o entre 1s y 3s. Esta elección de lenguajes define una función s (una sustitución) sobre Σ. sea n la constante para L y elegimos z = 0n1n2n3n. una cadena w dejaría de ser igual a la otra. Esta cadena es la cadena 0n1n repetida. con lo que la cadena dejaría de pertenecer al lenguaje. A diferencia de los lenguajes regulares. Teorema 7. Descomponemos z en uvwxy. Sea L el lenguaje {0m1m2m | m ≥ 1}. Si está en un solo símbolo y bombeamos i veces.1 Sustituciones Sea Σ un alfabeto y supongamos que para todo símbolo a de Σ. y nos referiremos a La como s(a) para cada símbolo a. los LIC no son cerrados para la intersección y la diferencia. Para todo i ≥ 0. por ejemplo. entonces sea n su constante del lema de bombeo.3. para i = 1. Siguiendo el patrón de los ejemplos anteriores. 012.2. podrá contener como máximos dos tipos de símbolos del alfabeto. Si está formada por 1s de la primera y 0s de la segunda. si está en dos símbolos adyacentes. uviwxiy pertenece a L.. Sea L el lenguaje {0i1j2i3j | i ≥ 1 y j ≥ 1}. las dos cadenas v y x pueden "bombearse" cualquier número de veces. 7. no pueden emparejar tres de esos grupos. tal que |vwx|≤ n y vx ≠ ε. el número de apariciones del tercer símbolo que se quedó fuera de vwx será distinto a los otros dos.. etc. Podemos extender la definición de s para aplicarla a lenguajes: s(L) es la unión de s(w) para todas las cadenas w de L.23.3. con la condición de que los pares se entrelacen. Sin embargo. Si L es independiente del contexto. Si pertenece a una única w y bombeamos con i ≠ 1. otras no. Si L es un lenguaje independiente del contexto sobre el alfabeto Σ.3. Es decir.21. Es decir. Entonces en el momento que se bombeen v y x en un número diferente a uno. ya que para contener los 3 tendría que tener longitud mayor que n. por lo que z pertenece a L. entonces s(w) es el lenguaje de todas las cadenas x1x2…xn tal que la cadena xi pertenece al lenguaje s(ai). entonces s(L) es un LIC. incluyendo cero. que podemos demostrar para los LIC utilizando el Teorema 7. aunque los lenguajes independientes del contexto pueden emparejar dos grupos de símbolos para establecer si son iguales o no. 7. Los lenguajes independientes del contexto son cerrados para las siguientes operaciones: 6 . s(w) es la concatenación de los lenguajes s(a1)s(a2)… s(an). y la cadena resultante pertenecerá a L. De nuevo vwx o está contenida en la subcadena de un símbolo o está entre dos símbolos adyacentes. Vamos a demostrar que los LIC no pueden emparejar dos cadenas de longitud arbitraria. Ejemplo 7.2.19. Considere la cadena z = 0n1n0n1n.n o dicho de otra manera.23. tales como ε. Sea L = {ww | w pertenece a {0. 001122. Podemos escribir z = uvwxy sujeta a las restricciones habituales |vwx|≤ n y vx ≠ ε. no necesariamente Σ y no necesariamente el mismo para todos.20. Elegimos z = 0n1n2n. Entonces vwx o está contenida en la subcadena de un símbolo o está entre dos símbolos adyacentes.2 Aplicaciones del teorema de sustitución Hay varias propiedades de clausura. el número de 1s de la primera w sería distinto del número de 1s de la segunda w. Por lo tanto al bombear en un número distinto a uno. Si w = ala2. a la segunda w o está formada por 1s de la primera y 0s de la segunda. 7.00100010 o 110110. L consta de todas las cadenas de 0+1+2+ con un cantidad igual de cada símbolo. Es decir. 7. con i ≠ 1. y lo mismo pasaría con los 0s. Supongamos que L fuera independiente del contexto. elegimos un lenguaje La.

Supongamos que L es un lenguaje independiente del contexto del alfabeto Σ y h es un homomorfismo sobre Σ.3 Reflexión Los lenguajes independientes del contexto también son cerrados para la reflexión. L1 . donde L es el lenguaje {1 . L – R es un lenguaje independiente del contexto. ¿Es inherentemente ambiguo un LIC dado? 3. Entonces L1UL2 es el lenguaje s(L). donde Σ es el alfabeto del lenguaje? 7. Teorema 7. L1 y L2. donde L es el lenguaje {12} y s es la misma sustitución que en el caso (1). 3. L2 = {0i1n2n | n ≥ 1. 7. 2. Si L es un lenguaje independiente del contexto. ¿Está vacía la intersección de dos LIC? 4.25. Una variable puede eliminarse de una GIC a menos que genere alguna cadena de terminales y que también aparezca en al menos una cadena generada a partir del símbolo inicial. pero sí son cerrados para la intersección con un lenguaje regular.3.L2 no es necesariamente un lenguaje independiente del contexto. Las siguientes afirmaciones son verdaderas para los lenguajes independientes del contexto L. Si L1 es un lenguaje independiente del contexto. sabemos que ocurre lo mismo para las operaciones de complementación y diferencia de conjuntos.27. 3. Las siguientes cuestiones son indecidibles: l. L es el lenguaje {1}* y s es la sustitución s(l) = L1. Clausura y clausura positiva. si L es el lenguaje {1}+. Teorema 7. i ≥ 1}. 4. Puesto que sabemos que los LIC no son cerrados para la intersección. L3 = L1 ∩ L2 = {0n1n2n | n ≥ 1}. para todo a en Σ.30.3.5 Resumen del Capítulo 7 + Eliminación de símbolos inútiles. 1. entonces L ∩ R es un lenguaje independiente del contexto.29. Para eliminar correctamente tales símbolos inútiles. h(L) = s(L). primero hay que comprobar si una variable genera una cadena de símbolos 7 .2} y s es la sustitución definida por s(1) = L1 y s(2) = L2. Concatenación.1. s(a) = {h(a)}. ¿Son dos LIC iguales? 5. Si L es un lenguaje independiente del contexto y R es un lenguaje regular. Entonces L1L2 es el lenguaje s(L). De forma similar. 7. entonces L1+ = s(L).4 Intersección con un lenguaje regular Los LIC no son cerrados para la intersección. Sea L un lenguaje independiente del contexto y h un homomorfismo. Homomorfismo. ¿Es un LIC dado igual a Σ*. 7. Es decir. L1 y L2 son LIC.4 Propiedades de decisión de los LlC Una serie de cuestiones fáciles de formular acerca de las gramáticas y los LIC no tienen algoritmo y se conocen como "problemas indecidibles".5 Homomorfismo inverso Si h es un homomorfismo y L es cualquier lenguaje. Teorema 7. mientras que L3 no lo es. entonces LR también lo es. 2. sean L1 y L2 lenguajes independientes del contexto. Ejemplo: L1 = {0n1n2i | n ≥ 1. entonces h-1(L) es el conjunto de cadenas w tal que h(w) pertenece a L. y un lenguaje regular R. ¿Es ambigua una determinada GIC G? 2. De nuevo. i ≥ 1}. Unión. Entonces. entonces L1* = s(L).3. Teorema 7. Luego h-1(L) es un lenguaje independiente del contexto. 7. L no es necesariamente un lenguaje independiente del contexto. Sean L1 y L2 lenguajes independientes del contexto. Sea s la sustitución que reemplaza cada símbolo a en Σ por el lenguaje que consta de una sola cadena que es h(a).

la concatenación. podemos encontrar otra GIC que genere el mismo lenguaje. una subcadena corta tal que los dos extremos de dicha subcadena puedan ser "bombeados" en tándem. y que no tenga producciones-ε (aquellas con ε como cuerpo) ni producciones unitarias (aquellas con una sola variable en el cuerpo). aunque la intersección de un LIC con un lenguaje regular siempre es un lenguaje independiente del contexto. cada uno de ellos puede repetirse el número de veces que se desee. la unión. podemos encontrar otra GIC que genere el mismo lenguaje. Dada una GIC. + Eliminación de producciones-ε y unitarias. Dada una GIC que genera al menos una cadena no vacía. es decir. la reflexión y el homomorfismo inverso. + Forma normal de Chomsky. En cualquier LIC. y que está en la forma normal de Chomsky: no existen símbolos inútiles y todo cuerpo de producción consta de dos variables o de un símbolo terminal. la clausura (asterisco). y eliminar aquéllas que no lo hacen junto con todas sus producciones. es posible encontrar. Los LIC son cerrados para la sustitución.terminales. Las dos cadenas que van a bombearse no pueden ser ambas ε. excepto la cadena ε. excepto la cadena ε. Sólo entonces eliminaremos las variables que no son derivables a partir del símbolo inicial. + El lema de bombeo. + Operaciones que preservan la independencia del contexto. 8 . dentro de cualquier cadena lo suficientemente larga del lenguaje. Los LIC no son cerrados para la intersección y la complementación.