Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Mauro Jaskelioff
6/9/2011
Origen del -calculo
x X t u x X t
x (t u) (x.t)
I Ejemplos:
x (x y ) (x.x) (x.(y .((x y ) y )))
Esto es todo?
M N P en lugar de ((M N) P)
x.P Q en lugar de (x.P Q)
x1 x2 . . . xn .M en lugar de (x1 .(x2 .(. . . (xn .M) . . . ))
Ejercicio
Insertar todos los parentesis y s en los sig. terminos abreviados:
I x y z (y x) I (x y z.x z (y z)) u v w
I (x.v u u) z y I u x (y z) (v .v y )
Ocurrencias
Definicion (Ocurrencia)
La relacion P ocurre en Q (o P es un subtermino de Q) se define
inductivamente sobre la estructura de Q
I P ocurre en P;
I si P ocurre en M o en N, entonces P ocurre en (M N);
I si P ocurre en M o P x, entonces P ocurre en (x.M).
Ejercicio
Encontrar las ocurrencias de (x y ) en los terminos
(x y .x y ) (z (x y ) (x.y (x y )) x y )
Variables libre y ligadas
I Observamos que
I una misma variable puede ocurrir libre y ligada
I distintas ocurrencias pueden ligarse a distintas ocurrencias de
ligadura
I la ligadura depende de toda la expresion
(una ocurrencia cambia de status de una subexpresion a la
expresion final; ej: x vs. (x.x))
Ejercicio
Dar las variables libres y las ligaduras y sus alcances en el termino
Definicion (Substitucion)
Para todo M, N, x se define M[N/x] como el resultado de
substituir N por toda ocurrencia libre de x en M. Mas
precisamente, por induccion sobre la estructura de M.
x[N/x] N
a[N/x] a (a 6 x)
(P Q)[N/x] (P[N/x] Q[N/x])
(x.P)[N/x] x.P
(y .P)[N/x] y .P if x 6 FV (P) y
6 x
(y .P)[N/x] y .P[N/x] if x FV (P) y 6 FV (N)
(y .P)[N/x] z.(P[z/y ])[N/x] if x FV (P) y FV (N)
y .(M[y /x])
Lema
a) Si P Q entonces FV (P) = FV (Q)
b) La relacion es una relacion de equivalencia, o sea:
es reflexiva P P
es simetrica P Q Q P
es transitiva P Q Q R P R
c) M M 0 N N 0 M[N/x] M 0 [N 0 /x]
(x.x (x y )) N N (N y )
(x.y ) N y
(x.(y .y x) z) v ((y .y x) z)[v /x] (y .y v ) z
(x.x x) (x.x x) (x x)[(x.x x)/x] (x.x x) (x.x x)
(x x)[(x.x x)/x] (x.x x) (x.x x)
...
(x.x x y ) (x.x x y ) (x.x x y ) (x.x x y ) y
(x.x x y ) (x.x x y ) y y
...
Ejercicio
Reducir los siguientes terminos a -nf.
P Q FV (P) FV (Q)
P P 0 Q Q 0 Q[P/x] Q 0 [P 0 /x]
Confluencia
(x.(y .y x) z) v (y .y v ) z z v
(x.(y .y x) z) v (x.z x) v z v
M T N T
Corolario
Si P tiene -nf, esta es unica (modulo ).
-equivalencia
Definicion (-equivalencia)
P es -equivalente a Q (escribimos P = Q) iff Q puede ser
obtenido partiendo de P y realizando una serie finita de
-contracciones, -expansiones (-contracciones inversas) y
-conversiones.
Lema (Substitucion y = )
M = M 0 N = N 0 M[N/x] = M 0 [N 0 /x]
P T Q T
Extensionalidad
Teorema
Si la reduccion normal de un termino X es infinita, X no tiene
forma normal.
I Para probar que un termino no tiene forma normal basta
probarla para la reduccion normal
I Si una forma normal existe, la estrategia de reduccion normal
la encontrara.
PROGRAMACION
Programando con el -calculo
ifthenelse True P Q = P
ifthenelse False P Q = Q
I Por lo tanto
I Una solucion:
True p q.p
False p q.q
ifthenelse x.x
Mas operaciones sobre Booleanos
I Dados True, False e ifthenelse podemos definir otras funciones
(escribimos ifthenelse P Q R como if P then Q else R)
not x.if x then False else True
x.ifthenelse x False True
x.(x.x) x (p q.q) (p q.p)
x.x (p q.q) (p q.p)
F0 M M
F n+1 M F n (FM)
I Ejemplo:
Definicion
Para cada n N, el numeral de Church para n es un termino n
definido como
n f x. f n x
I Ejemplos
0 f x. x 1 f x. f x 2 f x. f (f x)
Ejercicio
Definir una funcion isZero, tal que
isZero 0 = True
isZero n + 1 = False
Funciones recursivas
F X = X (F X )
I Entonces
Y x.(y .x (y y )) (y .x (y y ))
Teorema
Todo termino X tiene un punto fijo dado por (Y X ). Esto es:
Y X = X (Y X )