[Práctico 7] dudas varias.

[Práctico 7] dudas varias.

de Andres Fulloni Papaleo -
Número de respuestas: 3

Buenas, nos surgieron varias dudas al comenzar a realizar este práctico.

- La primera de ellas es cómo hay que compilar Maps.v, ya que seguimos lo indicado en otro hilo del foro pero nos sigue saliendo un error (Coqtop died badly. Resetting).

- La segunda es qué es el tipo Value, en el paper definen a content como sigue: content = RW (v: option Value) | ... pero no sabemos a qué Value se refiere.

- Al ir bajando línea por línea en Maps.v, nos salta el siguiente error en Definition is_Value, Error: The constructor Value (in type exc) expects 2 arguments.

- Por último, entendemos que hay que definir todos los tipos participantes en State, pero no estamos seguros si lo estamos haciendo de la forma correcta. Por ejemplo definimos lo siguiente para el tipo page_owner:

Inductive page_owner :=
                       | Hyp
                       | Os : forall (osi: os_ident), page_owner
                       | No_Owner.

Es correcto hacerlo de dicha forma?

Gracias.


En respuesta a Andres Fulloni Papaleo

Re: [Práctico 7] dudas varias.

de Carlos Luna -

Hola.

Pueden cagar el módulo Maps.v usando el comando Load (sin compilarlo). Ver:

https://coq.inria.fr/distrib/current/refman/vernacular.html#hevea_default414 

Respecto a los mappings, si prefieren pueden usar funciones Coq. Esto es, pueden:

1) basarse en la biblioteca Maps.v que se incluye junto con la letra del práctico, o 

2) directamente usar las funciones de Coq. Para definir una función parcial de un tipo A a un tipo B, puede usarse el tipo option:

Inductive option (T : Type) : Type := 

   Some : T -> option T | None : option T

Esto es, f : A -> option B.

Sobre el value: en el archivo State.v (en bibliotecas.zip) está definido el tipo value como un Parameter (no es necesario dar más detalles).  

Sobre "al ir bajando línea por línea en Maps.v, nos salta el siguiente error en Definition is_Value, Error: The constructor Value (in type exc) expects 2 arguments". Esto puede ser por el uso de parámetros implícitos. Según la versión de Coq puede haber diferencias respecto a esto. Ajusten esto con la cantidad de argumentes requeridos.

Por último, la definición de page_owner es correcta (aunque puede haber más de una forma de definir esto).

Saludos, Carlos

En respuesta a Carlos Luna

Re: [Práctico 7] dudas varias.

de Guillermo Calderon - InCo -

Sobre el value: en el archivo State.v (en bibliotecas.zip) está definido el tipo value como un Parameter (no es necesario dar más detalles).

Creo que hay una confusión entre Value y value. Con mayúsculas es un constructor que está definido en Maps. Entiendo que debería usarse con minúsculas que es un parámetro definido en State que no requiere argumentos.

En respuesta a Guillermo Calderon - InCo

Re: [Práctico 7] dudas varias.

de Carlos Luna -

Hola.

Si, tenés razón.

value definido en State.v hace referencia a los valores que se guardan en página R/W.

El Value y Error en Maps.v (que como dije antes no es necesario usar) es para los dos tipos de resultados posibles.

Saludos, Carlos