J'ai la définition my_def1
:types de coulée dans coq
Require Import compcert.common.Memory.
Require Import compcert.common.Values.
Require Import compcert.lib.Integers.
Definition my_def1 (vl: list memval) : val :=
match proj_bytes vl with
| Some bl => Vint(Int.sign_ext 16 (Int.repr (decode_int bl)))
| None => Vundef
end.
Je voudrais écrire une autre définition my_def2
similaire à my_def1
comme ci-dessous et ajoutez un axiome qui proj_bytes vl
reviennent toujours Some bl
, donc:
Definition my_def2 (vl: list memval) : val :=
Vint(Int.sign_ext 16 (Int.repr (decode_int ((*?*)))))
end.
Ma question est comment puis-je remplir my_def2
et écrire le axiom
à propos de proj_bytes vl
?
Ou la question est de savoir comment puis-je jeter le type list memval
-list byte
[decode_int
accepte list byte
]?
Et voici la définition de memval
:
Inductive memval : Type :=
Undef : memval
| Byte : byte -> memval
| Fragment : val -> quantity -> nat -> memval
Merci. A propos de l'axiome, j'essayais de l'écrire comme: «Axiom pb1: forall vl, proj_bytes vl = Some v.» Qui ne reconnaissait pas v. Pourriez-vous nous en dire plus sur sa logique? –
Je veux dire la logique de celle que vous avez écrite. –
'{v | P} 'signifie qu'il existe un' v' tel que 'P' est valide. Vous pourriez aussi être plus fin, en spécifiant un axiome 'not_undefined vl' qui exclut les cas non désirés, puis procéder par analyse de cas. – ejgallego