Práctico 5 - Ejercicio 5

Práctico 5 - Ejercicio 5

de Joaquin Lejtreger Chebi -
Número de respuestas: 1

Buenas,

Me queda la duda de cómo empezar a definir los tipos Var, Valor y Memoria.


Deberían ser inductivos? Deberían ser Parameters? Ninguna me termina de convencer.


También me queda la duda de si BEval es Inductive o un Fixpoint.


Saludos,

Joaquín

En respuesta a Joaquin Lejtreger Chebi

Re: Práctico 5 - Ejercicio 5

de Carlos Luna -

Hola.

Lo primero es decir que hay más de una opción para formalizar estas cosas.

Var es de tipo nat según la letra del práctico. Esto en Coq lo podés escribir como:

Definition Var := nat.

De manera similar Valor es bool.

Para la memoria se podrían pensar varias opciones (como una lista, una función u otra). La definición como función permite operar con la memoria de forma muy simple:

Definition Mem := nat -> Val.

Finlamente, BEval es una relación inductiva, donde cada constructor sería una de las reglas presentadas en la letra del práctico. Por ejemplo:

Inductive BEval : BoolExp -> Mem -> Val -> Prop :=

| EVar : forall mem var, BEval (VAR var) mem (lookup var mem)

...

Saludos, Carlos