Professional Documents
Culture Documents
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
Tipos
Tipos
::= Bool |
Algunos ejemplos de tipos:
Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool ...
T erminos
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
x : Bool . x
x . x : Bool
true
x : Bool . y : Bool . z x y
. . . 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
una variable x0 x1 x2
(cualquier x X )
true false
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:
if ...
y : Bool . y false
Los que expresan algo interesante suelen ser mucho m as complejos. Pregunta: qu e entendemos por complejidad en este contexto?
fk
App x
Abs
Bool
Abs
a : Bool . true
Abs
Bool
If
Bool
true
false
Abs
If
...
...
f xyz
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
Tipado
Contextos y juicios de tipado. Reglas de tipado y c omo leerlas. Ejercicio: una derivaci on completa.
Contextos de tipado
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:
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 .
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 .
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 ).
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 .
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 : }
Ejercicio de tipado
Demostrar en el pizarr on la validez del juicio de tipado:
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)
() (T-Var) (T-If)
{ x : Bool , y : Bool }
{ x : Bool }
(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.
::= | |
true false x : . M
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.
Notar que primero se eval ua la guarda, y luego s olo una de las dos ramas (lazy ).
E-App2 ( ) NN VN VN
E-AppAbs ( )
Abs x M V
Ejercicios
Soluciones
(x : Bool . y : Bool . if x then true else y ) false
Podemos -reducir, porque false es un valor. (E-AppAbs)
true
(E-If)
,If
(E-IfTrue) (E-AppAbs)
IfTrue
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 )
T-Zero
iszero (M ) : Bool
T-Succ M : Nat
T-Pred M : Nat
succ (M ) : Nat
pred (M ) : Nat
Ejercicios
Soluciones
(T-Zero)
0 : Nat
(T-Succ)
( )
x : Nat { x : Nat }
(T-Var)
x : Nat
(T-Succ)
succ (x ) : Nat
(T-Pred)
E-PredZero
E-PredSucc
E-Pred MM
pred (0) 0
pred (M ) pred (M )
E-IsZeroZero
E-IsZeroSucc
E-IsZero MM
iszero (M ) iszero (M )
Ejercicios
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))))
M = succ(pred(pred(succ(x))))
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.