El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El...

30
El lenguaje de Expresiones Aritm´ eticas No Tipificadas T Jos´ e de Jes´ us Lavalle Mart´ ınez http://aleteya.cs.buap.mx/ ˜ jlavalle/ Benem´ erita Universidad Aut´ onoma de Puebla Facultad de Ciencias de la Computaci´ on Licenciatura en Ciencias de la Computaci´ on Fundamentos de Lenguajes de Programaci´ on CCOS 255 Oto˜ no 2020 Jos´ e de Jes´ us Lavalle Mart´ ınez (FCC-BUAP) El lenguaje de Expresiones Aritm´ eticas No Tipificadas T Oto˜ no 2020 1 / 17

Transcript of El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El...

Page 1: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje de Expresiones AritmeticasNo Tipificadas T

Jose de Jesus Lavalle Martınezhttp://aleteya.cs.buap.mx/˜jlavalle/

Benemerita Universidad Autonoma de PueblaFacultad de Ciencias de la Computacion

Licenciatura en Ciencias de la ComputacionFundamentos de Lenguajes de Programacion

CCOS 255

Otono 2020

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 1 / 17

Page 2: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Contenido

1 Introduccion

2 Sintaxis del lenguaje T

3 Induccion sobre terminos

4 Semantica

5 Ejercicios

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 2 / 17

Page 3: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,expresiones condicionales,la constante numerica 0,los operadores aritmeticos succ (sucesor) y pred (predecesor),y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 4: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,

expresiones condicionales,la constante numerica 0,los operadores aritmeticos succ (sucesor) y pred (predecesor),y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 5: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,

expresiones condicionales,

la constante numerica 0,los operadores aritmeticos succ (sucesor) y pred (predecesor),y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 6: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,expresiones condicionales,

la constante numerica 0,

los operadores aritmeticos succ (sucesor) y pred (predecesor),y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 7: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,expresiones condicionales,la constante numerica 0,

los operadores aritmeticos succ (sucesor) y pred (predecesor),

y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 8: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T I

El lenguaje utilizado en esta parte del curso contiene solo un punado deformas sintacticas:

las constantes booleanas verdadero y falso,expresiones condicionales,la constante numerica 0,los operadores aritmeticos succ (sucesor) y pred (predecesor),

y una operacion prueba si es cero que devuelve verdadero. cuando seaplica a 0 y falso cuando se aplica a algun otro numero.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 3 / 17

Page 9: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T II

Estas formas se pueden resumir de forma compacta con la siguientegramatica:

t ::= terminos:true constante true

false constante false

if t then t else t condicional

0 constante cero

succ t sucesor

pred t predecesor

iszero t prueba si es cero

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 4 / 17

Page 10: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T III

Un programa en el lenguaje T es un termino construido a partir de lasformas dadas por la gramatica anterior.

A continuacion se muestran dos ejemplos de programas, junto con losresultados de su evaluacion:

if false then 0 else 1 → 1iszero (pred (succ 0)) → true

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 5 / 17

Page 11: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

El lenguaje T III

Un programa en el lenguaje T es un termino construido a partir de lasformas dadas por la gramatica anterior.

A continuacion se muestran dos ejemplos de programas, junto con losresultados de su evaluacion:

if false then 0 else 1 → 1iszero (pred (succ 0)) → true

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 5 / 17

Page 12: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis I

Hay varias formas equivalentes de definir la sintaxis de nuestro lenguaje.Ya hemos visto una por medio de la gramatica presentada.

Esta gramatica es en realidad solo una notacion compacta para lasiguiente definicion inductiva:

Definicion 1 (Terminos inductivamente)

El conjunto de terminos es el conjunto mas pequeno T tal que:1 {true, false, 0} ⊆ T ,2 Si t1 ∈ T entonces {succ t1, pred t1, iszero t1} ⊆ T ,3 Si t1, t2, t3 ∈ T entonces if t1 then t2 else t3 ∈ T

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 6 / 17

Page 13: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis I

Hay varias formas equivalentes de definir la sintaxis de nuestro lenguaje.Ya hemos visto una por medio de la gramatica presentada.

Esta gramatica es en realidad solo una notacion compacta para lasiguiente definicion inductiva:

Definicion 1 (Terminos inductivamente)

El conjunto de terminos es el conjunto mas pequeno T tal que:1 {true, false, 0} ⊆ T ,2 Si t1 ∈ T entonces {succ t1, pred t1, iszero t1} ⊆ T ,3 Si t1, t2, t3 ∈ T entonces if t1 then t2 else t3 ∈ T

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 6 / 17

Page 14: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis I

Hay varias formas equivalentes de definir la sintaxis de nuestro lenguaje.Ya hemos visto una por medio de la gramatica presentada.Esta gramatica es en realidad solo una notacion compacta para lasiguiente definicion inductiva:

Definicion 1 (Terminos inductivamente)

El conjunto de terminos es el conjunto mas pequeno T tal que:1 {true, false, 0} ⊆ T ,2 Si t1 ∈ T entonces {succ t1, pred t1, iszero t1} ⊆ T ,3 Si t1, t2, t3 ∈ T entonces if t1 then t2 else t3 ∈ T

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 6 / 17

Page 15: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis II

Definicion 2 (Terminos por reglas de inferencia)El conjunto de terminos se define mediante las siguientes reglas:

true ∈ T false ∈ T 0 ∈ Tt1 ∈ T

succ t1 ∈ Tt1 ∈ T

pred t1 ∈ Tt1 ∈ T

iszero t1 ∈ Tt1 ∈ T t2 ∈ T t3 ∈ Tif t1 then t2 else t3 ∈ T

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 7 / 17

Page 16: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis III

Definicion 3 (Terminos concretamente)Para cada numero natural i, defina un conjunto Si como sigue:

S0 = ∅Si+1 = {true, false, 0}

∪ {succ t1, pred t1, iszero t1|t1 ∈ Si}∪ {if t1 then t2 else t3|t1, t2, t3 ∈ Si}.

Finalmente, seaS =

⋃i≥0

Si.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 8 / 17

Page 17: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis IV

Podemos definir el tipo T en ML para el lenguaje T de la siguiente manera:

datatype T = t | f | z |s c of T | pd of T | i s z of T |i f t e of T ∗ T ∗ T ;

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 9 / 17

Page 18: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Sintaxis IV

Podemos definir el tipo T en ML para el lenguaje T de la siguiente manera:datatype T = t | f | z |

s c of T | pd of T | i s z of T |i f t e of T ∗ T ∗ T ;

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 9 / 17

Page 19: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos I

La caracterizacion del lenguaje T mediante la Definicion 1 nos permite:

Definir funciones recursivas sobre los terminos del lenguaje.Hacer demostraciones por induccion de propiedades que tienen losterminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 10 / 17

Page 20: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos I

La caracterizacion del lenguaje T mediante la Definicion 1 nos permite:Definir funciones recursivas sobre los terminos del lenguaje.

Hacer demostraciones por induccion de propiedades que tienen losterminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 10 / 17

Page 21: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos I

La caracterizacion del lenguaje T mediante la Definicion 1 nos permite:Definir funciones recursivas sobre los terminos del lenguaje.Hacer demostraciones por induccion de propiedades que tienen losterminos del lenguaje.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 10 / 17

Page 22: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos II

Definicion 4El conjunto de constantes que aparecen en un termino t, que escribimosConsts(t), esta definido como sigue:

Consts(t) =

{t} si t = true, false o 0Consts(t1) si t = succ t1, pred t1 o iszero t1Consts(t1) ∪ Consts(t2) ∪ Consts(t3) si t = if t1 then t2 else t3

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 11 / 17

Page 23: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos III

Definicion 5El tamano de un termino t, que escribimos size(t), esta definido comosigue:

size(t) =

1 si t = true, false o 0size(t1) + 1 si t = succ t1, pred t1 o iszero t1

size(t1) + size(t2) + size(t3) + 1 si t = if t1 then t2 else t3

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 12 / 17

Page 24: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Induccion sobre terminos IV

Definicion 6La profundidad de un termino t, que escribimos depth(t), esta definidocomo sigue:

depth(t) =

1 si t = true, false o 0depth(t1) + 1 si t = succ t1, pred t1 o iszero t1max(depth(t1) + depth(t2) + depth(t3)) + 1 si t = if t1 then t2 else t3

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 13 / 17

Page 25: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Semantica operacional para T I

Definiremos una semantica operacional para T .

Lo haremos mediante una relacion de evaluacion sobre terminos.Escribiremos la relacion mediante t→ t’ y se pronuncia “t se evalua at’ en un paso”.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 14 / 17

Page 26: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Semantica operacional para T I

Definiremos una semantica operacional para T .Lo haremos mediante una relacion de evaluacion sobre terminos.

Escribiremos la relacion mediante t→ t’ y se pronuncia “t se evalua at’ en un paso”.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 14 / 17

Page 27: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Semantica operacional para T I

Definiremos una semantica operacional para T .Lo haremos mediante una relacion de evaluacion sobre terminos.Escribiremos la relacion mediante t→ t’ y se pronuncia “t se evalua at’ en un paso”.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 14 / 17

Page 28: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Semantica operacional para T II

Definicion 7La relacion de evaluacion en un paso → sobre los terminos de T estadefinida mediante las siguientes reglas:

if true then t2 else t3 → t2E-IfTrue if false then t2 else t3 → t3

E-IfFalse

t1 → t’1if t1 then t2 else t3 → if t’1 then t2 else t3

E-Ift1 → t’1

succ t1 → succ t’1E-Succ

pred 0→ 0 E-PredZero pred (succ nv1)→ nv1E-PredSucc

t1 → t’1pred t1 → pred t’1

E-Pred iszero 0→ true E-IszeroZero

iszero (succ nv1)→ false E-IszeroSucct1 → t’1

iszero t1 → iszero t’1E-IsZero

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 15 / 17

Page 29: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Semantica operacional para T III

Definicion 8

La relacion de evaluacion en multiples pasos →∗ es la cerradurareflexiva y transitiva de la relacion de evaluacion en un paso. Es decir es larelacion mas pequena que cumple las siguientes reglas.

t→∗ tt→ t’t→∗ t’

t→ t” t”→∗ t’t→∗ t’

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 16 / 17

Page 30: El lenguaje de Expresiones Aritméticas No Tipificadas Taleteya.cs.buap.mx/~jlavalle/flp/7 El lenguaje T.pdf · 2020. 9. 29. · Contenido 1 Introducci´on 2 Sintaxis del lenguaje

Ejercicios

Implemente en ML las funciones dadas por las Definiciones:1 4 (llamele Consts), 5 (llamele size), 6 (llamele depth), 7 (llamele eval)

y 8 (llamele evalast).2 Pruebe sus funciones con el archivo “pruebasSemana07.ml” que

encontrara en la pagina del curso.

Jose de Jesus Lavalle Martınez (FCC-BUAP) El lenguaje de Expresiones Aritmeticas No Tipificadas T Otono 2020 17 / 17