con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...
con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ... con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...
48 Capítulo 5. Heurísticas para la inducción y recursion general
Capítulo 6 Caso de estudio: Compilación de expresiones El objetivo de esta sección es contruir un compilador de expresiones genéricas (construidas con variables, constantes y operaciones binarias) a una máquina de pila y demostrar su corrección. 6.1 Las expresiones y el intérprete Definición 6.1.1. Las expresiones son las constantes, las variables (representadas por números naturales) y las aplicaciones de operadores binarios a dos expresiones. types ′ v binop = ′ v ⇒ ′ v ⇒ ′ v datatype ′ v expr = Const ′ v | Var nat | App ′ v binop ′ v expr ′ v expr Definición 6.1.2 (Intérprete). La función valor toma como argumentos una expresión y un entorno (i.e. una aplicación de las variables en elementos del lenguaje) y devuelve el valor de la expresión en el entorno. primrec valor :: ′ v expr ⇒ (nat ⇒ ′ v) ⇒ ′ v where valor (Const b) ent = b | valor (Var x) ent = ent x | valor (App f e1 e2) ent = (f (valor e1 ent) (valor e2 ent)) Ejemplo 6.1.3. A continuación mostramos algunos ejemplos de evaluación con el intérprete. 49
- Page 1: Introducción a la demostración as
- Page 4 and 5: 4 Índice 5 Heurísticas para la in
- Page 6 and 7: 6 Índice
- Page 8 and 9: 8 Capítulo 1. Isabelle como un len
- Page 10 and 11: 10 Capítulo 1. Isabelle como un le
- Page 12 and 13: 12 Capítulo 1. Isabelle como un le
- Page 14 and 15: 14 Capítulo 1. Isabelle como un le
- Page 16 and 17: 16 Capítulo 2. El lenguaje de demo
- Page 18 and 19: 18 Capítulo 2. El lenguaje de demo
- Page 20 and 21: 20 Capítulo 2. El lenguaje de demo
- Page 22 and 23: 22 Capítulo 2. El lenguaje de demo
- Page 24 and 25: 24 Capítulo 2. El lenguaje de demo
- Page 26 and 27: 26 Capítulo 2. El lenguaje de demo
- Page 28 and 29: 28 Capítulo 3. Distinción de caso
- Page 30 and 31: 30 Capítulo 3. Distinción de caso
- Page 32 and 33: 32 Capítulo 3. Distinción de caso
- Page 34 and 35: 34 Capítulo 3. Distinción de caso
- Page 36 and 37: 36 Capítulo 4. Patrones de demostr
- Page 38 and 39: 38 Capítulo 4. Patrones de demostr
- Page 40 and 41: 40 Capítulo 4. Patrones de demostr
- Page 42 and 43: 42 Capítulo 5. Heurísticas para l
- Page 44 and 45: 44 Capítulo 5. Heurísticas para l
- Page 46 and 47: 46 Capítulo 5. Heurísticas para l
- Page 50 and 51: 50 Capítulo 6. Caso de estudio: Co
- Page 52 and 53: 52 Capítulo 6. Caso de estudio: Co
- Page 54: 54 Capítulo 6. Caso de estudio: Co
Capítulo 6<br />
Caso <strong>de</strong> estudio: Compi<strong>la</strong>ción <strong>de</strong><br />
expresiones<br />
El objetivo <strong>de</strong> esta sección es <strong>con</strong>truir un compi<strong>la</strong>dor <strong>de</strong> expresiones genéricas (<strong>con</strong>struidas<br />
<strong>con</strong> variables, <strong>con</strong>stantes y operaciones binarias) a una máquina <strong>de</strong> pi<strong>la</strong> y <strong>de</strong>mostrar<br />
su corrección.<br />
6.1 Las expresiones y el intérprete<br />
Definición 6.1.1. Las expresiones son <strong>la</strong>s <strong>con</strong>stantes, <strong>la</strong>s variables (representadas por números<br />
naturales) y <strong>la</strong>s aplicaciones <strong>de</strong> operadores binarios a dos expresiones.<br />
types ′ v binop = ′ v ⇒ ′ v ⇒ ′ v<br />
datatype ′ v expr =<br />
Const ′ v<br />
| Var nat<br />
| App ′ v binop ′ v expr ′ v expr<br />
Definición 6.1.2 (Intérprete). La función valor toma como argumentos una expresión y un<br />
entorno (i.e. una aplicación <strong>de</strong> <strong>la</strong>s variables en elementos <strong>de</strong>l lenguaje) y <strong>de</strong>vuelve el valor <strong>de</strong> <strong>la</strong><br />
expresión en el entorno.<br />
primrec valor :: ′ v expr ⇒ (nat ⇒ ′ v) ⇒ ′ v where<br />
valor (Const b) ent = b<br />
| valor (Var x) ent = ent x<br />
| valor (App f e1 e2) ent = (f (valor e1 ent) (valor e2 ent))<br />
Ejemplo 6.1.3. A <strong>con</strong>tinuación mostramos algunos ejemplos <strong>de</strong> evaluación <strong>con</strong> el intérprete.<br />
49