ARITMÉTICA EN EL λ-CÁLCULO Inmaculada Berrocal Rincón Pablo Camacho Aires Adrián Muñoz Alba CONTENIDOS    El sistema de numerales ¿Es un sistema adecuado? Operaciones con los numerales de.

Download Report

Transcript ARITMÉTICA EN EL λ-CÁLCULO Inmaculada Berrocal Rincón Pablo Camacho Aires Adrián Muñoz Alba CONTENIDOS    El sistema de numerales ¿Es un sistema adecuado? Operaciones con los numerales de.

ARITMÉTICA EN EL
λ-CÁLCULO
Inmaculada Berrocal Rincón
Pablo Camacho Aires
Adrián Muñoz Alba
CONTENIDOS



El sistema de numerales
¿Es un sistema adecuado?
Operaciones con los numerales de Church
o
o
o



Suma
Resta
Multiplicación
El uso de combinadores
Numerales de Church y Numerales Estándar
Otras operaciones
o
o
La igualdad entre pares Church
Factorial
1
EL SISTEMA DE NUMERALES
Un sistema N de numerales es una terna
N ≡< N, Cero, Suc > donde N es una sucesión de combinadores
N ≡ N0, N1,…
Y Cero y Suc son dos términos (funciones) tales que
T ,si N  N0
Cero N
F, si N  N1, N2,
Suc Nk = Nk+1
2
NUMERALES DE CHURCH
Se definen de la siguiente forma:
C0 ≡ λfx.x
C1 ≡ λfx.fx
C2 ≡ λfx.f(fx)
Combinadores
…
Cn+1 ≡ λfx.fn+1(x)
Función sucesor:
Suc ≡ λnfx.f (n f x)
Función Test Cero:
EsCero ≡ λn.n (λx.F) T
siendo
F ≡ λxy.y
T ≡ λxy.x
3
¿ES UN SISTEMA ADECUADO?
Un sistema de numerales es adecuado si existe una
función Pred (predecesor) tal que:
Pred Nk+1 = Nk
El sistema de numerales de Church podemos decir que es
un sistema de numerales adecuado, ya que podemos definir una
función Pred que garantiza lo anterior.
Nuestra función Pred es:
Pred ≡ λ nfx. n (λgh.h(gf)) (λu.x) (λu.u)
4
OPERACIONES (I)

Podemos definir la operación suma entre dos números como:
Suma = λ mnfx. m f (n f x)
La resta en el lenguaje lambda calculo es muy sencilla de definir
Resta = λ mn. n Pred m
Sustituyendo la función predecesor que vimos con anterioridad,
nos quedaría:
Resta = λ mp. p (λ nfx. n (λgh.h(gf)) (λu.x) (λu.u)) m

5
OPERACIONES (II)
La multiplicación entre dos números definidos en lambda
cálculo se puede definir de varias formas:
1) Mult1 = λ mnf. m (n f)
2) Mult2 = λ mn. m (Suma n) 0
Sustituyendo la función
anterioridad, nos quedaría:
Suma
que
vimos
con
Mult2 = λ mn. m ((λpqfx. p f (q f x)) n) (λfx.x)
lo podemos simplificar como
Mult2 = λ mn. m (λqfx. n f (q f x)) (λfx.x)
6
COMBINADORES (I)
Los combinadores son una versión reducida del lambda
cálculo sin tipo. A través de ellas se pueden obtener funciones de
orden superior. Existen dos combinadores especiales S y K,
definidos de la forma:
S = λxyz.x z (y z)
K = λxy.x
Existe un combinador I ≡ λx.x que se puede expresar en
términos de S y K:
I x = S K K x = K x (K x) = x
7
COMBINADORES (II)
Conversión del numeral de Church 0 en un combinador:
C0 = λf. λx.x = λf.I = (K I)
Conversión del numeral de Church 1 en un combinador
C1 = λf. λx.(f x)
= λf.(S λx.f λx.x)
= λf.(S (K f) I)
= (S λf.(S (K f)) λf.I))
= (S (S λf.S λf.(K f)) (K I))
= (S (S (K S) (S λf.K λf.f)) (K I))
= (S (S (K S) (S λf.K λf.f)) (K I))
= (S (S (K S) (S (K K) I)) (K I))
8
NUMERALES ESTÁNDAR
Otro sistema adecuado de numerales a parte de los pares
de Church son los numerales estándar. Se definen:
[0] ≡ I
[n +1] ≡ [F,[n]] ≡ λz.z F[n]
El número 2 se representaría en los numerales estándar como:
[2] = λz.z F [1] = λz.z F (λf.f F I)
Como ya hemos dicho que es un sistema adecuado, sean
las funciones SucE (sucesor), PredE (predecesor) y CeroE (test
cero) las siguientes:
SucE ≡ λx.[F,x]
PredE ≡ λx.x F
CeroE ≡ λx.x T
9
NUMERALES DE CHURCH Y
NUMERALES ESTÁNDAR
Sería interesante crear unas funciones H y H-1 que sirvan
para pasar de un sistema a otro.
{c0, c1, … }  H-1  { [0], [1], …}
{c0, c1, … }  H  { [0], [1], …}
tales que:
H [n] = cn

H-1 cn = [n]
Recursividad en las funciones H:
Combinador para puntos fijos Y = λf. (λx. f(x x)) (λx. f (x x))
10
FUNCIONES H Y H-1
Función H-1 que pasa de los pares de Church a los numerales
estándar:
H-1 ≡ λg.H-1aux g [0] ≡ λg. H-1aux g I

H-1aux ≡ Y ϕ -1aux
ϕ -1aux ≡ λ h.(λgn. COND (EsCero g) n (h (Pred g) (SucE n)))
Función H que pasa de los numerales estándar a los pares de
Church:
H ≡ λg.Haux g c0 ≡ λg. Haux g (λfx.x)

Haux ≡ Y ϕ aux
ϕ aux ≡ λ h.(λgn. COND (CeroE g) n (h (PredE g) (Suc n)))
11
OTRAS OPERACIONES

IGUALDAD ENTRE PARES DE CHURCH
Iguales ≡ Y ϑ
ϑ ≡ λh. (λnm. COND (EsCero n)
(COND (EsCero m) T F)
(COND (EsCero m) F (h (Pred n) (Pred m)))

FUNCIÓN FACTORIAL
Factorial ≡ Y ϖ
ϖ ≡ λh. (λn. (EsCero n) (λfx.fx) (Mult n (h (Pred n))))
12