Académique Documents
Professionnel Documents
Culture Documents
( x. x + 2) 3
3+2
son equivalentes.
No todas las expresiones lambda pueden ser reducidas a un "valor" definido. Considrese
la siguiente:
( x. x x) ( x. x x)
( x. x x x) ( x. x x x)
tratar de reducir estas expresiones slo lleva a encontrase con la misma expresin o algo
ms complejo. ( x. x x) es conocido como combinador; (( x. x x) ( x. x x)) se
conoce como , (( x. x x x) ( x. x x x)) como 2, etc.
DEFINICIN FORMAL
Sintaxis
En el clculo lambda, una expresin o trmino se define recursivamente a travs de las
siguientes reglas de formacin:
1. Toda variable es un trmino: x, y, z, u, v, w, x1, x2, y9,...
2. Si t es un trmino y x es una variable, entonces (x.t) es un trmino (llamado
una abstraccin lambda).
3. Si t y s son trminos, entonces (ts) es un trmino (llamado una aplicacin lambda).
4. Nada ms es un trmino.
Segn estas reglas de formacin, las siguientes cadenas de caracteres son trminos:
x
(xy)
(((xz)y)x)
(x.x)
((x.x)y)
(z.(x.y))
((x(z.z))z)
Por convencin se suelen omitir los parntesis externos, ya que no cumplen ninguna
funcin de desambiguacin. Por ejemplo se escribe (z.z)z en vez de ((z.z)z), y se
escribe x(y(zx)) en vez de (x(y(zx))). Adems se suele adoptar la convencin de que la
aplicacin de funciones es asociativa hacia la izquierda. Esto quiere decir, por ejemplo,
que xyzz debe
entenderse
como (((xy)z)z),
y
que (z.z)yzx debe
entenderse
como((((z.z)y)z)x).
Las primeras dos reglas generan funciones, mientras que la ltima describe la aplicacin
de una funcin a un argumento. Una abstraccin lambda x.trepresenta una funcin
annima que toma un nico argumento, y se dice que el signo liga la variable x en el
trmino t. En cambio, una aplicacin lambda ts representa la aplicacin de un
argumento s a una funcin t. Por ejemplo, x.x representa la Funcin Identidad x x,
y (x.x)y representa la funcin identidad aplicada a y<tt>. Luego, <tt>x.y representa la
funcin constante x y, que develve y sin importar qu argumento se le d.
Las expresiones lambda no son muy interesantes por s mismas. Lo que las hace
interesantes son las muchas nociones de equivalencia y reduccin que pueden ser
definidas sobre ellas.
-CONVERSIN
La regla de alfa-conversin fue pensada para expresar la idea siguiente: los nombres de
las variables ligadas no son importantes. Por ejemplo x.x y y.y son la misma funcin.
Sin embargo, esta regla no es tan simple como parece a primera vista. Hay algunas
restricciones que hay que cumplir antes de cambiar el nombre de una variable por otra.
Por ejemplo, si reemplazamos x por y en x.y.x, obtenemos y.y.y, que claramente, no
es la misma funcin. Este fenmemo se conoce como captura de variables.
La regla de alfa-conversin establece que si V y W son variables, E es una expresin
lambda, y
E[V := W]
representa la expresin E con todas las ocurrencias libres de V en E reemplazadas
con W, entonces
V. E == W. E[V := W]
si W no est libre en E y W no est ligada a un donde se haya reemplazado a V. Esta
regla nos dice, por ejemplo, que x. ( x. x) x es equivalente a y. ( x. x) y.
En un ejemplo de otro tipo, se ve que
for (int i = 0; i < max; i++) { proc (i); }
es equivalente a
for (int j = 0; j < max; j++) { proc (j); }
-REDUCCIN
La regla de beta reduccin expresa la idea de la aplicacin funcional. Enuncia que
(( V. E) E) == E[V := E]
si todas las ocurrencias de E estn libres en E[V := E].
Una expresin de la forma (( V. E) E) es llamada un beta redex. Una lambda expresin
que no admite ninguna beta reduccin se dice que est en su forma normal. No toda
expresin lambda tiene forma normal, pero si existe, es nica. Ms an, existe un
algoritmo para computar la formal normal: la reduccin de orden normal. La ejecucin de
este algoritmo termina si y slo si la expresin lambda tiene forma normal. El Teorema de
Church-Rosser nos dice que dos expresiones reducen a una misma si y slo si son
equivalentes (salvo por el nombre de sus variables ligadas)
-CONVERSIN
Es la tercer regla, eta conversin, que podra ser aadida a las dos anteriores para formar
una nueva relacin de equivalencia. La eta conversin expresa la idea de extensionalidad,
que en este contexto implica que dos funciones son la misma si y solo si dan el mismo
resultado
para
cualquier
argumento.
La
eta
conversin
convierte
entre x. f x y f siempre que x no aparezca sola en f. Esto puede ser entendido como
equivalente a la extensionalidad as:
Si f y g son extensionalmente equivalentes, es decir, si f a== g a para cualquier
expresin lambda a entonces, en particular tomando a como una variable x que no
aparece sola en f ni en g, tenemos que f x == g x y por tanto x. f x == x. g x, y as
por eta conversin f == g. Entonces, si aceptamos la eta conversin como vlida, resulta
que la extensionalidad es vlida.
Inversamente, si aceptamos la extensionalidad como vlida entonces, dado que por beta
reduccin de todo y tenemos que ( x. f x) y == f y, resulta que x. f x == f; es decir,
descubrimos que la eta conversin es vlida.
APLICACIN PRCTICA
Caractersticas:
-Escrito en html5
-Diseo adaptable
-Utiliza java script
-Se hace uso de la librera lambda-min.js escrita por el profesor
Carl Burch disponible en: http://www.cburch.com/
Esta aplicacin resuelve ejercicios del tipo numrico simplificando las expresiones para
obtener el resultado buscado
Funcionamiento:
Si por ejemplo se desea calcular la expresin:
(y.4 y) ((z.z + 2 z) 5)
Esta debe escribirse de la siguiente manera:
If
dado tres valores de los cuales el primero es verdadero o falso , devuelva el segundo
valor si la primera es verdadera y la tercera si la primera es falsa
Conclusiones
El clculo lambda es computacionalmente equivalente en poder a muchos otros modelos
plausibles para el cmputo (mquinas de Turing includas); es decir, cualquier clculo que
se pueda lograr en cualesquiera de estos otros modelos se puede expresar en el clculo
lambda y viceversa. Segn la tesis de Church-Turing, ambos modelos pueden expresar
cualquier cmputo posible.
Quizs parezca sorprendente que el clculo lambda pueda representar cualquier cmputo
concebible usando solamente las nociones simples de abstraccin funcional y aplicacin
basado en la substitucin textual simple de trminos por variables. Pero an ms notable
es que incluso la abstraccin no es requerible: la lgica combinatoria es un modelo del
cmputo equivalente al clculo lambda, pero sin la abstraccin.
Bibliografia
-http://www.ecured.cu/index.php/C%C3%A1lculo_lambda#Conclusiones
-http://www.cs.buap.mx/~mtovar/doc/FLP14/ejerCalculolambda.pdf
- http://www.cburch.com/