You are on page 1of 14

PARADIGMAS DE PROGRAMACIN

2006
CALCULO LAMBDA

CALCULO LAMBDA
El clculo lambda fue desarrollado por Alonso Church en la
dcada del 30 con el objeto de dar una teora general de las
funciones.
El clculo lambda ha sido empleado como fundamento
conceptual de los lenguajes de programacin, aportando:
una sintaxis bsica
una semntica para el concepto de funcin como
proceso de transformacin de argumentos en
resultados
un medio para definir primitivas de
programacin

SINTAXIS DEL CALCULO LAMBDA


La sintaxis del Clculo Lambda ( CL ) es la siguiente:

<trmino> ::= <variable> |

O<variable> . <trmino> |
( <trmino> <trmino> )
En esta sintaxis no existe el concepto de
<nombre> o <constante>
Qu implica esto?
El formalismo no tendr primitivas, no nos permitir emplear
funciones con el concepto de mdulos abstractos.

En esta nueva sintaxis la abstraccin funcional es:

O <variable> . <trmino>

Cuerpo de la
abstraccin
funcional

Lista de
argumentos
La sintaxis propuesta utiliza la representacin de
Funciones con un slo argumento.
Una Funcin que requiera ms de un argumento se
representa de la sgte. forma:

O x1. Ox2. .... Oxn. M

CALCULO LAMBDA
Tiene por objeto explicitar el concepto que representa el
empleo de funciones como medio de transformacin de
argumentos en resultados.

A este formalismo lo denominamos CLCULO, ya que el


mismo emplear
un conjunto de axiomas, y
reglas de inferencia (de la misma forma que lo
utilizan los sistemas formales)
para representar el medio de transformacin mencionado.

REGLAS DEFINIDAS EN EL CL
De acuerdo a la sintaxis propuesta, una aplicacin
funcional tendr el siguiente formato
(M N)
la cual producir un resultado, como consecuencia de la
correspondiente regla del clculo,
R

(resultado)

La consistencia del sistema requiere que


la aplicacin funcional y el resultado
puedan ser interpretadas como
expresiones equivalentes
(M N) | R
es decir, que representan el mismo valor.

El clculo del resultado de una aplicacin funcional ser


obtenido mediante la generacin de expresiones equivalentes
por aplicacin de las reglas del clculo O que definiremos a
continuacin.
La relacin de equivalencia entre expresiones del clculo
O tendr las propiedades:
reflexividad

M=M

simetra

M=N N=M

transitividad

M=N N=P M=P

ms las siguientes, que resultan lo suficientemente intuitivas


M = N (M P) = (N P)
M = N (P M) = (P N)
M = N Ox . N = Ox . M

La regla del clculo O que permite generar expresiones que


satisfagan la relacin de equivalencia se denomina

Regla Beta
La Regla Beta establece como sustituir en el cuerpo de la
abstraccin funcional cada ocurrencia de la variable que
hace de argumento nominal por el argumento efectivo de la
aplicacin funcional correspondiente.
1
( (x) exp(2 * x + y) (4) )

La regla Beta
especifica los
pasos 1 y 2

2
argumento nominal

argumento efectivo

Esta idea es recogida por la Regla Beta expresada de la


siguiente forma

(Ox .M N) = [N/x] M

la parte derecha de la expresin se interpreta como:

el trmino que se obtiene de introducir N en lugar


de x, toda vez que x ocurre libre en M

OCURRENCIA DE UN TERMINO
Definicin. Ocurrencia de P en Q
Clausura
P ocurre en P
Induccin
Si P ocurre en M o N P ocurre en (M N)
Si P ocurre en M o P es igual a x P ocurre en Ox.M
Por ejemplo, dado en el siguiente trmino:
( (x y) Ox.(x y) )
(x y) ocurre dos veces
x ocurre tres veces
y ocurre dos veces

Los conceptos que necesitamos a continuacin son los de


ocurrencia libre y ligada de un variable.
Definicin. Una ocurrencia de la variable x en un trmino P
es ligada s y solo s, x ocurre en un subtrmino de P de la
forma Ox.M
Si se aplica esta definicin en el siguiente trmino
(Oy.(y y) Ox.(x y))
x e y ocurren ligadas ya que el trmino contiene los subtrminos
Oy.(y y) o y ocurre ligada (3 veces)
Ox.(x y) o x ocurre ligada (2 veces)

Definicin. La variable x ocurre libre en en trmino N,


solamente s:
1. N = x
2. N = Oz.M tal que x z z, y x ocurre libre en M
3. N = (P Q) donde x ocurre libre en M y/o en P
Definicin. Si x ocurre libre al menos un vez en un trmino P,
entonces x es una variable libre de P.
(Oy.(m n) y)

y ocurre libre
n ocurre libre

m ocurre libre
y es una variable libre del trmino

OCURRENCIAS DE TERMINOS,
OCURRENCIAS LIBRES Y LIGADAS DE VARIABLES

Dado el siguiente trmino del Clculo O:


((Oy.(x y) z) Ox.(x Ox.(x y)))
Tenemos que:
(x y) ocurre 2 veces
x ocurre 5 veces, 4 veces ligada y 1 vez libre
y ocurre 3 veces, 2 veces ligada y 1 libre
z ocurre una vez libre
Por lo tanto:
variables libres: x, y, z
variables ligadas: x, y

REGLA BETA: DEFINICIN DE SUSTITUCIN

[N/x] M
En el caso en que M sea la variable a sustituir, la
misma se realiza de la siguiente forma:

1-

[N/x] x :=: N

Ejemplos:
[Oy.(m n) / y] y :=: Oy.(m n)
[(m n) / t] t :=: (m n)

DEFINICIN DE SUSTITUCIN
[N/x] M
En el caso en que M sea una variable, pero diferente
de la sustituida, la misma se realiza de la siguiente
forma:

2-

[N/x] y :=: y

; yzx

Ejemplos:

[Oy.(m n) / y] l :=: l
[(m n) / t] r :=: r

DEFINICIN DE SUSTITUCIN
[N/x] M
En el caso en que M sea una aplicacin funcional, la
misma se realiza de la siguiente forma:

3-

[N/x] (P Q) :=: ([N/x]P [N/x]Q)

Ejemplos:

[Oy.(m n) / y] (y l) :=: ([Oy.(m n) / y]y [Oy.(m n) / y] l)


[x / m] (Oy.(m n) m) :=: ([x / m]Oy.(m n) [x / m]m)

DEFINICIN DE SUSTITUCIN
[N/x] M
En el caso en que M sea una abstraccin funcional, la
misma se realiza de la siguiente forma:

4-

[N/x] Ox.M :=: Ox.M

Ejemplos:

[Oy.(m n) / x] Ox.(t x) :=: Ox.(t x)


[x / m] Om.(m n) :=: Om.(m n)

DEFINICIN DE SUSTITUCIN
En el caso en que M sea una abstraccin funcional, la
misma se realiza de la siguiente forma:

5-

[N/x] Oy.M :=: Oy. [N/x]M

Siempre podra reducir as?

( (Ox. Oy. (y x) M) N)
(Oy. (y M) N)

Por regla Beta


y def. 5, 3, 2 y 1

Por regla Beta y def. 3, 1 y 2

(N M)
En particular si M :=: y y N :=: x
Por regla Beta
y def. 5, 3, 2, 1
Por regla Beta
y def. 3, 2, 1

( (Ox. Oy. (y x) y) x)

= (x y)

(Oy. (y y) x)
(x x)

x=y?
Por transitividad

En el ejemplo anterior
x e y denotan trminos
genricos

los trminos cualesquiera


del clculo lambda son
iguales Incorrecto!

El problema surge pues, al evaluar la primera aplicacin


funcional, la variable libre y que es argumento efectivo
queda ligada.
ocurrencia libre de y

Por regla Beta


Por defs.
5, 3, 2 y 1

( (Ox. Oy. (y x) y) x)
( [y / x] Oy. (y x) x)
( Oy. (y y) x)
ocurrencia ligada de y

DEFINICIN DE SUSTITUCIN
En el caso en que M sea una abstraccin funcional, la
misma se realiza de la siguiente forma:

5 - [N/x] Oy.M :=: Oy. [N/x]M


si y "no ocurre libre" en N
o
si x "no ocurre libre" en M
Ejemplos:

No ocurre libre

[On.(m n) / x] Oy.(x y) :=: Oy. [On.(m n) / x](x y)


Ocurre libre
[Om.(m x) / m] Ox. Om.(t m) :=: Ox. [Om.(m x) / m] Om.(t m)
No ocurre libre

DEFINICIN DE SUSTITUCIN
[N/x] M
En el caso en que M sea una abstraccin funcional, la
misma se realiza de la siguiente forma:
6 - [N/x] Oy.M :=: Oz. [N/x] [z/y] M
si y "ocurre libre" en N
y
si x "ocurre libre" en M
y
si z no ocurre libre" en N o M
Ejemplo:

[On.(m y) / x] Oy.(x y) :=: Oz. [On.(m y) / x] [z/y] (x y)

REDUCCION DE EXPRESIONES Y FORMA NORMAL


Con el enfoque funcional la evaluacin de una expresin se
entiende como la aplicacin de una funcin a determinados
argumentos efectivos.
En el Clculo Lambda esto se denomina REDEX.
Definicin:
Un REDEX es un trmino de la siguiente forma

(Ox . M N)
Redex 1

(Ox. (Oy.( y x) z) v)
Redex 2

Redex 1
M = (Oy.( y x) z)
N=v

Redex 2
M =( y x)
N=z

Definicin:
Una FORMA NORMAL es un trmino que no contiene
ningn REDEX
Si puede deducirse de las reglas del clculo que P :=: Q y
si Q est en forma normal, se dice que Q ES FORMA
NORMAL DE P
La forma normal de un trmino es nica
Si un trmino P puede reducirse a dos trminos M y N
entonces existe un trmino T al cual M y N pueden, a su
vez, reducirse
No todos los mtodos de reduccin garantizan encontrar
la forma normal de un trmino

ESTRATEGIAS DE REDUCCIN
Estrategia de evaluacin de ORDEN NORMAL: consiste
en reducir siempre primero el redex de ms a la izquierda
(aquel cuyo O aparece ms a la izquierda)
La estrategia de evaluacin de orden normal aplicada a
un trmino que tiene forma normal termina por
encontrarla en un nmero finito de reducciones
Estrategia de evaluacin de ORDEN APLICATIVO:
consiste en reducir primero los dos trminos del redex
antes que la aplicacin que el denota sea reducida.

Redex 1
Orden
Normal

Orden
Aplicativo

(Ox. (Oy.(y x) z) v)
Redex 2

1. Reduzco Redex 2

1. Reduzco Redex 1

[z/y] (y x) :=: (z x)

[v/x] (Oy.(y x) z):=: (Oy.(y v) z)

por reglas 3,2 y 1

por reglas 3,5,3,...


2. Reduzco Redex 2

2. Reduzco Redex 1

(Ox.( z x) v)

[z/y] (y v):=: (z v)
por reglas 3,2 y 1

por reglas
3,2 y 1

[v/x] (z x):=: (z v)

En este ejemplo se llega a la forma normal


con ambas estrategias

Redex 1

(Ou.v (Ox.((x x) y) Ox.((x x) y)))


Redex 2

Orden Normal
1. Reduzco Redex 1

[(Ox.((x x) y) (Ox.((x x) y))/u] v:=: v


Orden Aplicativo
1. Reduzco Redex 2

(Ox.((x x) y) Ox.((x x) y))


M

[Ox.((x x) y)/x] ((x x) y):=: ((Ox.((x x) y) Ox.((x x) y)) y)


Redex 3

II

Reeemplazo II en la aplicacin original

(Ou.v ((Ox.((x x) y) Ox.((x x) y)) y))

III

Redex 3
reduzco

[Ox.((x x) y)/x] ((x x) y):=: ((Ox.((x x) y) Ox.((x x) y)) y)


Reeemplazo el resultado en III

(Ou.v (((Ox.((x x) y) Ox.((x x) y)) y) y))


Redex 4
Se puede volver a reducir y se llegar a un resultado similar al anterior.

Para este ejemplo, utilizando el orden aplicativo no es


posible llegar a la forma normal. Si en cambio se puede
llegar con una estrategia de orden normal

You might also like