Está en la página 1de 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:


Cuerpo de la
abstraccin
funcional
O <variable> . <trmino>

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 La regla Beta
especifica los
( (x) exp(2 * x + y) (4) ) 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) Por regla Beta
y def. 5, 3, 2 y 1
(Oy. (y M) N)
Por regla Beta y def. 3, 1 y 2
(N M)
En particular si M :=: y y N :=: x
Por regla Beta ( (Ox. Oy. (y x) y) x) = (x y)
y def. 5, 3, 2, 1
(Oy. (y y) x)
Por regla Beta
y def. 3, 2, 1 (x x) x=y?
Por transitividad
En el ejemplo anterior los trminos cualesquiera
x e y denotan trminos del clculo lambda son
genricos 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

( (Ox. Oy. (y x) y) x)
Por regla Beta

( [y / x] Oy. (y x) x)
Por defs.
5, 3, 2 y 1
( 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 Redex 1
M = (Oy.( y x) z)
(Ox. (Oy.( y x) z) v) N=v
Redex 2
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 Orden
Normal
(Ox. (Oy.(y x) z) v) Aplicativo

Redex 2
1. Reduzco Redex 1 1. Reduzco Redex 2

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


por reglas 3,5,3,... por reglas 3,2 y 1

2. Reduzco Redex 2 2. Reduzco Redex 1

[z/y] (y v):=: (z v) (Ox.( z x) 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)))


Orden Normal Redex 2

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)) I

M N

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

Redex 3
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

También podría gustarte