Document

Transcripción

Document
Introducción
Evaluador para PCF
Equivalencia de programas
PCF(2/2)
Eduardo Bonelli
Departamento de Computación
FCEyN
UBA
13 de septiembre de 2005
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Programas
No todos los pseudo términos pueden ser ejecutados o
evaluados por sı́ mismos
Distinguimos a un subconjunto de los términos (pseudo
términos tipables) que llamamos programas
Las dos caracterı́sticas principales que deben tener los
programas son:
1
2
No deben hacer referencia a una variable no declarada o no
ligada
Deben tener un tipo (o forma) apropiado de tal modo de
poder arrojar un valor imprimible o efecto observable
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Programas
Un término se dice cerrado si no tiene variables libres
Los números y booleanos pueden ser impresos (ie. son
observables)
Consideramos, entonces, a cualquier término cerrado de tipo
nat o bool como un programa
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Programas
Un término se dice cerrado si no tiene variables libres
Los números y booleanos pueden ser impresos (ie. son
observables)
Consideramos, entonces, a cualquier término cerrado de tipo
nat o bool como un programa
¿Qué sucede con los términos de tipo producto?
Se podrı́an incluir como tipos observables (si el tipo de sus
componentes también lo son)
Pero no son estrictamente necesarios por lo que optamos por
excluirlos para simplificar la presentación
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Programas
Un término se dice cerrado si no tiene variables libres
Los números y booleanos pueden ser impresos (ie. son
observables)
Consideramos, entonces, a cualquier término cerrado de tipo
nat o bool como un programa
¿Qué sucede con los términos que tipo funcional?
¿Podemos observar una abstracción para poder compararla
por igualdad con otro?
NO. Pues no tenemos manera efectiva de comparar por
igualdad las funciones representadas por esos términos.
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Programas
Definición
Un tipo es observable si es nat o bool.
Un programa PCF es un término cerrado de un tipo
observable.
Un resultado PCF es un valor observable, es decir, un
número natural o true o false.
Eq? 2 3 es un programa
λx : nat.x no es un programa, pero (λx : nat.x)2 sı́ lo es
h2, 3i no es un programa
2 + x no es un programa
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Semántica operacional
Nuestro objetivo es darle semántica (axiomática, operacional,
denotacional, etc.) a programas PCF.
Semántica operacional “small step”
Consiste en definir una relación de reducción “→” que permite
reducir un programa, paso por paso
Semántica operacional “big step”
Consiste en definir una relación “⇓” que permite reducir un
programa a su resultado final.
Puede definirse directamente (“Natural Semantics”) o a
través de la small step. Veremos un ejemplo de ésta última
cuando definamos un evaluador para PCF.
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Semántica operacional small step
Un juicio de reducción es una expresión de la forma:
ΓBM → N :σ
que se lee: “el pseudo término M de tipo σ bajo contexto Γ
reduce en un paso a N, también de tipo σ bajo contexto Γ”
Para simplificar la presentación, en lugar de juicios de
reducción, definiremos juicios simplificados de la forma
M → N que se leen: “el pseudo término M reduce, en un
paso, al pseudo término N”
Luego se prueba que si Γ B M : σ y M → N, entonces
Γ B N : σ (este resultado se conoce como Subject Reduction)
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Estrategia call-by-name para PCF
Hay muchas maneras de definir una relación de reducción, es
decir, de definir el juicio M → N
Nosotros definiremos uno que lleva el nombre de
Call-By-Name por lo que escribiremos M →CBN N
Este nombre proviene de la manera en que se pasan los
argumentos a una función, en una aplicación
Para definir el juicio M →CBN N vamos a introducir
axiomas de reducción y
reglas de reducción
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Axiomas de reducción (1/2)
n+m =p
(SO-Suma)
n + m →CBN p
n 6= m
(SO-Eq1)
Eq? n n →CBN true
(SO-Eq2)
Eq? n m →CBN false
(SO-If-1)
if true then M else N →CBN M
(SO-If-2)
if false then M else N →CBN N
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Axiomas de reducción (2/2)
(SO-Proj-1)
π1 ((M, N)) →CBN M
(SO-Proj-2)
π2 ((M, N)) →CBN N
(SO-β)
(λx : σ.M) N →CBN M{x ← N}
(SO-fix)
fix σ →CBN λf : σ → σ.f (fix σ f )
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Reglas de reducción (1/3)
M →CBN M 0
M + N →CBN M 0 + N
M →CBN M 0
n + M →CBN n + M 0
Eduardo Bonelli
(SO-Cong-+.1)
(SO-Cong-+.2)
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Reglas de reducción (2/3)
M →CBN M 0
Eq? M N →CBN Eq? M 0 N
M →CBN M 0
Eq? n M →CBN Eq? n M 0
(SO-Cong-Eq.1)
(SO-Cong-Eq.2)
M →CBN M 0
if M then P else Q →CBN if M 0 then P else Q
Eduardo Bonelli
PCF(2/2)
(SO-Cong-If)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Reglas de reducción (3/3)
M →CBN M 0
π1 (M) →CBN π1 (M 0 )
M →CBN M 0
π2 (M) →CBN π2 (M 0 )
M →CBN M 0
M N →CBN M 0 N
Eduardo Bonelli
(SO-Cong-Proy.1)
(SO-Cong-Proy.2)
(SO-Cong-App)
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Ejemplos
if Eq? 2 3 then 7else 8 →CBN 8
(λx : nat.x + 1) (if Eq? 2 3 then 7else 8) →CBN
(if Eq? 2 3 then 7else 8) + 1
(λf : nat → nat.f 2) (λx : nat.x + 1) →CBN →CBN →CBN 3
(⊥nat =)fix nat (λy : nat.y + 1) →CBN →CBN →CBN ⊥nat + 1
(λx : nat.1) ⊥nat →CBN 1
Intuitivamente, M →CBN N busca aplicar los axiomas
en el subtérmino que está más a la izquierda de M
y que no se encuentre debajo de un “λ” o un “h , i”
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Forma normal
Forma normal
Decimos que un término M está en (call-by-name) forma normal si
no existe N tal que M →CBN N.
(λy : nat.y ) 3 no está en forma normal
λx : nat.((λy : nat.y ) 3) está en forma normal
2 + 3 no está en forma normal
h2 + 3, 3 + 4i está en forma normal
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Propiedades de la reducción CBN
Determinismo de reducción CBN
Si M →CBN P y M →CBN Q, entonces P = Q.
Subject Reduction
Si Γ B M : σ y M →CBN N, entonces Γ B N : σ.
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Programas
Semántica operacional small step
Axiomas y reglas de reducción para CBN
Propiedades de la reducción CBN
Propiedades de la reducción CBN
Determinismo de reducción CBN
Si M →CBN P y M →CBN Q, entonces P = Q.
Subject Reduction
Si Γ B M : σ y M →CBN N, entonces Γ B N : σ.
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Función de evaluación
Ejemplos de evaluación CBN
Propiedades de la evaluación CBN
Evaluador para PCF
La relación “→CBN ” nos permite simplificar un programa paso
por paso
Componiendo estos pasos podemos ejecutar un programa para
obtener un resultado PCF
Recordar que un resultado PCF es un valor observable, es
decir, un número natural, el término true o el término false.
De esta manera podemos definir una semántica operacional
“big step” para PCF
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Función de evaluación
Ejemplos de evaluación CBN
Propiedades de la evaluación CBN
Función de evaluación
Función de evaluación CBN
def
Eval(M) = N si M CBN N y N está en forma normal.
La relación M CBN N representa muchos pasos de reducción
CBN y se define inductivamente del siguiente modo:
M=N
M CBN N
M →CBN P
P CBN N
M CBN N
Decimos que un pseudo término M tiene forma normal si
existe una forma normal N tal que M CBN N.
Eval es una función parcial. Eval(M) no está definida si M
no tiene forma normal
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Función de evaluación
Ejemplos de evaluación CBN
Propiedades de la evaluación CBN
Ejemplos de evaluación CBN
Eval((if Eq? 2 3 then 7else 8) + 1) = 9
Eval(⊥nat ) no está definida (donde
⊥nat = fix nat (λy : nat.y + 1))
Eval((λx : nat.1) ⊥nat ) = 1
Eval((λx : nat.x + 1) (2 + 3)) = 6
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Función de evaluación
Ejemplos de evaluación CBN
Propiedades de la evaluación CBN
Propiedades de la evaluación CBN
Formas normales cerradas
Supongamos que Γ B M : σ y M es cerrado y en forma normal.
1
Si σ = nat, entonces M = n
2
Si σ = bool, entonces M = true o M = false
3
Si σ = ρ → τ , entonces existe N tq M = λx : ρ.N
4
Si σ = ρ × τ , entonces existe P, Q tq M = hP, Qi
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Función de evaluación
Ejemplos de evaluación CBN
Propiedades de la evaluación CBN
Propiedades de la evaluación CBN
Correctitud de evaluación CBN
1 Si BP : nat y P tiene forma normal, entonces
Eval(P) = n
para algún numeral n.
2
Si BP : bool y P tiene forma normal, entonces
Eval(P) = b
con b ∈ {true, false}.
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia de programas
Cada forma de definir semántica de programas induce una
noción de equivalencia sobre los mismos
En semántica axiomática ecuacional:
dos términos Γ B M : σ y Γ B N : σ se consideran equivalentes
si Γ B M = N : σ puede derivarse en el sistema visto en clase
¿En semántica operacional? También se puede definir una
noción de equivalencia de términos (y, en particular, de
programas).
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia operacional de programas
Equivalencia operacional de programas
Dos programas P y Q son operacionalmente equivalentes si
Eval(P) ' Eval(Q), donde ésto último significa que
Eval(P) = Eval(Q) o bien
la evaluación no está definida para ninguno de los dos.
El problema con ésta definición es que sólo está definida para
programas
Para poder razonar sobre programas de manera modular o
composicional precisamos una noción de equivalencia sobre
términos arbitrarios (y no sólo programas)
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia operacional de programas
Equivalencia operacional de programas
Dos programas P y Q son operacionalmente equivalentes si
Eval(P) ' Eval(Q), donde ésto último significa que
Eval(P) = Eval(Q) o bien
la evaluación no está definida para ninguno de los dos.
El problema con ésta definición es que sólo está definida para
programas
Para poder razonar sobre programas de manera modular o
composicional precisamos una noción de equivalencia sobre
términos arbitrarios (y no sólo programas)
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia operacional de términos
Contexto
Un contexto es un término con un agujero (representado con
el sı́mbolo “”).
def
Ej. C [ ] = λx : nat.x + Un contexto puede verse como un término “incompleto”.
El agujero se puede rellenar con un término
Ej.
C [2 + y ] = λx : nat.x + (2 + y )
Ej. C [x] = λx : nat.x + x (Observar que la operación de
“rellenado” puede ligar variables).
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia operacional de términos
Equivalencia operacional
Dos términos Γ B M : σ y Γ B N : σ son operacionalmente
equivalentes si para todo contexto C [ ], tal que C [M] y C [N] son
programas, se tiene
Eval(C [M]) ' Eval(C [N])
En ese caso escribimos M =op N.
En la literatura también se conoce como “equivalencia
observacional”
Fue introducida por J.-H. Morris. (“Lambda calculus models
of programming languages” PhD thesis, M.I.T., 1968)
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Equivalencia operacional de términos
Equivalencia operacional
Dos términos Γ B M : σ y Γ B N : σ son operacionalmente
equivalentes si para todo contexto C [ ], tal que C [M] y C [N] son
programas, se tiene
Eval(C [M]) ' Eval(C [N])
En ese caso escribimos M =op N.
La idea: “podés reemplazar M por N sin notar la diferencia”
Los contextos representan el entorno de evaluación y
funcionan a modo de “reactivos”
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Ejemplos
Para probar que M 6=op N (ie. que no son operacionalmente
equivalentes) basta con hallar un contexto C [ ] tal que C [M]
y C [N] son programas y Eval(C [M]) 6' Eval(C [N]).
En ese caso se habla de un “distinguishing context”, es decir,
un contexto que permite distinguir a M de N.
Ejemplo: Mostrar que 3 6=op 4
Tomamos C [ ] = Eq? 3.
Notamos que C [3] y C [4] son programas (pues son términos
cerrados de tipo bool)
Eval(C [3]) = true 6= false = Eval(C [4])
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Ejemplos
Ejemplo: Mostrar que λx : nat.x + 1 6=op λx : nat.x + 2
Tomamos C [ ] = 1.
Notamos que C [λx : nat.x + 1] y C [λx : nat.x + 2] son
programas (pues son términos cerrados de tipo nat)
Eval(C [λx : nat.x + 1]) = 2 6= 3 = Eval(C [λx : nat.x + 2])
Ejemplo: Mostrar que x + 1 6=op x + 2
Tomamos C [ ] = (λx : nat.)1.
Notamos que C [x + 1] y C [x + 2] son programas (pues son
términos cerrados de tipo nat)
Eval(C [x + 1]) = 2 6= 3 = Eval(C [x + 2])
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Ejemplos
Mostrar que M =op N puede ser difı́cil
El problema es que deben verificarse que para todos los
posibles contextos C [ ], tal que C [M] y C [N] son programas,
se tiene
Eval(C [M]) ' Eval(C [N])
Inducción sobre C [ ] no funciona (prueben con 2 + 2 =op 4!)
Eduardo Bonelli
PCF(2/2)
Introducción
Evaluador para PCF
Equivalencia de programas
Equivalencia de programas
Equivalencia operacional de programas
Equivalencia operacional de términos
Ejemplos
Dos técnicas para mostrar que M =op N
Semánticas (ver texto de Mitchell):
usar el hecho de que =den ⊆=op (“Adequacy” de la semántica
denotacional)
probar que M =den N
apelar a “Adequacy” y concluir que M =op N.
Coinductivas (ver, por ej., “Operationally-Based
Theories of Program Equivalence”, Andrew Pitts,
Semantics of Logic and Computation, CUP, 1997):
caracterizar =op usando conjunto coinductivos.
usar coinducción para probar que M =op N.
Nota: no estudiaremos estas técnicas en la materia, los/las
interesados/as pueden consultar las citas bibliográficas
mencionadas.
Eduardo Bonelli
PCF(2/2)

Documentos relacionados