Top Banner
Benem´ erita Universidad Aut´ onoma de Puebla Facultad de Ciencias de la Computaci´ on Trabajo de Tesis La Sem´ antica de Acci´ on para el Lenguaje PCF que presenta para obtener el t´ ıtulo de: Licenciado en Ciencias de la Computaci´ on El alumno: Ismael Everardo B´ arcenas Pati˜ no Asesor: Jos´ e de Jes´ us Lavalle Mart´ ınez
56

barcenas.pdf

Dec 19, 2015

Download

Documents

Sarita Sánchez
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: barcenas.pdf

Benemerita Universidad Autonoma de Puebla

Facultad de Ciencias de la Computacion

Trabajo de Tesis

La Semantica de Accion para elLenguaje PCF

que presenta para obtener el tıtulo de:

Licenciado en Ciencias de la Computacion

El alumno: Ismael Everardo Barcenas PatinoAsesor: Jose de Jesus Lavalle Martınez

Page 2: barcenas.pdf

ii

Page 3: barcenas.pdf

Agradecimientos

Quiero dar mis agradecimientos y dedicar este trabajo a Everardo y LuzMarıa, por darme la vida y la mejor familia para crecer. Gracias a Sinthiapor su incondicional apoyo. Un agradecimiento muy especial es para JesusLavalle, asesor de este trabajo, por mostrarme el mejor camino hacia unavida en la ciencia. Gracias a Cesar Bautısta, Mireya Tovar y Jesus Lavalle,jurado de este trabajo, por sus atinadas observaciones que ayudaron en eldesarrollo de esta tesis. Tambien agradesco a todos y cada uno de mis pro-fesores, por crear un buen ambiente para mi desarrollo academico. Also, Iwant to thank Ken Slonneger.

iii

Page 4: barcenas.pdf

iv

Page 5: barcenas.pdf

Contenido

Introduccion i

1 Calculo Lambda 1

1.1 Calculo lambda no tipificado . . . . . . . . . . . . . . . . . . . 1

1.1.1 Definibilidad . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2 Reduccion . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2 Calculo Lambda tipificado . . . . . . . . . . . . . . . . . . . . 16

1.2.1 Sistema Church . . . . . . . . . . . . . . . . . . . . . . 16

2 Lenguaje PCF 21

2.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 Semantica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1 Semantica axiomatica . . . . . . . . . . . . . . . . . . . 23

2.2.2 Semantica denotacional . . . . . . . . . . . . . . . . . . 24

2.2.3 Semantica operacional . . . . . . . . . . . . . . . . . . 26

2.3 Reduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.3.1 Reduccion mas-izquierda . . . . . . . . . . . . . . . . . 28

2.3.2 Reduccion floja . . . . . . . . . . . . . . . . . . . . . . 30

2.3.3 Reduccion voraz . . . . . . . . . . . . . . . . . . . . . . 31

3 Semantica de Accion 33

3.1 Semantica de accion de PCF . . . . . . . . . . . . . . . . . . . 34

3.1.1 Sintaxis abstracta . . . . . . . . . . . . . . . . . . . . . 34

3.1.2 Funciones semanticas . . . . . . . . . . . . . . . . . . . 35

3.1.3 Entidades semanticas . . . . . . . . . . . . . . . . . . . 39

Conclusion 41

v

Page 6: barcenas.pdf

vi CONTENIDO

Bibliografıa 43

Page 7: barcenas.pdf

Lista de tablas

3.1 Sintaxis abstracta de PCF . . . . . . . . . . . . . . . . . . . . 363.2 Semantica de accion de PCF . . . . . . . . . . . . . . . . . . . 373.3 Entidades Semanticas . . . . . . . . . . . . . . . . . . . . . . . 39

vii

Page 8: barcenas.pdf

viii LISTA DE TABLAS

Page 9: barcenas.pdf

Introduccion

Los lenguajes proveen medios de comunicacion por medio de sonidos ysımbolos escritos. Los seres humanos comienzan a aprender lenguajes comouna consecuencia de su experiencia cotidiana, pero en la Linguistica, la cien-cia de los lenguajes, las formas y significados de los lenguajes son sujetos auna examinacion mas rigurosa. Esta ciencia tambien puede ser aplicada alos lenguajes de programacion. En contraste a los lenguajes naturales, loscuales sirven para comunicar pensamientos y sentimientos, los lenguajes deprogramacion pueden ser vistos como lenguajes artificiales definidos para lacomunicacion con computadoras.

El analisis matematico de un lenguaje de programacion comienza con laformulacion de un modelo del lenguaje de programacion [Mit96], para talproposito utilizaremos las siguientes definiciones:

• El lenguaje objeto es el lenguaje al cual se esta estudiando.

• El meta-lenguaje es el lenguaje que utilizamos para describir allenguaje objeto ası como a su significado.

• La sintaxis se refiere al modo en que los sımbolos pueden ser combi-nados para crear oraciones bien formadas en el lenguaje. En cuanto loslenguajes de programacion, los sımbolos se combinan para crear pro-gramas. La sintaxis define la relacion formal entre los componentes deun lenguaje, de tal modo que provee una descripcion estructural de lasexpresiones que forman cadenas validas en el lenguaje. La sintaxis seencarga solamente de la forma y la estructura de los sımbolos en unlenguaje, sin tomar en consideracion su significado.

• La semantica interpreta el significado de cadenas sintacticamentevalidas en un lenguaje. Para los lenguajes naturales esto significa

i

Page 10: barcenas.pdf

ii INTRODUCCION

relacionar oraciones y frases con objetos, pensamientos y sentimien-tos de nuestras experiencias. Para los lenguajes de programacion,la semantica describe el comportamiento que una computadora tienecuando un programa, escrito en algun lenguaje, es ejecutado. Estecomportamiento es descrito por la relacion entre la entrada y salida deun programa o por una explicacion paso-a-paso de como se ejecutaraun programa en una maquina, ya sea real o abstracta.

• La pragmatica se refiere a los aspectos del lenguaje que involucran alos usuarios, fenomenos psicologicos y sociologicos, tales como la uti-lidad, rangos de aplicacion y efectos en los usuarios. En lo que refierea los lenguajes de programacion, la pragmatica incluye aspectos talescomo son las facilidad de implementacion, eficiencia en la aplicacion yla metodologıa de programacion.

La sintaxis debe ser especificada antes que la semantica, ya que el sig-nificado puede ser interpretado solo para expresiones bien formadas en ellenguaje. Analogamente, la semantica necesita ser formulada antes de con-siderar los aspectos pragmaticos, ya que la interaccion con los seres humanospuede ser considerada solo para expresiones cuyo significado es entendido.

Hay muchas aplicaciones que motivan el analisis de la estructura semanticade los lenguajes de programacion. Una definicion formal de un lenguajeprovee una referencia precisa, completa y estandar para los usuarios e imple-mentadores, entonces las omisiones, contradicciones y ambiguedades tıpicasde especificaciones de semanticas informales, tales como las del Reporte deAlgol 60 [Ten76], pueden ser evitadas. Incluso si una definicion formal nofuera comprensible para el programador promedio, podrıa proveer las basespara una descripcion informal mas adecuada. Un marco de trabajo general eindependiente del lenguaje de los conceptos semanticos, ayuda a estandarizarterminologıa, clarificar diferencias y similitudes entre los lenguajes, y nospermıte una formulacion y prueba rigurosas de las propiedades semanticasdel lenguaje. Un disenador de lenguajes puede analizar construcciones pro-puestas que le ayudaran a encontrar restricciones indeseables, incompatibil-idades, ambiguedades, etc.

El lenguaje PCF(Programming Computable Functions) originalmente for-mulado por Dana Scott [Mit96], es un lenguaje funcional con tipos, basado enel calculo lambda. Este lenguaje esta disenado para ser facilmente analizado.La principal ventaja en el estudio de este lenguaje es que al estar basado enel Calculo Lambda, sus propiedades son facilmente generalizables, lo cual,

Page 11: barcenas.pdf

iii

es de gran utilidad en el estudio de una buena variedad de lenguajes. Dadala importancia del calculo lambda en el estudio de PCF, el primer capıtulopresenta las principales caracterısticas de este. El segundo capıtulo describede manera detallada la sintaxis de PCF, asi como tambien, se presentan tresdistıntas semanticas de PCF, las cuales son, la denotacional, la axiomatica yla operacional.

La semantica de accion es un formalismo para la especificacion formal delenguajes de programacion [Mos96]. Su mayor ventaja sobre otras semanticases pragmatica, es decir, se ajusta sin problemas a lenguajes de programaciongrandes, tales como, C, Java, Standard ML, etc. Cabe notar la reusabilidadde la semantica de accion, lo que nos permite realizar extensiones y cambios ala semantica proporcionales a los realizados en el lenguaje. El tercer capıtulode este trabajo esta dedicado al estudio de la semantica de accion, y sepresenta una descripcion completa de PCF mediante esta semantica.

En las conclusiones se describen las ventajas de la semantica de accionsobre la semantica denotacional. Finalmente se presenta la bibliografıa.

Page 12: barcenas.pdf

iv INTRODUCCION

Page 13: barcenas.pdf

Capıtulo 1

Calculo Lambda

El calculo lambda (calculo λ) fue creado orginialmente por Church con el finde formar una Teorıa General de Funciones y Logica [Bar93, Mit96, SK95].Ha sido probado que el calculo λ es incompleto [Bar93, Cut80, SK95], peropuede representar todas las funciones computables [Bar93, Cut80].

El modelo original del calculo λ representa funciones que no tienen alguntipo en particular, dada la naturaleza de esta teorıa para representar funcionescomputables y su consecuente utilidad para el estudio de los lenguajes deprogramacion, fue necesario crear un modelo que representara funciones contipos.

Este capıtulo presenta los dos modelos de calculo λ, el calculo λ tipificadoy el calculo λ no tipificado.

1.1 Calculo lambda no tipificado

En esta seccion se describen los elementos necesarios del calculo λ para larepresentacion de funciones sin tipos. Un termino−λ es un termino del calculoλ y se define a continuacion.

Definicion 1. El conjunto de terminos−λ Λ, esta construido a partir de unconjunto infinito de variables V = {v, v′, v′′, . . .} de esta manera:

x ∈ V ⇒x ∈ Λ,

M, N ∈ Λ ⇒(M N) ∈ Λ,

M ∈ Λ, x ∈ V ⇒(λx.M) ∈ Λ.

1

Page 14: barcenas.pdf

2 CAPITULO 1. CALCULO LAMBDA

Convencion 1. 1. x, y, z, . . . denotan variables arbitrarias;M, N, L, . . . denotan terminos−λ arbitrarios.

2. Usaremos F M1 . . .Mn en lugar de (. . . ((F M1)M2) . . .Mn) yλx1 . . . xn.M en lugar de (λx1(λx2(. . . (λxn.M) . . .))).

3. Los parentesis mas externos no se escriben.

Definicion 2. 1. El conjunto de las variables libres FV (M) de M ∈ Λ,se define mediante induccion por:

FV (x) = {x};

FV (M N) = FV (M) ∪ FV (N);

FV (λx.M) =FV (M) − {x}

2. M es un termino−λ cerrado (o combinador), si FV (M) = �. El con-junto de terminos−λ cerrados es denotado por Λ0.

3. La sustitucion de una variable (libre) por una expresion en otra ex-presion lambda se denota E[v → E1] y se define por:

v[v → E1] = E1 para cualquier variable v

x[v → E1] = x para cualquier variable x 6= v

c[v → E1] = c para cualquier constante c

(E E2)[v → E1] = ((E[v → E1])(E2[v → E1]))

(λv.E)[v → E1] = (λv.E)

(λx.E)[v → E1] = λx.(E[v → E1]) cuando x 6= v y x 6∈ FV (E1)

(λx.E)[v → E1] = λz.(E[x → z][v → E1])

cuando x 6= v y x ∈ FV (E1),

donde z 6= v y z 6∈ FV (E E1)

donde E, E1, E2 ∈ Λ.

Definicion 3. Sean v, w, E ∈ Λ y w 6∈ FV (E). Entonces

λv.E =α λw.E[v → w]

Page 15: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 3

Notacion 1. M ≡ N denota que M y N son el mismo termino o que puedenser obtenidos uno del otro por medio del renombramiento de variables aco-tadas.

Lema 1 (Lema de sustitucion). Sean M, N, L ∈ Λ. Supongase x 6≡ y yx 6∈ FV (L). Entonces

M [x → N ] [y → L] ≡ M [y → L] [x → N [y → L]] .

Este lema se puede demostrar mediante induccion sobre la estructura deM .

A continuacion se presenta el calculo λ como una teorıa formal de ecua-ciones entre terminos−λ.

Definicion 4. Sean v, E, E1 ∈ Λ. Entonces,

(λv.E)E1 = E[v → E1]

Observacion:E1 = E2 implica:

• E1 E = E2 E

• E E1 = E E2

• λx.E1 = λx.E2

Hasta aquı se ha mostrado una definicion formal del calculo λ sin tipos,a continuacion se presentan los elementos necesarios para poder modelarrecursion por medio del calculo λ.

Teorema 1 (Teorema del punto fijo). 1. ∀F ∈ Λ ∃X ∈ Λ : F X =X.

2. Existe un combinador de punto fijo

Y ≡ λf.(λx.f(x x))(λx.f(x x))

tal que

∀F ∈Λ : F (Y F ) = Y F.

Page 16: barcenas.pdf

4 CAPITULO 1. CALCULO LAMBDA

Demostracion.

1. Sean W ≡ λx.F (xx) y X ≡ WW. Entonces X ≡ WW ≡ (λx.F (xx))W =F (WW ) ≡ FX

2. Por la prueba de (1). Notese que

Y F = (λx.F (x x))(λx.F (x x)) ≡ X

y por (1)

FX = F (Y F ) = X = Y F. �

Definicion 5. Sea C [x1, x2, . . . , xi] un termino C ∈ Λ, xi ∈ Λ variableslibres contenidas en C y i ∈ N.

Corolario 1. Dado un termino C ≡ C [f, x], entonces

∃F ∈Λ∀X∈Λ : F X = C [F, X] .

Donde C[F, X] es el resultante de la sustitucion C [F → f ] [X → x].

Demostracion. De hecho, se puede construir F suponiendo que tiene lapropiedad requerida y calculandola hacia atras:

∀X∈Λ : F X = C [F, X]

⇐ F x = C [F, x]

⇐ F = λx.C [F, x]

⇐ F = λ(λf x.C [f, x])F

⇐ F ≡ Y (λf x.C [f, x]). �

1.1.1 Definibilidad

En esta seccion se mostrara que todas las funciones computables son definiblesen el calculo λ, para tal fin, comenzaremos definiendo numerales y funcionesnumericas sobre ellos.

Definicion 6. 1. F n(M) con n ∈ N y F, M ∈ Λ, se define medianteinduccion por:

F 0(M) ≡ M ;

F n+1(M) ≡ F (F n(M)).

Page 17: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 5

2. Los numerales Church c0, c1, . . . son definidos:

cn ≡ λf x.fn(x).

Para representar las operaciones de adicion, multiplicacion y exponen-ciacion sobre los numerales requerimos del Lema 2 y la Proposicion 1.

Lema 2. Sean c un numeral, n, m ∈ N y x, y ∈ Λ entonces:

1. (cnx)m(y) = xn∗m(y);

2. (cn)m(x) = c(nm)(x), para m > 0.

Prueba.

1. Si m = 0 entonces (1) se cumple. Sea m = k + 1 entonces

(cnx)k+1(y) = cnx((cnx)k(y))

=HI cnx(xn∗k(y))

= xn(xn∗k(y))

= xn+n∗k(y)

= xn∗(k+1)(y).

2. Si m = 1, entonces (2) se cumple. Si m = k + 1 entonces

ck+1n (x) = cn(ck

n(x))

=HI cn(c(nk)(x))

= λy.(c(nk)(x))n(y)

=(1) λy.xnk∗n(y)

= c(nk+1)x. �

La siguiente proposicion nos proporciona una representacion de las funcionesde suma, multiplicacion y exponenciacion en los numero naturales.

Proposicion 1 (J. B. Rosser). Sean

A+ ≡ λxypq.xp(ypq);

A∗ ≡ λxyz.x(yz);

Aexp ≡ λxy.yx.

Entonces ∀n, m ∈ N:

Page 18: barcenas.pdf

6 CAPITULO 1. CALCULO LAMBDA

1. A+cncm = cn+m.

2. A∗cncm = cn.m.

3. Aexpcncm = c(nm), excepto para m = 0

Prueba.

1. Por induccion sobre m.

2. Por (1) del lema anterior.

3. Por (2) del lema anterior tenemos para m > 0

Aexpcncm = cmcn = λx.cmn (x) = λx.c(nm)x = c(nm),

ya que λx.M x = M si M = λy.M ′ [y] y x 6∈ FV (M). De hecho

λx.M x = λx.(λy.M ′ [y])x

= λx.M ′ [x]

≡ λy.M ′ [x]

= M. �

A continuacion se presenta la representacion de los valores booleanos, unoperador condicional, ası como los pares ordenados dentro del calculo λ.

Definicion 7. 1. true ≡ λxy.x, false ≡ λxy.y.

2. Si B es un Booleano, es decir, un termino que es true o false, entonces

if B then P else Q

puede ser representado por BPQ. De hecho, truePQ = P y falsePQ =Q.

Definicion 8. Para M, N ∈ Λ se escribe

[M, N ] ≡ λz.z M N.

entonces

[M, N ] true = M

[M, N ] false = N

ası [M, N ] puede ser usado como un par ordenado.

Page 19: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 7

Definicion 9. 1. Una funcion numerica es un mapeo f : Np → N para

cualquier p.

2. Una funcion numerica f con p argumentos es llamada definible−λ sitiene algun combinador F

F cn1. . . cnp

= cf(n1,...,np)

∀n1, . . . , np ∈ N.

Definicion 10. 1. Las funciones iniciales son funciones numericas U ir, S

+, Zdefinidas:

U ir(x1, . . . , xr) = xi, 1 ≤ i ≤ r;

S+(n) = n + 1;

Z(n) = 0.

2. Sea P (n) una relacion numerica. Entonces

µm.P (m)

denota al ultimo numero m tal que P (m) se cumple, si existe esenumero, en otro caso es indefinida.

La clase R de funciones recursivas es la clase mas pequena de funcionesnumericas que contiene las funciones iniciales, y es cerrada bajo composicion,recursion primitva y minimilizacion [Bar93, Cut80].

Lema 3. Las funciones iniciales son definibles−λ.

Prueba. Si

U ip ≡ λx1 . . . xp.xi;

S+ ≡ λxyz.y(xyz);

Z ≡ λx.c0.

entonces U ip, S

+, Z son definibles−λ �

Definicion 11.

−→x = x1, x2, . . . , xi

donde x ∈ Λ y i ∈ N

Page 20: barcenas.pdf

8 CAPITULO 1. CALCULO LAMBDA

Lema 4. Las funciones definibles−λ son cerradas bajo composicion.

Prueba. Sean g, h1, . . . , hm definidas−λ por G, H1, . . . , Hm respectiva-mente. Entonces

f(−→n ) = g(h1(−→n ), . . . , hm(−→n ))

es definida−λ por

F ≡ λ−→x .G(H1−→x ) . . . (Hm

−→x ) �

Lema 5. Las funciones definibles−λ son cerradas bajo recursion primitiva.

Prueba. Sea f definida por

f(0,−→n ) = g(−→n ) f(k + 1,−→n ) = h(f(k,−→n ), k,−→n )

donde g, h son definidas−λ por G, H respectivamente, y sea

T ≡ λp.[

S+(p true), H(p false)(p true)]

.

Entonces para todo k se tiene

T[

ck, cf(k)

]

=[

fS+ck, Hcf(k)ck

]

=[

ck+1, cf(k+1)

]

.

Por induccion sobre k se tiene que

[

ck, cf(k)

]

= T k[

c0, cf(0)

]

.

Por lo tanto

cf(k) = ckT[

c0, cf(0)

]

false,

y f puede ser definida−λ por

F ≡ λk.kT [c0, G] false. �

Lema 6. Las funciones definibles−λ son cerradas bajo minimalizacion.

Page 21: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 9

Prueba. Sea f definida f(−→n ) = µm [g(−→n , m) = 0] , donde −→n =n1, . . . , nk y g es definida−λ por G. Sea

zero ≡ λn.n(true false)true.

Entonces

zero c0 = true,

zero cn+1 = false.

Por el Corolario 1 anterior sabemos que existe un termino H tal que

H−→n y = if (zero(G−→n y)) then y else H−→n (S+y).

Sea F = λ−→n .H−→x c0. Entonces F define−λ a f :

Fc−→x = Hc−→n c0

= c0, si Gc−→n c0 = c0,

= Hc−→n c1 en otro caso;

= c1, si Gc−→n c1 = c0,

= Hc−→n c2 en otro caso;

= c2, si . . .

= . . .

donde c−→n = cn1. . . cnk

Dado que las funciones numericas son definibles−λ y que la funcionesdefinibles−λ son cerradas bajo minilizacion, recursion y composicion, en-tonces:

Teorema 2. Todas la funciones recursivas son definibles−λ.

La prueba de este teorema, es inductiva de los Lemas 3-6.

1.1.2 Reduccion

La reduccion de terminos−λ es util para un analisis de convertibilidad. Segunel Teorema de Church-Roser, dos terminos son convertibles, si hay un terminoal cual los dos primeros se reducen. En muchos casos la inconvertibilidad dedos terminos puede ser probada mostrando que estos no se reducen a untermino comun.

Page 22: barcenas.pdf

10 CAPITULO 1. CALCULO LAMBDA

Definicion 12. • Una relacion binaria R en Λ es compatible si

M R N ⇒ (ZM) R (ZN),

(MZ) R (NZ) y

(λx.M) R (λx.N).

• Una relacion de congruencia en Λ es una relacion de equivalencia com-patible.

• Una relacion de reduccion en Λ es una relacion compatible, reflexiva ytransitiva.

Definicion 13. Las relaciones binarias →β, �β y =β en Λ estan definidas:

1. (a) (λx.M)N →β M [N → x];

(b) M →β N ⇒ ZM →β ZN, MZ →β NZ y λx.M →β λx.N.

2. (a) M �β M ;

(b) M →β N ⇒ M �β N ;

(c) M �β N, N �β L ⇒ M �β L.

3. (a) M →β N ⇒ M =β N ;

(b) M =β N ⇒ M =β N ;

(c) M =β N, N =β L ⇒ M =β L.

1. Si M →β N se dice que M se reduce−β a N en un paso.

Notese que por definicion →β es compatible.

2. Si M �β N se dice que M se reduce−β a N .

La relacion �β es la cerradura transitiva reflexiva de →β y por lo tantouna relacion de reduccion.

3. Si M =β N se dice que M es convertible−β a N .

La relacion =β es una relacion de congruencia.

Definicion 14. • Un redex−β es un termino de la forma (λx.M)N.

Page 23: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 11

• Un termino−λ t esta en forma−β normal (β−nf) si t no tiene unredex−β como subexpresion.

• Un termino M tiene una forma−β normal si M =β N y N esta enβ−nf , para algun N .

Lema 7. Sean M, M ′, N ∈ Λ.

1. Suponga que M esta en β−nf. Entonces

M �β N ⇒ N ≡ M.

2. Si M →β M ′, entonces M [N → x] →β M ′[N → x].

Demostracion.

1. Si M es una β−nf , entonces M no contiene un β−redex. EntoncesM 6→β N. Por lo tanto si M �β N , entonces esto debe ser porqueM ≡ N.

2. Por induccion en la generacion de →β . �

Algunas consecuencias del Teorema de Confluencia son las siguientes:

• El calculo λ es consistente, i.e, λ 6`true=false.

• No todos terminos−λ tienen forma normal, por ejemplo, (λx.xx)(λx.xx).

• El orden de reduccion β no es unico, pero sin importar el orden, siemprese llega a una forma normal unica, si es que exıste.

La justificacion de estas consecuencias se presentan a continuacion.

Para la demostracion del Teorema de Confluencia es necesario probar que:

M −−−→β

N2

β

y

y

β

N1 −−−→β

N3

donde la reduccion de N1 a N3, de M a N2 y de N2 a N3 pueden ser en unoo mas pasos. Ademas M, N1, N2, N3 ∈ Λ.

Page 24: barcenas.pdf

12 CAPITULO 1. CALCULO LAMBDA

La idea intuitiva de la demostracion de este Lema es la suguiente: seaM →β N1 una reduccion de un paso resultante del cambio de un redex−βR en M a su contraccion R′ en N1. Si hacemos un analisis minucioso deque pasa con R durante la reduccion M �β N2, entonces reduciendo todoslos residuos de R en N2, el termino N3 puede encontrarse. Con el fin dehacer este analisis, un conjunto extendido λ ⊇ λ y una reduccion β sondefinidas. El subrayado es usado en una forma similar al trazado de isotoposradioactivos en la Biologıa experimental [Bar93].

Definicion 15. • Λ es un conjunto de terminos, definido inductivamentea continuacion:

x ∈ V ⇒ x ∈ Λ;

M, N ∈ Λ ⇒ (MN) ∈ Λ;

M ∈ Λ, x ∈ V ⇒ (λx.M) ∈ Λ;

M, N ∈ Λ, x ∈ V ⇒ ((λx.M)N) ∈ Λ.

• Las reducciones subrayadas ( →β , �β) estan definidas con las si-guientes reglas de contraccion:

(λx.M)N → M [N → x],

(λx.M)N → M [N → x].

Entonces → es extendida a la relacion compatible →β y �β es la cerra-dura reflexiva transitiva de →β

• Si M ∈ Λ, entonces | M |∈ Λ es obtenido a partir de M dejando fueratodos los subrayados. Por ejemplo, | (λx.x)((λx.x)(λx.x)) ||≡| (||).

Page 25: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 13

• Sustitucion para Λ se define por:

v[v → E1] = E1 para cualquier variable v

x[v → E1] = x para cualquier variable x 6= v

c[v → E1] = c para cualquier constante c

(E E2)[v → E1] = ((E[v → E1])(E2[v → E1]))

(λv.E)[v → E1] = (λv.E)

(λx.E)[v → E1] = λx.(E[v → E1]) cuando x 6= v y x 6∈ FV (E1)

(λx.E)[v → E1] = λz.(E[x → z][v → E1])

cuando x 6= v y x ∈ FV (E1),

donde z 6= v y z 6∈ FV (E E1)

((λx.M)N)[L → y] ≡ (λx.M [L → y])(N [L → y])

donde E, E1, E2 ∈ Λ.

Definicion 16. Un mapeo ϕ : Λ → Λ se define mediante induccion por:

ϕ(x) ≡ x;

ϕ(MN) ≡ ϕ(M)ϕ(N), si M, N ∈ Λ;

ϕ(λx.M) ≡ λx.ϕ(M);

ϕ((λx.M)N) ≡ ϕ(M)[ϕ(N) → x].

En otras palabras, el mapeo ϕ contrae todos los redex−β que son sub-rayados, de adentro hacia afuera.

Notacion 2. Si | M |≡ N o ϕ(M) ≡ N , entonces se denotaran:

M −−−→||

N o M −−−→ϕ

N.

Lema 8.

M ′ −−−→β

N ′

||

y

y

||

M −−−→β

N

donde la reduccion de M ′ a N ′ puede ser en uno o mas pasos, al igual que lade M a N . Ademas, M ′, N ′ ∈ Λ y M, N ∈ Λ.

Page 26: barcenas.pdf

14 CAPITULO 1. CALCULO LAMBDA

Demostracion. Supongase que M →β N. Entonces N es obtenido por lacontraccion de un β−redex en M y N ′ puede ser obtenido por la contracciondel correspondiente β−redex en M ′. �

Lema 9. Sean M, M ′, N, L ∈ Λ. Entonces

1. Supongase x 6≡ y y x 6∈ FV (L). Entonces

M [N → x][L → y] ≡ M [L → y][N → x[L → y]]

2.

ϕ(M [N → x]) ≡ ϕ(M)[ϕ(N) → x]

3.

M −−−→β

N

ϕ

y

y

ϕ

ϕ(M) −−−→β

ϕ(N)

donde la reduccion de M a N puede ser en uno o mas pasos, al igualque de ϕ(M) a ϕ(N). Ademas M, N ∈ Λ.

Demostracion.

1. Claramente por induccion sobre la estructura de M , (1) se cumple.

2. Por induccion en la estructura de M , usando (1) en el caso M ≡(λy.P )Q. La condicion de (1) puede ser asumida para sostener la con-vencion acerca de la variables libres.

3. Por induccion en la generacion de �β, usando (2). �

Lema 10.

M −−−→||

N

ϕ

y

y

β

L L

donde la reduccion de N a L puede ser en uno o mas pasos. Ademas M ∈Λ, N, L ∈ Λ.

Page 27: barcenas.pdf

1.1. CALCULO LAMBDA NO TIPIFICADO 15

La demostracion es por induccion sobre la estructura de M .

Lema 11.

M −−−→β

N2

β

y

y

β

N1 −−−→β

N3

donde la reduccion de N1 a N3, de M a N2 y de N2 a N3 pueden ser en unoo mas pasos. Ademas M, N1, N2, N3 ∈ Λ.

Demostracion. Si N1 es el resultado de la contraccion de la ocurrenciaredex (λx.P )Q en M , y si M ′ ∈ Λ puede ser obtenida de M reemplazandoR por R′ ≡ (λx.P )Q. Entonces | M ′ | y ϕ(M ′) ≡ N1. Por transitividad delos lemas anteriores queda probado este lema. �

Teorema 3 (Teorema de Confluencia). Si M �β N1, M �β N2,entonces para algun N3 se tiene que N1 �β N3 y N2 �β N3.

Demostracion. Si M �β N1, entonces M ≡ M0 →β M1 →β . . . Mn ≡N1. Entonces la propiedad Church-Roser (este teorema) concuerda con ellema anterior y el siguiente diagrama:

M −−−→ N2

y

y

M1 −−−→ .

y

y

. −−−→ .

......

−−−→...

...

. −−−→ .

y

y

N1 −−−→ .

Page 28: barcenas.pdf

16 CAPITULO 1. CALCULO LAMBDA

1.2 Calculo Lambda tipificado

Exıste dos tipos de sistemas en el calculo λ con tipos: el sistema Curry y elsistema Church [Bar93].

El sistema Curry [Bar93], llamado sistema de asignacion de tipos, noexpresa sintacticamente los tipos. El tipo o tipos de cada termino es deducidoa traves de su contexto, cuando es posible, ya que este proceso es indecidible[Bar93].

El sistema Church [Bar93], hace referencia explıcita y sintactica al tipounico de cada termino.

A continuacion se muestra un ejemplo del mismo termino en los dos difer-entes sistemas:

`Curry (λx.x) : (σ → σ),

`Church (λx : σ.x) : (σ → σ).

Dado que el lenguaje PCF esta basado en el calculo λ con tipo unico paracada termino [HO95, Mit96], se presenta en esta seccion solamente el sistemaChurch.

1.2.1 Sistema Church

Definicion 17. Sea T un conjunto de tipos. El conjunto de terminos−λ detipo T, llamados pseudoterminos, se escriben ΛT y se definen:

ΛT = V | ΛTΛT | λx : T.ΛT

donde V denota el conjunto de variables.

Definicion 18. El calculo lambda tipificado Church−λ → se define mediante:

1. El conjunto de tipos T = Type(λ →) es definido por

T = V | T → T.

Las variables para tipos V se denotan diferente que las variables paraterminos−λ V . Por ejemplo V = nat, bool y V = x, y, . . .

2. En una declaracion de la forma M : σ con M ∈ ΛT y σ ∈ T. El tipo σes el predicado y el termino M es el sujeto de la declaracion.

Page 29: barcenas.pdf

1.2. CALCULO LAMBDA TIPIFICADO 17

3. Una base es un conjunto de declaraciones con solamente variables dis-tintas como sujetos.

Definicion 19. Una declaracion M : σ es derivable de la base Γ, escritaΓ ` M : σ, si M : σ puede ser producida usando las siguientes reglas:

Γ ` x : σ, si (x : σ) ∈ Γ;

Γ ` M : (σ → τ) Γ ` N : σ

Γ ` (MN) : τ;

Γ, x : σ ` M : τ

Γ ` (λx : σ.M) : (σ → τ).

Definicion 20. El conjunto de terminos−λ →, escrito Λ(λ →), es definidopor

Λ(λ →) = {M ∈ ΛT | ∃Γ, σ Γ ` M : σ}

Definicion 21. Las relaciones binarias →β, �β y =β en ΛT son generadaspor la siguiente regla de contraccion

(λx : σ.M)N → M [N → x]

El teorema de Church-Rosser tambien se cumple para el sistema Church,se omite la demostracion dada la similitud a la expuesta para el calculo λ notipificado.

El calculo λ tipificado conserva la mayorıa de la caracterısticas del calculoλ no tipificado. A continuacion mostramos algunas de ellas, ası como unanueva, que es la unicidad de tipos.

Proposicion 2 (Lema de base). Sea Γ una base.

1. Si Γ′ ⊇ Γ es otra base, entonces Γ ` M : σ ⇒ Γ′ ` M : σ.

2. Γ ` M : σ ⇒ FV (M) ⊆ dom(Γ)

3. Γ ` M : σ ⇒ Γ − FV (M) ` M : σ

Demostracion.

1. Por induccion en la derivacion de M : σ. Se presentan los siguientescasos:

Page 30: barcenas.pdf

18 CAPITULO 1. CALCULO LAMBDA

(a) M : σ es x : σ y es elemento de Γ. Entonces tambien x : σ ∈ Γ′ ypor consiguiente Γ′ `: σ.

(b) M : σ es (M1M2) : σ seguido directamente de M1 : (τ → σ)y M2 : τ para algun τ . Por hipotesis de induccion se tiene queΓ′ ` M1 : (τ → σ) y Γ′ ` M2 : τ . De ahi que Γ′ ` (M1M2) : σ.

(c) M : σ es (λx.M1) : (σ1 → σ2) seguido directamente de Γ, x :σ1 ` M1 : σ2. Suponiendo que la variable acotada x no ocurreen dom(Γ′). Entonces Γ′, x : σ1 es tambien una base, por la cualΓ, x : σ1. Por lo tanto por HI se tiene que Γ′, x : σ1 ` M1 : σ2 yen consecuencia Γ′ ` (λx.M1) : (σ1 → σ2).

2. Por induccion de la derivacion de M : σ. Solo se trata el caso M : σ es(λx.M1) : (σ1 → σ2) seguido directamente de Γ, x : σ1 ` M1 : σ2. Seay ∈ FV (λx.M1), entonces y ∈ FV (M1) y y 6≡ x. Por HI se tiene quey ∈ dom(Γ, x : σ1) y por lo tanto y ∈ dom(Γ)

3. Por induccion de la derivacion de M : σ. Solo se trata el caso M : σ es(M1M2) : σ seguido directamente de M1 : (τ → σ) y M2 : τ para algunτ . Por HI se tiene que Γ − FV (M1) ` M1 : (τ → σ) y Γ − FV (M2) `M2 : τ. Por (1) se tiene que Γ − FV (M1M2) ` (M1M2) : σ. �

Proposicion 3 (Lema de generacion). 1. Γ ` x : σ ⇒ (x : σ) ∈ Γ.

2. Γ ` M N : τ ⇒ ∃σ[Γ ` M : (σ → τ) y Γ ` N : σ]

3. Γ ` (λx : σ.M) : ρ ⇒ ∃τ [ρ = (σ → τ) y Γ, x : σ ` M : τ ]. �

La demostracion se hace por induccion sobre la longitud de la derivacion.

Proposicion 4 (Tipificacion de subterminos). Si M tiene un tipo, en-tonces todo subtermino de M tambien tiene un tipo.

La demostracion se hace por induccion en la generacion de M .

Proposicion 5 (Lema de sustitucion). 1. Γ ` M : σ ⇒ Γ[τ → α] `M [τ → α] : σ[τ → α].

2. Suponga Γ, x : σ ` M : τ y Γ ` N : σ. Entonces Γ ` M [N → x] : τ.

Prueba.

Page 31: barcenas.pdf

1.2. CALCULO LAMBDA TIPIFICADO 19

1. Por induccion en la derivacion de M : σ se cumple (1).

2. Por induccion en la generacion de Γ, x : σ ` M : τ se cumple (2).

Proposicion 6 (Teorema de la Reduccion del Sujeto). Sea M �β M ′.Entonces

Γ ` M : σ ⇒ Γ ` M ′ : σ

Demostracion. Por induccion en la generacion de �β. Supongase M ≡(λx.P )Q y M ′ ≡ P [Q → x]. Si

Γ ` (λx.P )Q : σ,

entonces

Γ ` (λx.P ) : (τ → σ) y Γ ` Q : τ.

Ademas

Γ, x : τ ` P : σ y Γ ` Q : τ

y por el lema anterior se tiene que

Γ ` P [Q → x] : σ �

Proposicion 7 (Teorema de Unicidad de Tipos). 1. Supongase Γ `M : σ y Γ ` M : σ′. Entonces σ ≡ σ′.

2. Supongase Γ ` M : σ, Γ ` M ′ : σ′ y M =β M ′. Entonces σ ≡ σ′

Prueba.

1. Por induccion en la estructura de M se cumple (1)

2. Por el Teorema Church-Rosser para ΛT, la proposicion anterior y (1). �

Page 32: barcenas.pdf

20 CAPITULO 1. CALCULO LAMBDA

Page 33: barcenas.pdf

Capıtulo 2

Lenguaje PCF

En este capıtulo se estudian las principales caracterısticas del LenguajePCF. La primera seccion presenta la sintaxis, en la siguiente se presentasu semantica desde distintas tecnicas, como son la semantica axiomatica,denotacional y operacional, con el objeto de establecer parametros para sucomparacion con la Semantica de Accion. A continuacion se exponen lasestrategias de reduccion para PCF, las cuales estan basadas en la ya expuestareduccion β.

El lenguaje funcional para Programar Funciones Computables llamadoPCF fue creado por Scott [HO95, Mit96], y es escencialmente el calculo λtipificado al estılo Church, aumentado por operadores basicos aritmeticos,condicionales y de punto fijo [HO95].

2.1 Sintaxis

Ya que PCF esta basado en el sistema Church, cada expresion debe tenerun tipo unico. Los tipos son nat, bool, function y producto cartesiano cuyosvalores son los numeros naturales, los valores booleanos, las funciones y lospares, respectivamente. El producto cartesiano de tipos σ y τ es escritoσ × τ. La notacion para el tipo de una funcion con dominio σ y rango τ esσ → τ.

La sintaxis abstracta de un lenguaje tiene que ver con la estructura com-posicional de las frases de los programas. A continuacion se describe lasintaxis abstracta de PCF [Mit96] usando una gramatica BNF:

21

Page 34: barcenas.pdf

22 CAPITULO 2. LENGUAJE PCF

〈σ exp〉 ::= 〈σ var〉|if 〈bool exp〉 then 〈σ exp〉 else 〈σ exp〉|

〈σ application〉|〈σ projection〉|〈σ fixed point〉

〈σ application〉 ::= 〈τ → σ exp〉〈τ exp〉

〈σ projection〉 ::= Proj1〈σ × τ exp〉|Proj2〈τ × σ exp〉

〈σ fixed point〉 ::= fixσ〈σ → σ exp〉

〈σ → τ exp〉 ::= λx : σ.〈τ exp〉

〈σ × τ exp〉 ::= 〈〈σ exp〉, 〈τ exp〉〉

〈bool exp〉 ::= true|false|Eq?〈nat exp〉〈nat exp〉

〈nat exp〉 ::= 0|1|2| . . . |〈nat exp〉 + 〈nat exp〉

Dada la naturaleza del calculo λ es posible hacer extensiones a la sintaxis dePCF sin alterar la escencia del mismo.

La recursion en PCF es posible gracias al siguiente axioma [Mit96]:

fixσ = λf : σ → σ.f(fixσf).

2.2 Semantica

La mayoria de los lenguajes de programacion tienen varias categorias sintacticas[Mit96]. Las dos caracterısticas que distınguen un programa de una formasintactica arbitraria son, que los programas no se refieren a variables sin aco-tar o sin declarar, y que los programas deben tener un tipo o forma apropiadaque produce un valor imprimible o un efecto observable.

En PCF, las dos categorıas sintacticas son los tipos y terminos. Losnumeros naturales nat y valores booleanos bool son observables, pero los va-lores nat → nat no lo son, esto es porque todas las funciones recursivas sondefinibles en PCF [Mit96].

Sea τ un tipo observable en PCF, entonces τ es nat o en caso contrarioes bool. Un programa PCF es un termino bien formado, cerrado y de tipoobservable. Un resultado es una forma normal cerrada de tipo observable.

La semantica de programas es una relacion entre los programas y susresultados [Mit96].

Page 35: barcenas.pdf

2.2. SEMANTICA 23

2.2.1 Semantica axiomatica

En forma general, una semantica axiomatica consiste de un sistema de prue-bas para deducir la propiedades de los programas. Estas propiedades puedenser ecuaciones, aserciones acerca de salidas de programas con determinadasentradas u otras propiedades. La semantica axiomatica de PCF esta basadaen ecuaciones [Mit96], y se presenta a continuacion.

Ecuaciones del sistema de pruebas para PCF

AxiomasIgualdad

(ref) M = M

Tipos nat y bool

(add) 0 + 0 = 0, 0 + 1 = 1, . . . , 3 + 5 = 8, . . .

(Eq?) Eq?n n = true, Eq?n m = false (m,n numerales distintos)

(cond) if true then M else N = M , if false then M else N = N

Pares

(proj) Proj1〈M, N〉 = M Proj2〈M, N〉 = N

(sp) 〈Proj1P,Proj2P 〉 = P

Binding

(α) λx : σ.M = λy : σ. [y → x] M y acotada en M

Funciones

(β) (λx : σ.M)N = [N → x] M

(η) λx : σ.M x = M , x acotada en M

Recursion

(fix) fixσ = λf : σ → σ.f(fixσf)

Page 36: barcenas.pdf

24 CAPITULO 2. LENGUAJE PCF

Reglas de InferenciaEquivalencia

(sim),(tran)M = N

N = M

M = N, N = P

M = P

Congruencia Tipos nat y bool

M = N, P = Q

M + P = N + Q

M = N, P = Q

Eq?M P = Eq?N Q

M1 = M2, N1 = N2, P1 = P2

if M1 then N1 else P1 =if M2 then N2 else P2

Pares

M = N

ProjiM = ProjiN

M = N, P = Q

〈M, P 〉 = 〈N, Q〉

Funciones

M = N

λx : σ.M = λx : σ.N

M = N, P = Q

M P = N Q

Si M = N , se escribe M =ax N .La semantica axiomatica fue la primera forma de interpretar el significado

de los lenguajes de programacion y a pesar de la elegancia y estetica de dichatecnica, esta presenta problemas de indecibilidad [HO95].

2.2.2 Semantica denotacional

No es de competencia de este trabajo el estudio de la extensa teorıa dela semantica denotacional, asi que, se presenta un bosquejo de esta teorıacon el unico fin de establecer parametros de comparacion entre las distıntassemanticas. Lease [Mit96, Ten76] para un estudio mas riguroso y formalacerca de la semantica denotacional.

La semantica denotacional de PCF asigna el valor de un numero naturalo un valor correspondiente a la no terminacion a cada expresion de tipo nat,un valor booleano o un valor correspondiente a la no terminacion a cada ex-presion de tipo bool, una funcion matematica a una expresion de tipo funciono un par de valores al tipo producto cartesiano. El valor matematico de una

Page 37: barcenas.pdf

2.2. SEMANTICA 25

expresion es llamado denotacion. Si un termino tiene variables libres, su de-notacion generalmente dependera de los valores asumidos por estas variables.

Para dar denotaciones a los terminos, primero se escoge un conjunto devalores para cada tipo. El conjunto de los valores matematicos de tipo natincluyen todos los numeros naturales y el sımbolo ⊥nat representando lano terminacion. Este valor es necesario ya que PCF puede representar to-das las funciones computables, y en consecuencia no todas estas funcionesterminan. El conjunto de denotaciones de tipo bool incluye true, false yel sımbolo de no terminacion ⊥bool. Los valores matematicos para el tipoproducto cartesiano (σ × τ) son pares ordenados. Los valores matematicosde tipo σ → τ son funciones de σ a τ .

Una vez elegido el conjunto de valores para cada tipo, se le asigna signifi-cado a los terminos por medio de la eleccion de un ambiente, el cual es unmapeo de las variables hacia los valores. Si x es una variables de tipo σ, yη es un ambiente, entonces η(x) deber ser el valor matematico de tipo σ. Sedefine el significado de [[M ]]η de termino M en el ambiente η inductivamente,en el sentido acostumbrado en la logica de primer orden. Especıficamente,el significado de [[x]]η el valor dado a la variable x por el ambiente llamadoη(x). El significado de una aplicacion [[MN ]] es obtenido por la aplicacion dela funcion [[M ]]η que denota a M al argumento [[N ]]η que denota a N . Unapropiedad importante es que el significado del termino de tipo σ siempre vaa tener valores matematicos asociados con su tipo. Por lo tanto, en el casode un aplicacion MN , por ejemplo, las reglas de tipificacion garantizan quela denotacion de M sera un funcion, y que la denotacion de N sera un valoren el dominio de M . En este sentido, las reglas de tipificacion sintacticasde PCF evitan las posibles complicaciones en la semantica denotacional dellenguaje.

La semantica denotacional es composicional, lo cual significa que el sig-nificado de cualquier expresion esta determinado por el significado de sussubexpresiones. Por ejemplo:

[[if B then M else N ]]η =

[[M ]]η si [[B]]η es true

[[N ]]η si [[B]]η es false

⊥ en otro caso

donde ⊥ representa cuando la evaluacion no termina. Una consecuenciainmediata de la forma composicional es que si B ′, M ′ y N ′ tienen las misma

Page 38: barcenas.pdf

26 CAPITULO 2. LENGUAJE PCF

denotaciones que B, M y N , respectivamente, entonces

[[if B then M else N ]]η = [[if B′ then M ′ else N ′]]η

La razon por la cual estas dos expresiones son equivalentes es porque el signifi-cado de la expresion condicional if B then M else N no depende de factorescomo la forma sintactica de B, M y N , sino de sus significado semantico.

Si M produce N a traves de la semantica denotacional, se escribe M =den

N .

Proposicion 8 ([Mit96]). Sea M un termino de PCF. Si M =den N ,entonces M =ax N.

2.2.3 Semantica operacional

Una semantica operacional puede ser dada en varias formas. La repre-sentacion matematica mas comun son los sistemas de pruebas, ya sea paradeducir un resultado final de evaluacion o para transformar una evaluacion atraves de una secuencia de pasos. Una alternativa que puede proveer un ideamas clara en la implementacion practica, es la definicion de una maquinaabstracta, la cual es una computadora teorica que evalua programas a travesde una serie de maquinas de estados. Las representaciones mas practicas dela semantica operacional son los compiladores y los interpretes simbolicos.

Axiomas de reduccion para PCF

Tipos nat y bool

(add) 0 + 0 → 0, 0 + 1 → 1, . . . , 3 + 5 → 8, . . .

(Eq?) Eq?n n → true, Eq?n m → false n, m numerales distintos

(cond) if true then M else N → M , if false then M else N → N

Pares σ × τ

(proj) Proj1〈M, N〉 → M Proj2〈M, N〉 → N

Renombramiento de variables acotadas

(α) λx : σM = λy : σ. [y → x] M, con y acotada en M

Page 39: barcenas.pdf

2.3. REDUCCION 27

Funciones (σ → τ)

(β) (λx : σ.M)N → [N → x] M

Recursion

(fix) fixσ → λf : σ → σ.f(fixσf)

Los axiomas de reduccion estan escritos con el sımbolo → en lugar de=, para dar enfasis a la direccion de la reduccion. Intuitivamente se diceque, M → N significa que con una evaluacion en un solo paso, la expresionM puede ser transformada a la expresion N . Se define una funcion parcialde evaluacion en el sistema de reduccion por eval(M) = N si M puede serreducida a la forma normal N en cero o mas pasos.

Si M produce N aplicando cualquiera de los axiomas de reduccion, seescribe M =op N.

Proposicion 9 ([Mit96]). Sea M un termino de PCF. Si M =op N , en-tonces M =den N .

2.3 Reduccion

Definicion 22. Sea PCF el conjunto de terminos de PCF.

Definicion 23. Sea A un conjuto de reglas de reduccion, sea a ∈ A una reglade reduccion y M ∈ PCF . Si M se reduce a N aplicando una sola vez laregla de reduccion a se escribe M →a N o M → N. Notese que N ∈ PCFtambien.

Definicion 24. Sea M ∈ PCF . Si (M → M ′ y M ′ → N) o M �α N ,entonces M � N .

PCF hereda [Mit96] del calculo λ:

• Confluencia.

• Consistencia.

Page 40: barcenas.pdf

28 CAPITULO 2. LENGUAJE PCF

Una estrategia de reduccion es una funcion parcial F de terminos aterminos, con la propiedad de que si F (M) = N , entonces M → N . Estafuncion es llamada estrategia ya que la funcion puede ser usada escogiendoalguna de las varias reducciones posibles. Para cualquier estrategia F sedefine una funcion parcial de evaluacion evalF : PCF → PCF en las expre-siones PCF.

Definicion 25. Sean F : PCF → PCF una funcion parcial y M ∈ PCF .Si F (M) = N ⇒ M → N.

Definicion 26. Sea evalF : PCF → PCF .

evalF (M) =

{

M si F (M) no esta definida

N si F (M) = M ′ y evalF (M ′) = N

La funcion de evaluacion evalF es el equivalente matematico de un interpretedeterminıstico que repite pasos de reduccion, siguiendo la estrategia F , hastaque esta estrategia ya no puede ser aplicada mas.

2.3.1 Reduccion mas-izquierda

La relacion de reduccionleft→ se define [Mit96]:

Axiomas

M → N

Mleft→ N

donde M → N es un axioma de reduccion

Reglas para subterminosnat y bool

Mleft→ M ′

M + Nleft→ M ′ + N

Mleft→ M ′

N + Mleft→ N + M ′

donde N esta en forma normal

Mlef→ M ′

Eq?M Nleft→ Eq?M ′ N

Mlef→ M ′

Eq?N Mleft→ Eq?N M ′

donde N esta en forma normal

Mleft→ M ′

if M then N else Plef→ if M ′ then N else P

Page 41: barcenas.pdf

2.3. REDUCCION 29

Nleft→ N ′

if M then N else Plef→ if M then N ′ else P

donde M esta en forma normal

Pleft→ P ′

if M then N else Plef→ if M then N else P ′

donde M, N estan en forma normal

Pares

Mleft→ M ′

〈M, N〉lef→ 〈M ′, N〉

Nleft→ N ′

〈M, N〉left→ 〈M, N ′〉

donde M esta en forma normal

Mleft→ M ′

ProjiMleft→ ProjiM

Funciones

Mleft→ M ′

M Nleft→ M ′ N

Nleft→ N ′

M Nleft→ M N ′

donde M esta en forma normal

Mleft→ M ′

λx : σ.Mleft→ λx : σ.M ′

Proposicion 10 ([Mit96]). Sean M, N ∈ PCF y N en forma normal.

(Mleft→ N) ⇔ (M � N).

Proposicion 11 ([Mit96]). Sean M, N ∈ PCF. y N en forma normal.

(evalleft(M) = N) ⇔ (M � N)

Como su nombre lo indica, la reduccion mas-izquierda, toma como ordende reduccion las subexpresiones que estan mas a la izquierda de la expresionen cuestion. Es importante resaltar que la reduccion mas-izquierda terminade aplicarse hasta que se llega a una forma normal, en caso de haberla.

Page 42: barcenas.pdf

30 CAPITULO 2. LENGUAJE PCF

2.3.2 Reduccion floja

Las proposiciones 10 y 11 solo contemplan terminos cerrados de tipo observ-able. Si solo contemplamos terminos de tipo observable para las reducciones,la estrategia resultante es la reduccion floja, la cual omite la reduccion demuchos subterminos.

La relacion de reduccionlazy→ se define [Mit96]:

AxiomasM → N

Mlazy→ N

M → N es un axioma de reduccion

Reglas para los subterminosnat y bool

Mlazy→ M ′

M + Nlazy→ M ′ + N

Mlazy→ M ′

n + Mlazy→ n + M ′

donde n es un numeral

Mlazy→ M ′

Eq?M Nlazy→ Eq?M ′ N

Mlazy→ M ′

Eq?n Mlazy→ Eq?n M ′

donde n es un numeral

Mlazy→ M ′

if M then N else Plazy→ if M ′ then N else P

Pares

Mlazy→ M ′

ProjiMlazy→ ProjiM

Funciones

Mlazy→ M ′

M Nlazy→ M ′ N

Proposicion 12 ([Mit96]). Sea M ∈ PCF y (M 6= λx : σM1 o M 6=〈M1, M2〉).

(Mlazy→ N) ⇔ (

left→).

Corolario 2 ([Mit96]). Sean P un programa PCF y R un resultado(formanormal cerrada del mismo tipo).

(Plazy� R) ⇔ (P

left� R)

Page 43: barcenas.pdf

2.3. REDUCCION 31

2.3.3 Reduccion voraz

Como la reduccion floja, la reduccion voraz solo produce numerales o booleanosconstantes de un programa completo(cerrado), y no produce formas normaleso terminos abiertos completamente reducidos que pueden tener variables li-bres.

V es un valor si V es una constante, una variable, una abstraccion lambdao un par de valores.

Se define la funcion parcialeager→ con domino y contradominio en PCF:

Axiomas

(λx : σM)Veager→ [V/x]M donde V es un valor

Proji〈V1, V2〉eager→ Vi donde i = 1, 2 y V1, V2 son valores,

f ixλ→τVeager→ V (delayσ→τ [fixσ→τV ]) donde V es un valor

0 + 0eager→ 0, 0 + 1

eager→ 1, . . . , 3 + 5

eager→ 8, . . .

Eq?nneager→ true, Eq?nm

eager→ false donde n, m son numerales distintos

if true then M else Neager→ M , if false then M else N

eager→ N

Reglas para los subterminosnat

Meager→ M ′

M + Neager→ M ′ + N

Meager→ M ′

n + Meager→ n + M ′

donde n es un numeral

bool

Meager→ M ′

Eq?M Neager→ Eq?M ′ N

Meager→ M ′

Eq?n Meager→ Eq?n M ′

donde n es un numeral

Meager→ M ′

if M then N else Peager→ if M ′ then N else P

Pares

Meager→ M ′

〈M, N〉eager→ 〈M ′, N〉

Neager→ N ′

〈V, N〉eager→ 〈V, N ′〉

donde V es un valor

Page 44: barcenas.pdf

32 CAPITULO 2. LENGUAJE PCF

Meager→ M ′

ProjiMeager→ ProjiM

Funciones

Meager→ M ′

M Neager→ M ′ N

Neager→ N ′

V Neager→ V N ′

V es un valor

con

delayσ→τ [M ]def= λx : σ.Mx x no libre en Mσ→τ

Ya que la funcioneager→ elige un termino solo si este no es un valor, entonces

se define:

evalV (M) =

{

M si M es un valor

N si Meager→ M ′ y evalV (M ′) = N

Existen dos razones para implementar la reduccion eager en lugar de lamas-izquierda en la practica [Mit96]. La primera es que incluso para lengua-jes puramente funcionales como PCF, la implementacion de la reduccion mas-izquierda es menos eficiente. La razon de esta ineficiencia es que cuando unargumento como f x tiene que ser pasado a una funcion g, es necesario pasarun apuntador al codigo para f guardarlo en un registro de ambiente lexicoapropiado. Como resultado, existe un costo elevado en la implementaciondel llamado de funciones. Es mas simple llamar a f con el argumento xe inmediatamente pasar el resultado de esta evaluacion a g. La segundarazon es que la implementacion de la evaluacion mas-izquierda conlleva efec-tos secundarios. Como es ejemplificado por los muchos artificios utilizadosen Algol 60, la combinacion de la evaluacion mas-izquierda y la asignacion escon frecuencia muy confusa. Ademas de los efectos secundarios, la evalucionmas-izquierda no coincide con la evaluacion no-determinista y paralela, yaque el orden en que la asignaciones a una variable son hechas generalmenteafectan la salida del programa. No hay garantıa de que en diferentes ordenesde evaluacion resulten en la misma salida. Ya que la mayoria de los lengua-jes hacen uso de la asignacion, muchas de las ventajas de las reduccionesmas-izquierda o floja son perdıdas.

Page 45: barcenas.pdf

Capıtulo 3

Semantica de Accion

La semantica de accion (AS) fue creada por Mosses [Mos96], con el fin deresolver los problemas pragmaticos de la semantica denotacional [SK95].AS utiliza ecuaciones semanticas para dar definiciones inductivas de fun-ciones composicionales semanticas que mapean arboles sintacticos a entidadessemanticas.

Las entidades semanticas utilizadas en AS son: acciones, datos y pro-ductores. Las acciones representan el comportamiento computacional de losprogramas. La ejecucion de una accion, la cual puede ser parte de otra accion,solo puede tener uno de los siguientes estados finales [Mos96]:

• Completes: correspondiente a la terminacion normal;

• Escapes: correspondiente a una terminacion no normal;

• Fails: correspondiente al abandono de la actual alternativa;

• Diverges: correspondiente a la no terminacion.

Dependiendo de la clase de informacion procesada, las acciones son clasifi-cadas en distintas facetas:

• Faceta funcional: cuando la accion procesa informacion temporal;

• Faceta declarativa: cuando la accion procesa informacion de ambito;

• Faceta basica: cuando la accion especifica flujos de control.

33

Page 46: barcenas.pdf

34 CAPITULO 3. SEMANTICA DE ACCION

Los lenguajes puramente funcionales solamente manejan las facetas basica,funcional y declarativa, pero exısten otras [Mos96, SK95] presentes en losdistıntos paradigmas de programacion tales como:

• Faceta imperativa: cuando la accion procesa informacion estable;

• Faceta comunicativa: cuando la accion procesa informacion perma-nente.

La informacion procesada por las acciones es llamada Datos, y es clasificada[Mos96] de la siguiente forma:

• Temporal: tuplas de datos, correspondientes a resultados intermedios;

• de ambito: mapeo de tokens a datos, correspondientes a la tabla desımbolos;

• Estable: datos almacenados en memoria, correspondientes a los valoresasignados a las variables;

• Permanente: datos comunicados entre acciones distribuidas.

Los productores son entidades que pueden ser evaluadas para producirdatos durante la ejecucion de las acciones.

3.1 Semantica de accion de PCF

En esta seccion se presenta una descripcion completa de PCF por medio deAS. Una descripcion AS de una lenguaje de programacion esta dividida entres partes: sintaxis abstracta, funciones semanticas y entidades semanticas.

3.1.1 Sintaxis abstracta

La estructura de PCF esta especificada por una gramatica libre de contextocomo usualmente lo es.

Exp = Variable

| [[“if” Bool exp “then” Exp “else” Exp]]

| Application

| Projection

| Fixed point

Page 47: barcenas.pdf

3.1. SEMANTICA DE ACCION DE PCF 35

Esta gramatica indica que una expresion en PCF consiste de alguna delas siguientes opciones:

• Una variable;

• Una expresion condicional;

• La aplicacion de una funcion;

• La proyeccion de un par;

• Un operador de punto fijo.

Las otras ecuaciones tienen el mismo sentido que las ecuaciones para la sin-taxis abstracta presentadas en el Capıtulo 2. El nivel de abstraccion de lanotacion de acciones permite no ser tan explıcitos acerca de los tipos de lasexpresiones. La sintaxis abstracta completa esta descrita en la Tabla 3.1.

3.1.2 Funciones semanticas

Las funciones semanticas representan el significado del lenguaje de progra-macion. Cada funcion semantica mapea la sintaxis abstracta de un programaa la accion que representa su significado. Ya que AS es composicional [Mos96]la semantica de un programa compuestro de frases, esta determinada en ter-minos de la semantica de sus subfrases.

evaluate :: Exp → action[giving a value | diverging | fails]

La funcion semantica evaluate indıca que para cada arbol sintacticoabstracto E en el domino de la sintaxis abstracta Exp, la entidad semanticaevaluate E es una accion que da un valor, diverge o falla. El valor puede serun numero natural o un valor booleano. Ya que todas las funciones recursivasson λ−definibles [Bar93, Cut80], la evaluacion de una funcion puede diverger.La funcion evaluate puede fallar cuando una expresion no pertenece allenguaje.

Page 48: barcenas.pdf

36 CAPITULO 3. SEMANTICA DE ACCION

Tabla 3.1: Sintaxis abstracta de PCF

module: Sintaxis abstracta. gramar:

Exp = Variable| [[ “if” Bool exp “then” Exp “else” Exp]]| Application| Projection| Fixed point

Application = [[ Function Exp]]Projection = [[“Proj1(”Pair“)”]]

| [[“Proj2(”Pair“)”]]Fixed point = [[“Fix”Function]]Fix = [[“λ”Variable”:”Type”.”Variable”(Fix”Variable”)”]]Function = [[“λ”Variable“:”Type“.”Exp]]Pair = [[“(”Exp“,”Exp“)”]]Type = “Natural”

| “Truth-value”Bool exp = “True”

| “False”| [[“Eq?” Nat exp Nat exp]]

Nat exp = Numeral| [[Nat exp “+” Nat exp]]

Numeral = Digit1

| [[Digit1 Digit2]]Digit1 = “1” | “2” | “3” | “5” | “6” | “7” | “8” | “9”Digit2 = “0”

| [[“0” Digit2]]| Numeral

endgrammar. closed. endmodule: Sintaxis Abstracta.

Page 49: barcenas.pdf

3.1. SEMANTICA DE ACCION DE PCF 37

Tabla 3.2: Semantica de accion de PCFmodule: Funciones semanticas. needs: Sintaxis abstracta, Entidadessemanticasintroduces: evaluatevariables: E, E1, E2 : Exp;.

evaluate :: Expr → action[giving a value]

evaluate [[“if” E1:Bool exp “then” E2:Exp “else” E3:Exp]] =

evaluate E1 then

| | check(the given truth value is true) then

| | | evaluate E2

| or

| | check (the given truth value is false) then

| | | evaluate E3.

evaluate [[E1 : Function E2 : Expresion]] =

| evaluate E2

then

| enact the application of E1 to the given value

evaluate [[“Proj1(”E:Par“)”]] =

| evaluate “(”E“)”

then

| give the first value

evaluate [[“Proj2(”E:Par“)”]] =

| evaluate “(”E“)”

then

| give the second value

evaluate [[“(”E1:Exp“,”E2:Exp“)”]] =

| evaluate E1 and evaluate E2

then

| give the value ]1 and give the value ]2

evaluate [[“True”]] = give the value true

evaluate [[“False”]] = give the value false

evaluate [[“Eq?”E1:Nat exp E2:Nat exp]] =

| evaluate E1 and evaluate E2 then

| | check(the given value ]1 is the given value ]2) then

| | | give the value true

| or

| | check(not(the given value ]1 is the given value ]2)) then

| | | give the value false

evaluate N : Numeral = give the natural number of N.

evaluate[[E1 : Nat exp “+” E2 : Nat exp]] =

| evaluate E1 and evaluate E2

then

| give the sum of

| (the given natural ]1, the given natural ]2).

endmodule: Funciones Semanticas.

Page 50: barcenas.pdf

38 CAPITULO 3. SEMANTICA DE ACCION

La definicion AS de la operacion suma en PCF es:

evaluate N : Numeral = give the natural number of N.

evaluate[[E1 : Nat exp “+” E2 : Nat exp]] =

| evaluate E1 and evaluate E2

then

| give the sum of

| (the given value ]1, the given value ]2).

[[E1 : Nat exp “+” E2 : Nat exp]] significa que: cuando E1 y E2 son evalua-dos, producen los valores v1 y v2 respectivamente, y luego la suma de estosvalores es dada como resultado. Notese lo parecida que esta explicacion in-formal es con respecto a la descrita antes, la cual es completamente formal[Wat99]. give Y es una accion de faceta funcional que da el valor producidopor Y . El combinador de accion, and, es un combinador basico que repre-senta un orden de la ejecuacion, dependiente de la implementacion. Ya queno hay interferencia entre las dos subacciones de and en la funcion anterior,se garantiza que el orden de evaluacion no es relevante. El combinador andhace tuplas de valores temporales de las subacciones. El combinador thenpasa datos temporales de la primera subaccion a la segunda subaccion. gived produce un valor temporal solo si el valor dado es de tipo d. Notese quethe y of solo son usados para hacer mas amigable la notacion de accion.

evaluate [[“if” E1:Bool exp “then” E2:Exp “else” E3:Exp]] =

evaluate E1 then

| | check(the given truth value is true) then

| | | evaluate E2

| or

| | check (the given truth value is false) then

| | | evaluate E3.

check Y termina cuando Y produce el valor true y falla cuando Y pro-duce el valor false. El combinador de accion or representa una elecciondeterminista, ya que una de las dos subacciones siempre falla. De acuerdocon la especificacion de PCF en [Mit96], la funcion condicional falla cuandoE2 y E3 tienen distintos tipos.

Page 51: barcenas.pdf

3.1. SEMANTICA DE ACCION DE PCF 39

Tabla 3.3: Entidades Semanticasmodule: Entidades Semanticasincludes: Notacion de Accionintroduces: Value

value = natural | truth−value

endmodule: Entidades Semanticas.

evaluate [[E1 : Function E2 : Expresion]] =

| evaluate E2

then

| enact the application of E1 to the given value

Esta funcion falla cuando el valor obtenido de la evaluacion de E2 no tieneel tipo del dominio de la funcion E1. enact el valor que le dan, a la funcionE1 como un argumento. Ya que las funciones PCF son una abstraccion λ[HO95, Mit96], la aplicacion de funciones en PCF, esta basada en las reglasde reduccion del λ, expuestas en el Capıtulo 1. La lista completa de lasfunciones semanticas de PCF estan en la Tabla 3.2, y estan en el mismosentido que las ya descritas.

3.1.3 Entidades semanticas

Las entidades semanticas son de libre eleccion en la especificacion general dela notacion de acciones [Mos96, Wat99]. El uso de includes: en la Tabla3.3, en lugar de needs: significa que la notacion, ademas de ser importada,es tambien exportada.

Page 52: barcenas.pdf

40 CAPITULO 3. SEMANTICA DE ACCION

Page 53: barcenas.pdf

Conclusion

A pesar de lo elegante y poderosa que es la teorıa de la semantica deno-tacional, tiene demasiados problemas pragmaticos [Mos96, Wat99] en suaplicacion a lenguajes del estilo de Pascal, C, Java, etc. Estos proble-mas ya se han observado en las descripciones de pequenos e ilustrativoslenguajes, propuestos en textos pedagogicos sobre la semantica denotacional[Mos96, SK95, Wat99]. Es de especial mencion, los problemas surgidosal hacer cambios o extensiones al lenguaje descrito, lo cual requiere, mu-chos cambios en la definicion de la semantica, en ocasiones, las ecuacionessemanticas requieren su total reformulacion. El desarrollo de AS fue im-pulsado para la solucion de este tipo de problemas, lo cual, junto con lascaracterısticas compartidas con la semantica operacional, hace de AS la al-ternativa mas adecuada en la descripcion y desarrollo de lenguajes practicos(C, Java, etc.).

Es comun que los implementadores de los lenguajes de programacion ten-gan problemas con la interpretacion de la notacion obscura de las descrip-ciones de lenguajes, ya sea por medio de la semantica axiomatica, opera-cional o denotacional, dada su naturaleza matematica. Se ha mostrado en elCapıtulo 3, que la notacion de accion es de notable similitud al lenguaje nat-ural (ingles), lo cual representa una buena ventaja para los implementadores.A pesar de la facil interpretacion de la semantica de accion, no se pierde for-malidad [Wat99]. Tal formalidad, ası como los fundamentos matematicos deAS, estan soportados por una fuerte teorıa algebraica de acciones [Las99].Otra ventaja de la notacion tan natural de AS, es que la descripcion com-pleta de un lenguaje se puede considerar como el diseno de un compiladordel lenguaje en cuestion, esto ultimo, es gracias a la similitud de la notacionde accion con la notacion de los lenguajes utilizados generalmente para de-sarrollar tales compiladores.

El principal objetivo de este trabajo, es el establecimiento de una referen-

41

Page 54: barcenas.pdf

42 CONCLUSION

cia mas, en el estudio de los fundamentos de los lenguajes de programacion,la cual es, la descripcion completa del lenguaje PCF mediante la semanticade accion [BL04]. Como se ha mencionado antes, dada la naturaleza de lanotacion de accion, esta descripcion de PCF se considera como el diseno deun interprete de PCF. Se establece la implementacion de este diseno, comotrabajo futuro, ya que esta no fue posible, dados los propositos de este tra-bajo.

Page 55: barcenas.pdf

Bibliografıa

[Bar93] H.P. Barendregt. Handook of logic in computer science: LambdaCalculi with Types, volume II. Oxford University Press, 1993.

[BL04] I. E. Barcenas and J. Lavalle. An action semantics of the PCF lan-guague. Proceedings of IX Ibero-American Workshops on ArtificialIntelligence, pages 42–49, 2004.

[Cut80] Nigel Cutland. Computability: An introduction to recursive functiontheory. Cambridge University Press, 1980.

[HO95] J. M. E. Hyland and C. H. L. Ong. Pi-calculus, dialogue gameand PCF. Proceedings of the 7th ACM Conference on FunctionalProgramming ACM Press, pages 96–107, 1995.

[Las99] S. B. Lassen. An algebra of actions. Proceedings of the 2nd Inter-national Workshop of Action Semantics, pages 89–109, 1999.

[Mit96] John C. Mitchell. Foundations for Programming Languages. TheMIT Press, 1996.

[Mos96] Peter D. Moses. Theory and practice of action semantics. Proc.21st Int. Symp. on Mathematical Foundations of Computer Science,1996.

[SK95] Kennet Slonneger and Barry L. Kurtz. Formal Syntax and Se-mantics of Programming Languages: A Laboratory Based Approach.Addison-Wesley, 1995.

[Ten76] R. D. Tennet. The denotational semantics of programming lan-guages. Communications of the ACM, 19:437–453, 1976.

43

Page 56: barcenas.pdf

44 BIBLIOGRAFIA

[Wat99] David A. Watt. The static and dynamic semantics of StandardML. Proc. 2nd International Workshop on Action Semantics, pages155–172, 1999.