Lenguajes de programaci´
on 2015-1
Bolet´ın de ejercicios 1
Favio E. Miranda Perea C. Mois´es V´azquez Reyes
25 de agosto de 2014
1.
Definiciones recursivas e inductivas y gram´
aticas formales
1. Dado el alfabeto Σ ={a, b, c}, da un gram´atica que genere el lenguaje de cadenas pal´ındromo. Deriva una cadena de longitud 5 y una de longitud 4 usado ´arboles de derivaci´on.
2. Sea Σ un alfabeto cualquiera con |Σ| = n. Define recursivamente una funci´on F(m) que devuelva el n´umero de cadenas pal´ındromo de longitudm contenidas en el lenguaje generado por Σ. Sugerencia: defina primero la gram´atica de pal´ındromos y busque la definici´on deF en base a ´esta.
3. Da la definici´on recursiva de la sucesi´on de Fibonacci 0,1,1,2,3,5,8, . . . , Fn, Fn+1, . . . y
de-muestra que F4n es divisible entre 3 para n≥1.
4. Da la definici´on inductiva para los n´umeros naturales: 0,s(n).
5. Da la definici´on inductiva para expresiones l´ogicas: p,true,false,¬A,A∧B,A∨B,A→B .
6. Da la definici´on inductiva para listas: [ ], (a:`).
Define recursivamente las siguientes funciones para listas.
a) concat(xs, ys): Concatenaci´on de listas. b) long(xs): N´umero de elementos de una lista. c) rev(xs): Reversa de una lista.
Demuestra con inducci´on estructural las siguientes propiedades:
a) xst(ystzs) = (xstys)tzs b) long(xstxy) =long(xs) +long(ys) c) long(rev(xs)) =long(xs)
d) rev(xstys) =rev(ys)trev(xs) e) rev(rev(xs)) =xs
7. Da la definici´on inductiva para ´arboles binarios: void, tree(T1, c, T2). Define recursivamente
a) nn: N´umero de nodos.
b) ht: Altura de un ´arbol binario.
Demuestra con inducci´on estructural las siguientes propiedades:
a) Cualquier ´arbol binarioT connnodos contiene exactamenten+ 1 sub´arboles vac´ıos. b) Si T es un ´arbol binario con altura n, entonces tiene a lo m´as 2n−1 nodos. Es decir,
nn(T)≤2n−1
c) Demuestra que el m´ınimo n´umero de nodos en ´arbol
8. La siguiente definici´on representa ´arboles binarios completos cuyos ´unicos nodos etiquetados son las hojas.
SeaA un conjunto de etiquetas, si a∈A, entonceshoja(a) es un ´arbol.
Si t1, t2 son ´arboles, entonces ltree(t1, t2) es un ´arbol.
Son todos.
a) Formula la definicion inductiva para los ´arboles binarios completos.
b) Define las funciones recursivas nh que calcula el n´umero de hojas y nni que calcula el n´umero de nodos internos.
c) tomando los enunciados que definiste ena utiliza inducci´on estructural para demostrar que:
nh(t) =nni(t) + 1
9. De acuerdo a las definiciones de la nota de clase 3, demostrar:
a) Lema 2 Sis M entoncess L. b) Lema 3 Sis L entoncess M. c) Lema 7 Sihk, si pilaentonces ((. . .(
| {z }
k
s M.
10. A continuaci´on se definen las gram´aticasG1yG2. Ambas gram´aticas son equivalentes aunque
G1 es ambigua mientras queG2 no lo es.
G1::=G1G1 |a|b G2::=A|B
A::=a|a G2
B ::=b|b G2
a) Dar una definici´on inductiva para ambas gram´aticas, mediante juiciosw G1 yw G2.
11. Considere la siguiente gram´aticaG:
ctipo ::= int|listctipo|(tipo)
tipo ::= ctipo|tipo→tipo
Esta gram´atica genera la familia de tipos
int,list(int),list(list(int)), . . . ,int→int,int→int→int,list(int)→list(int). . .
Es claro que G es ambigua, pues no modela la asociatividad del operador →. Esto puede arreglarse mediante la siguiente gra´aticaG0:
ctipo0 ::= int|listctipo0|(tipo0)
tipo0 ::= ctipo0 |ctipo0→tipo0
a) Reescriba ambas gram´aticas G, G0 como definiciones inductivas mediante juicios de la forma tctipo, etc.
b) Muestre la equivalencia de ambas gram´aticas mostrando que ttipo syss ttipo0
12. Considere las siguientes definiciones recursivas deL? para un lenguaje dado L.
Definici´on a)
a) ε∈L?.
b) Six∈L? yz∈L, entoncesxz∈L?. Definici´on b)
a) ε∈L?
b) Six∈L, entoncesx∈L?. c) Six, z ∈L?, entoncesxz ∈L?.
a) Dar la definici´on inductiva con juicios para ambas opciones.
b) Mostrar que ambas opciones son equivalentes a partir de las definiciones inductivas. c) Dar dos reglas admisibles y dos derivables (distintas de las admisibles) para cada
defini-ci´on (en total se piden 8 reglas). Justifique sus respuestas.
13. Una cadena s∈ {0,1}? es de tipo cadsi y s´olo si empieza con 1 y no tiene dos ceros
consecu-tivos.
a) Definir un juicio paracad.
14. Considere la siguiente gram´atica:
e::= 0|2|e+e|e∗e
donde + es la suma y ∗ la multiplicaci´on convencional.
a) Dar una definici´on inductiva de la gram´aticaemediante juiciosw e.
b) Demuestre que todos los valores derivados de e son n´umeros pares, usando inducci´on estructural.
15. Considere las siguientes definiciones de la cerradura transitiva de una relaci´on binaria R ⊆ A×Asobre un conjunto base A.
Definici´on directa. La cerradura transitiva de R, denotada R+, es la relaci´on transitiva mas peque˜na, respecto a la inclusi´on ⊆, que contiene a R.
Definici´on recursiva. La cerradura transitiva de R, se define comoR+=S
i∈NRi, donde
R0 =R, Ri+1=Ri∪ {(s, u)|para algunat,(s, t)∈Ri y (t, u)∈Ri}
Es decir, construimos Ri+1 agregando a Ri todos los pares que pueden obtenerse
reali-zando “un paso de transitividad” de todos los pares que ya est´an enRi.
a) Transformar la definici´on recursiva de R+ a una definici´on inductiva con juicios. b) Usar la definici´on para mostrar que R+ cumple con la definici´on directa.
16. Considere las siguientes definiciones recursivas deL? para un lenguaje dado L.
Definici´on a)
a) ε∈L?.
b) Six∈L? yz∈L, entoncesxz∈L?. Definici´on b)
a) ε∈L?
b) Six∈L, entoncesx∈L?. c) Six, z ∈L?, entoncesxz ∈L?.
a) Dar la definici´on inductiva con juicios para ambas opciones.
b) Mostrar que ambas opciones son equivalentes a partir de las definiciones inductivas. c) Dar dos reglas admisibles y dos derivables (distintas de las admisibles) para cada
defini-ci´on (en total se piden 8 reglas). Justifique sus respuestas.
17. Una cadena s∈ {0,1}? es de tipo cadsi y s´olo si empieza con 1 y no tiene dos ceros
consecu-tivos.
a) Definir un juicio paracad.
a) Dar una definici´on inductiva de la gram´aticaemediante juiciosw e.
b) Demuestre que todos los valores derivados de e son n´umeros pares, usando inducci´on estructural.
18. Comprueba si las siguientes expresiones son correctas por medio de an´alisis sint´actico (Hallar una expresi´on ttal que se cumple sE←→t asa).
a) (10 + 2)E b) 12 +v∗6E c) (x)∗15 E d) (7 + 5∗2)∗13E
19. Demuestra las siguientes propiedades de correctud para el analizador sint´actico:
a) Si sD←→k nat entoncessDyk nat. b) Si sN←→k natentoncessN yknat. c) Si sE←→t asaentoncessE ytasa. d) Si sT←→ tasa entoncessTyt asa. e) Si sF←→ tasa entoncessF ytasa.
20. Realiza las siguientes sustituciones y utilizando α-equivalencia determina su resultado.
a) (letm= 15inm∗n∗3end)[n:= 4∗z] b) (lety=z+ 2inx+ 2∗y+zend)[x:=y+z]
c) (letw=u∗8in(letv= 5inw+y+xend)end)[x:=u+v] d) (lety=x+vin(letz=xinx∗y∗zend)end)[x:=y∗z] e) (lety=z∗3inx+y+ 11end)[x:=y∗z∗23]
21. De acuerdo a las definiciones 3, 4 y 5 de la nota de clase 4. Demuestre por medio de inducci´on las siguientes propiedades:
a) Si x /∈F V(e) entonces e[x:=e0] =e b) (x.e)[x:=t] =x.e
c) x.e≡α z.e[x:=z].
22. En el lenguaje de programaci´onZoo, los nombres para variables deben empezar con el caracter
’V’ seguido por una cadena cualquiera de caracteres ’o’ o ’z’. Defina un juicioozvtal quesozv se cumpla si y s´olo sises un nombre v´alido de variable en Zoo. DeriveV ozoozvusando sus
reglas.
23. Chon Hacker desea agregar al lenguaje EAB el operador where de declaraci´on de variables locales para lo cual propone la siguiente sintaxis concreta:
e1 where x=e2
Por ejemplo la expresi´one=def (suc(x+2)∗x)where x=pred(4) se evaluar´ıa a 18. Realizar
a) Definir el juiciosE para las expresioneswhere
b) Definir el alcance de la variable de una expresi´on where
c) Definir la representaci´on de las expresiones where en la sint´axis abstracta de orden su-perior y el juicio talacorrespondiente.
d) Definir el juicio de an´alisis sint´actico (sE↔tala) para las expresiones where 24. Realiza lo que se pide para la expresi´on
e=def lety=x+ 3in(letz=y+ 3inx+yend) ∗ 2 +xend
a) Encuentra la representaci´on en sintaxis abstracta de orden superior dee. b) Realiza un an´alisis sint´actico deea partir de las reglassE↔tala.
c) ¿Cu´al es la expresi´on resultante al efectuar la sustituci´on e[x:= 6∗z+y]? Mostrar paso a paso su respuesta.
25. A continuaci´on se definen las gram´aticasG1yG2para expresiones aritm´eticas. Ambas gram´
ati-cas son equivalentes aunque G1 es ambigua, mientras queG2 no lo es.
G1 ::= G1+G1 | G1∗G1 | (G1) | n
G2 ::= G2+T | T
T ::= T ∗F | F F ::= (G2) | n
a) Dar una definici´on inductiva para ambas gram´aticas, mediante juiciosw G1 yw G2.
b) Mostrar por inducci´on estructural la siguiente propiedad: Sie T o e F o e G2 entoncese G1
26. En el lenguaje de programaci´onLISPuna expresi´on simb´olica o S-expresi´on es alguna de las
siguientes
Un s´ımbolo.
Una S-lista, donde una S-lista es una sucesi´on, tal vez vac´ıa, de S-expresiones, encerrada entre par´entesis.
Por ejemplo, las siguientes son cinco S-expresiones:
e, (), (e z), (b (a m)), (f (a () ) v (i o))
a) Defina a las S-expresiones mediante un juicioxSE.
b) Muestre usando su definici´on y mediante una derivaci´on formal que la siguiente es una S-expresi´on:
2.
PostFix
1. Determina el valor de los siguientes programas enPostFix:
(postfix 0 10 (swap 2 mul sub) 1 swap exec)
(postfix 0 (5 (2 mul) exec) 3 swap)
(postfix 0 (() exec) exec)
(postfix 0 2 3 1 add mul sel)
(postfix 0 2 3 1 (add) (mul) sel)
(postfix 0 2 3 1 (add) (mul) sel exec)
(postfix 0 0 (2 3 add) 4 sel exec)
(postfix 0 1 (2 3 add) 4 sel exec)
(postfix 0 (5 6 lt) (2 3 add) 4 sel exec)
2. ¿Qu´e funci´on hace el siguiente programa enPostFix?
(postfix 1 ((3 nget swap exec) (2 mul swap exec) swap) (5 sub) swap exec exec)
Escribe un programa enPostFixm´as simple que el anterior que realize el mismo c´alculo.
3. Recordemos que las secuencias ejecutables son efectivamente subrutinas que cuando son in-vocadas (por el comando exec), agregan en orden sus comandos al inicio de la secuencia de comandos en ejecuci´on. Escribe secuencias ejecutables que calculen las siguientes operaciones l´ogicas. Recordamos que 0 indica falso y todos los dem´as n´umeros indican verdadero.
not: devuelve la negaci´on de un argumento.
and: dados dos argumentos num´ericos, regresa 1 si su conjunci´on es verdadero, 0 en otro caso.
and-cortocircuito: regresa 0 si el primer argumento es falso, en otro caso regresa el segundo argumento.
Muestra la diferencia entreandyand-cortocircuitoescribiendo un programa enPostFix
con cero argumentos que tenga un resultado diferente si en lugar de usarandse usa and-cortocircuito.
4. Algunos retos, de no ser posible resolverlos argumenta por qu´e no es posible:
Sin nget, ¿ Es posible escribir un programa en PostFix que calcule el cuadrado de su
´
unico argumento de entrada?
¿ Es posible escribir un programa en PostFix que tome tres enteros y nos devuelva el
m´ınimo de los tres?
¿ Es posible escribir un programa en PostFix que calcule el factorial de su ´unico