0
我的定義my_def1
:鑄造類型
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.
我還想寫另一個定義my_def2
類似my_def1
像下面添加一個公理proj_bytes vl
總是返回Some bl
,所以:
Definition my_def2 (vl: list memval) : val :=
Vint(Int.sign_ext 16 (Int.repr (decode_int ((*?*)))))
end.
我的問題是我怎樣才能完成my_def2
並編寫相關axiom
約proj_bytes vl
?
或者問題是我如何從類型list memval
轉換爲list byte
[decode_int
接受list byte
]
這裏是memval
定義:
Inductive memval : Type :=
Undef : memval
| Byte : byte -> memval
| Fragment : val -> quantity -> nat -> memval
謝謝。關於這個公理,我試圖把它寫成'Axiom pb1:forall vl,proj_bytes vl = Some v.' which does not recognized v。你能解釋一下它的邏輯嗎? –
我的意思是你寫的那個邏輯。 –
'{v | P}'表示存在一些'v',使得'P'成立。你也可以更好一些,因爲指定一些公理'not_undefined vl'來排除不希望的情況,然後通過案例分析進行處理。 – ejgallego