@@ -2,6 +2,7 @@ Require Import coqutil.Tactics.rewr.
2
2
Require Import coqutil.Map.Interface coqutil.Map.Properties.
3
3
Require Import coqutil.Word.Interface coqutil.Word.Properties.
4
4
Require Import coqutil.Byte.
5
+ Require Import riscv.Utility.bverify.
5
6
Require Import bedrock2.Array.
6
7
Require Import bedrock2.Map.SeparationLogic.
7
8
Require Import compiler.SeparationLogic.
@@ -174,7 +175,7 @@ Section Pipeline1.
174
175
required_stack_space <= word.unsigned (word.sub (stack_pastend ml) (stack_start ml)) / bytes_per_word /\
175
176
word.unsigned ml.(code_start) + Z.of_nat (List.length (instrencode instrs)) <=
176
177
word.unsigned ml.(code_pastend) /\
177
- Forall ( fun i => verify i iset \/ valid_InvalidInstruction i) instrs /\
178
+ bvalidInstructions iset instrs = true /\
178
179
(imem ml.(code_start) ml.(code_pastend) instrs *
179
180
mem_available ml.(heap_start) ml.(heap_pastend) *
180
181
mem_available ml.(stack_start) ml.(stack_pastend))%sep initial.(getMem) /\
@@ -211,6 +212,7 @@ Section Pipeline1.
211
212
destruct mlOk.
212
213
destruct M0 as [v M0].
213
214
* apply ptsto_bytes_to_program; try assumption.
215
+ eapply bvalidInstructions_valid. assumption.
214
216
* unfold ptsto_bytes in Imem.
215
217
eapply ptsto_bytes_range; try eassumption.
216
218
+ unfold imem in *.
@@ -220,6 +222,7 @@ Section Pipeline1.
220
222
eapply iff1ToEq.
221
223
destruct mlOk.
222
224
eapply ptsto_bytes_to_program; try eassumption.
225
+ eapply bvalidInstructions_valid. assumption.
223
226
- eapply @ll_inv_is_invariant; eassumption.
224
227
- eapply ll_inv_implies_prefix_of_good. eassumption.
225
228
Qed .
0 commit comments