You are on page 1of 40

C alculo lambda

Clase pr actica (primera parte)

Paradigmas de Lenguajes de Programaci on

Primer cuatrimestre de 2010

Sintaxis de LCb Expresiones. T erminos y tipos. Clases y ejemplos de t erminos. Errores frecuentes. Convenciones. Sistema de tipado Juicios y contextos de tipado. Repaso de cada regla de tipado. Ejercicio: una derivaci on completa. Sem antica operacional Valores y formas normales. Repaso de reglas de evaluaci on. Ejercicios y ejemplos.
Alonzo Church (19031995)

Extendiendo el c alculo a gusto Ejemplo: agregar un nuevo tipo. Sintaxis, tipado y sem antica. Ejercicios y ejemplos.

Sintaxis
Expresiones. T erminos y tipos. Un paseo por el universo de t erminos. Errores frecuentes y c omo evitarlos. Algunas convenciones importantes.

Sintaxis

Expresiones

T erminos de LCb M ::= x | | | | true | false if M then P else Q x : . M MN


W

T erminos

Tipos

Expresiones de tipos ::= Bool |

Tipos
::= Bool |
Algunos ejemplos de tipos:
Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool ...

. Importan los par entesis? S


Sin: Bool Bool Bool con: (Bool Bool ) Bool . . . son tipos muy distintos.

Si no importaran, no podr amos expresar tipos m as interesantes, como:


((Bool Bool ) Bool ) Bool ((Bool Bool ) (Bool Bool )) Bool Bool ((Bool Bool ) Bool Bool ) ((Bool Bool ) Bool ) ...

T erminos

::= x | | | | | true false if M then P else Q x : . M MN

donde
M , N , P y Q son (sub)t erminos es una expresi on de tipo x X es un s mbolo de variable X es un conjunto innito enumerable

Ejemplos y clases de t erminos


Qu e pinta tiene el universo de los t erminos?
Entre muchas otras clasicaciones posibles, hay . . .

Expresiones que son t erminos

. . . y bichos raros que no lo son

x : Bool . x

x . x : Bool

T erminos muy sencillos

. . . y otros no tan simples

true

x : Bool . y : Bool . z x y

T erminos bastante sensatos

. . . y otros m as sospechosos

if x then y else z

true false

T erminos truchos
Los siguientes, por ejemplo, no son t erminos: Bool true false if x then y else z x x : true . y x : false . x x : Bool . Bool x y : Bool . true

Ninguno de ellos es generable por la gram atica que vimos:

M ::= x | true | false | if M then P else Q | x : . M | M N


Abusos de notaci on ocasionales p/abrev.: x . M (omitir tipo irrelevante) x y . M (combinar anidadas)

T erminos muy simples


Como son at omicos, siempre son t erminos:
una constante
(s olo dos por ahora)

una variable x0 x1 x2

(cualquier x X )

true false

x45 x160 x2837 . . .

Con subpartes razonables, tambi en son t erminos:


un condicional if x1 then x2 else x3 if true then x4 else x5 ... una abstracci on x1 : Bool . x1 x3 : Bool . x5 ... una aplicaci on x1 true x2 x3 ...

Notar que en estos ejemplos las subpartes son razonables y at omicas (s olo constantes, variables y el tipo Bool ).

T erminos m as complejos
Con subpartes no necesariamente at omicas, la cosa se pone buena:

f : Bool Bool . f b : Bool . r : Bool . if b then r else false

if ...

b : Bool . true false then

x : Bool . x true else

y : Bool . y false

Los que expresan algo interesante suelen ser mucho m as complejos. Pregunta: qu e entendemos por complejidad en este contexto?

Considerar el tama no del arbol de sintaxis abstracta del t ermino.

T erminos como arboles sint acticos


false
false

x : Bool . z : Bool . if x then z else false

fk
App x

Abs

Bool

Abs

a : Bool . true
Abs

Bool

If

Bool

true

false

T erminos muy largos ( arboles muy altos)


Error frecuente: malinterpretar la estructura de un t ermino.
(h : Bool Bool . t : Bool . if h t then y : Bool Bool . y false else z : Bool Bool . z t ) (if f : (Bool Bool ) Bool . f true then p : Bool . p else q : Bool . q )

Para evitar marearse, antes de leer en detalle el socotroco . . .

Preguntarse: qu e es esto? Imaginar el arbol y localizar su ra z.


App

Abs

If

...

...

Tener presentes las convenciones de sintaxis m as importantes.

T erminos con par entesis impl citos


La aplicaci on asocia a izquierda La echa asocia a derecha Bool Bool Bool Bool App App App f x y z Bool Bool Bool Bool

f xyz

La abstracci on tiene alcance greedy: se estira todo lo posible. x : x . y : y . f x z : z . z y = x : x . y : y . f x z : z . z y

T erminos mutantes y sustituciones dudosas


Error frecuente: alterar el signicado de un t ermino sin darse cuenta.
Supongamos P = a . b . a Q = a . b . b P x y (b . x ) y x Q x y (b . b ) y y Importante: -equivalencia a . b . a h . e . h a . b . b b . o . o a . b . a a . b . b Tenemos innitas variables
Otra x X 0km, por favor. C omo no, aqu tiene.

Ejemplo de problema P b y (b . a) a b y (b . b ) y y

P b y (a . b . a) b y (b . a) a b y (b . b ) y

Error frecuente: convenci on de limpieza vs. convencionaje de mucama.


En la teor a suele resultar conveniente asumir ciertas condiciones idealizadas sobre t erminos, vars ligadas/libres . . . Pero en la pr actica, suposiciones como siempre se puede siempre sucede no son m agicas: alguien debe hacerlo!

T erminos con y sin sentido


ermino, aunque medio sospechoso. Vimos que true false es un t
Intuitivamente: qu e querr amos obtener al evaluarlo?

En la te orica se mencion o que x x tambi en es un t ermino.


Intuitivamente: qu e tipo deber a tener?

Moraleja: aun sobre t erminos v alidos caben preguntas como . . .


En nuestro contexto / para nuestros nes, esto tiene sentido? Ser a deseable que tenga sentido? Qu e tipo deber a tener? Deber a tener tipo? Podr a tener alguno?

Y de este segundo ltro se ocupar a nuestro sistema de tipado.


(Entre otras cosas! M as detalles en un par de semanas, cuando veamos inferencia de tipos.)

Tipado
Contextos y juicios de tipado. Reglas de tipado y c omo leerlas. Ejercicio: una derivaci on completa.

Contextos de tipado

Un contexto de tipado es un conjunto de pares xi : i = { x1 : 1 , x2 : 2 , . . . , xn : n }

Ejemplo m as concreto: = { x : Bool , y : Bool Bool , z : Bool } Cada tupla indica el tipo de una variable. Ninguna variable puede aparecer m as de una vez.

Juicios de tipado
Un juicio de tipado es una expresi on de la forma M:

que se lee: el t ermino M tiene tipo suponiendo un contexto .

suponiendo esto sobre el contexto

{ x : Bool , y : Bool Bool }

z : Bool . y z : Bool Bool


esto tiene este tipo

Un juicio de tipado s olo arma algo; podr a o no ser v alido.


Lo ser a sii es derivable usando el dado y las reglas de tipado.

Recordar que si Notar que decir

M : es v alido, tambi en debe serlo . M : equivale a armar M tiene tipo .

Axiomas de tipado para constantes

T-True
El t ermino true tiene tipo Bool .

true : Bool

T-False
El t ermino false tiene tipo Bool .

false : Bool

No hay premisas: los axiomas son verdades que no dependen de nada. En particular, al no haber restricciones, valen .

Regla de tipado para variables

T-Var

x : x :

() Leyendo de arriba hacia abajo: Si logramos probar que la tupla x : pertenece a habremos probado que el t ermino x tiene tipo en .

() Leyendo de abajo hacia arriba: Cuando necesitemos probar que x tiene tipo en bastar a probar que la tupla x : pertenece a .

Regla de tipado para aplicaciones

T-App

M:

N:

MN :

Para demostrar que una aplicaci on M N tiene tipo en el contexto tendremos que probar que:
1

M tiene tipo (en ese mismo ), y N tiene tipo (en ese mismo ).

Regla de tipado para condicionales

T-If

M : Bool

P:

Q:

if M then P else Q :

Para demostrar que if M then P else Q tiene tipo en el contexto tendremos que probar que:
1

M tiene tipo Bool en , P tiene ese mismo tipo en , y Q tiene ese mismo tipo en .

Regla de tipado para abstracciones

T-Abs

, x :

M:

x : . M :

Para probar que una abstracci on x : . M tiene tipo en un habr a que demostrar que el t ermino M tiene tipo en el contexto { x : }

l ease, contaremos con la informaci on de , m as la que aporte esa tupla.

Ejercicio de tipado
Demostrar en el pizarr on la validez del juicio de tipado:

(x : Bool . y : Bool . if x then true else y ) false : Bool Bool


Qu e es ese t ermino? Una aplicaci on. Suena razonable? S eh.

x :
(T-Var)

M:

N:
(T-App)

x :

MN :

, x :

M:
(T-Abs)

M : Bool

P:

Q:
(T-If)

x : . M :

if M then P else Q :

Soluci on (resumida)

() x : Bool (T-Var) x : Bool true : Bool (T-True) y : Bool y : Bool

() (T-Var) (T-If)

{ x : Bool , y : Bool }

if x then true else y : Bool (T-Abs)

{ x : Bool }

y : Bool . Mif : Bool Bool (T-Abs) (T-False) false : Bool

x : Bool . y : Bool . Mif : Bool Bool Bool


(T-App)

(x : Bool . y : Bool . if x then true else y ) false : Bool Bool


Mif

(donde los tipos y se corresponden con los y de la regla T-App)

Sem antica
Sem atica operacional. Valores. Formas normales. Reglas de reducci on y c omo leerlas. C omo evaluar un t ermino; ejemplos.

Valores y formas normales


Qu e era un valor ? Valores de LCb Un resultado posible de la evaluaci on de un t ermino cerrado y bien tipado.
Recordemos que no nos interesa evaluar t erminos con vars. libres, o que ni tipan.

::= | |

true false x : . M

Atenci on: las abstracciones son valores!

Qu e era una forma normal ? Un t ermino bien tipado que ya no puede ser reducido, i.e. no existe un M tq M M .
Intuici on: el c omputo termin o! Existe un resultado nal concreto que podemos leer.

Ejemplo de f.n. pero no valor? Una variable, como x o z . Ejemplo de valor pero no f.n.? Lema te orica: valor f.n.
Intuici on: no parece buena idea que haya t erminos reducibles entre nuestros valores.

Sem antica operacional small-step


Axiomas para condicionales cuya guarda es un valor: E-IfTrue if true then P else Q P E-IfFalse if false then P else Q Q

Regla para condicionales en general: E-If M M if M then P else Q if M then P else Q

Notar que primero se eval ua la guarda, y luego s olo una de las dos ramas (lazy ).

Sem antica operacional small-step (cont.)


Reglas para las aplicaciones: E-App1 () MM MN M N
(esto tambi en impone un orden de evaluaci on)

E-App2 ( ) NN VN VN

Para las aplicaciones de abstracciones llega el h eroe de la pel cula . . .


App

E-AppAbs ( )
Abs x M V

(x : . M ) V M {x V } . . . el axioma de -reducci on.

Ejercicios

Cu al es el resultado de evaluar el t ermino que vimos antes?


(x : Bool . y : Bool . if x then true else y ) false
Qu e es? Una aplicaci on. Parecer a tipar? S eh.

Qu e resultado se obtiene al evaluar este otro t ermino?


if (b : Bool . true ) false then (x : Bool . x ) true else (y : Bool . y ) false
Qu e es? Un condicional. Dir ase que tipa? S eh.

Soluciones
(x : Bool . y : Bool . if x then true else y ) false
Podemos -reducir, porque false es un valor. (E-AppAbs)

y : Bool . if false then true else y


Notar que estar a mal seguir reduciendo: esto ya es un valor!

if (b : Bool . true ) false then (x . . . . ) true else (y . . . . ) false


La guarda a un no es un valor. Sin embargo, false s lo es, con lo que: (E-AppAbs) (b : Bool . true ) false
guarda

true

(E-If)

,If

if true then (x : Bool . x ) true else (y : Bool . y ) false


Ahora s llegamos a un valor en la guarda.

(E-IfTrue) (E-AppAbs)

IfTrue

(x : Bool . x ) true true

Extendiendo el c alculo
Un nuevo tipo b asico: los naturales. Sintaxis: nuevos tipos y t erminos. Sistema de tipado: nuevas reglas. Sem antica: nuevos valores y reglas.

Extendiendo la sintaxis
Expresiones de tipos de LCb + Nat ::= Bool | Nat |

T erminos de LCb + Nat M ::= | | | | x true | false | 0 if M then P else Q x : . M | M N succ (M ) | pred (M ) | iszero (M )

Extendiendo el sistema de tipos


Nuevas reglas de tipado:

T-Zero

T-IsZero 0 : Nat M : Nat

iszero (M ) : Bool

Axioma: la constante 0 es un Nat .

iszero (M ) es un Bool si M es un Nat .

T-Succ M : Nat

T-Pred M : Nat

succ (M ) : Nat

pred (M ) : Nat

succ (M ) es un Nat si M es un Nat .

succ (M ) es un Nat si M es un Nat .

Ejercicios

A ver, probemos la validez de este juicio: pred (succ (0)) : Nat

y tambi en la de este otro: {x : Nat } iszero (pred (succ (x ))) : Bool

Soluciones

(T-Zero)

0 : Nat
(T-Succ)

succ (0) : Nat


(T-Pred)

pred (succ (0)) : Nat

( )

x : Nat { x : Nat }
(T-Var)

{ x : Nat } { x : Nat } { x : Nat } { x : Nat }

x : Nat
(T-Succ)

succ (x ) : Nat
(T-Pred)

pred (succ (x )) : Nat


(T-IsZero)

iszero (pred (succ (x ))) : Bool

Extendiendo la sem antica operacional


on small-step: Nuevos valores . . . y nuevas reglas de evaluaci
Valores de LCb + Nat E-Succ MM succ (M ) succ (M )

V ::= true | false | x : . M | n


donde para cada n I N, n es una abreviaci on de succ n (0)

E-PredZero

E-PredSucc

E-Pred MM

pred (0) 0

pred (succ (n)) n

pred (M ) pred (M )

E-IsZeroZero

E-IsZeroSucc

E-IsZero MM

iszero (0) true

iszero (succ (n)) false

iszero (M ) iszero (M )

Ejercicios

Evaluar esta aplicaci on: (x : Nat . iszero (pred (succ (x )))) 0


Qu e pasar a si el subt ermino derecho fuera succ (0) ? Y si fuera succ (succ (0)) ?

Hallar la forma normal de cada uno de estos t erminos: succ (pred (pred (succ (0)))) succ (pred (pred (succ (x ))))

Soluciones
M = x : Nat . iszero (pred (succ (x ))) M0 M1 M2 iszero (pred (succ (0))) IsZero ,PredSucc iszero (0) IsZeroZero iszero (pred (succ (1))) IsZero ,PredSucc iszero (1) IsZeroSucc iszero (pred (succ (2))) IsZero ,PredSucc iszero (2) IsZeroSucc true false false

M = succ(pred(pred(succ(0))))

reduce a un valor, y todo valor est a en f.n.: succ(0)

M Succ ,Pred ,PredSucc succ (pred (0)) Succ ,PredZero

M = succ(pred(pred(succ(x))))

no es un valor pero ya est a en f.n.:

notar que como x es irreducible ( N /x N ), ninguna regla nos sirve.

Continuar a ...
En el pr oximo cap tulo de su pr actica favorita:

C omo hacer que todo esto sirva para algo. Alternativas m as pisteras para esta extensi on. Nuevas extensiones, agregando toda clase de cosas. Ejemplos m as sosticados en rutilante technicolor. Sorteos! 3 viajes a Lambodia y 100 remeras Soy de Alonzo.
Otros modelos disponibles: Not Dead, Abajo el Estado, I Church y Curry, no exist s. Sin obligaci on de compra. Bases en secretar a de Geolog a. Promoci on v alida hasta abstraer stock.

(x : clase . n x ) LambdaC alculo1

You might also like