feat: fix about_fetch_decode_execute_loop
This commit is contained in:
parent
ca30dc084a
commit
0758fad858
@ -659,25 +659,44 @@ Qed.
|
||||
|
||||
Proposition about_fetch_decode_execute_loop :
|
||||
forall (bci1s bci2s : list byte_code_instruction)
|
||||
(ds ds' : data_stack),
|
||||
fetch_decode_execute_loop bci1s ds = OK ds' ->
|
||||
fetch_decode_execute_loop (bci1s ++ bci2s) ds =
|
||||
fetch_decode_execute_loop bci2s (ds').
|
||||
(ds : data_stack),
|
||||
(forall (ds' : data_stack),
|
||||
fetch_decode_execute_loop bci1s ds = OK ds' ->
|
||||
fetch_decode_execute_loop (bci1s ++ bci2s) ds = fetch_decode_execute_loop bci2s (ds'))
|
||||
/\
|
||||
(forall (s : string),
|
||||
fetch_decode_execute_loop bci1s ds = KO s ->
|
||||
fetch_decode_execute_loop (bci1s ++ bci2s) ds = KO s).
|
||||
Proof.
|
||||
intros bci1s.
|
||||
induction bci1s as [ | bci bci1s' IHbci1s' ]; intros bci2s ds ds' H_fdel.
|
||||
- rewrite -> fold_unfold_list_append_nil.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_nil in H_fdel.
|
||||
injection H_fdel as ds_eq_ds'.
|
||||
rewrite -> ds_eq_ds'.
|
||||
reflexivity.
|
||||
- rewrite -> fold_unfold_list_append_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons in H_fdel.
|
||||
case (decode_execute bci ds) as [ ds1 | s ] eqn:H_decode_execute.
|
||||
+ rewrite -> (IHbci1s' bci2s ds1 ds' H_fdel).
|
||||
intros bci1s bci2s.
|
||||
induction bci1s as [ | bci bci1s' IHbci1s' ]; intros ds.
|
||||
- split.
|
||||
+ intros ds' H_fdel.
|
||||
rewrite -> fold_unfold_list_append_nil.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_nil in H_fdel.
|
||||
injection H_fdel as ds_eq_ds'.
|
||||
rewrite -> ds_eq_ds'.
|
||||
reflexivity.
|
||||
+ discriminate H_fdel.
|
||||
+ intros s H_fdel.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_nil in H_fdel.
|
||||
discriminate H_fdel.
|
||||
- split.
|
||||
+ intros ds' H_fdel.
|
||||
rewrite -> fold_unfold_list_append_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons in H_fdel.
|
||||
case (decode_execute bci ds) as [ ds1 | s ] eqn:H_decode_execute.
|
||||
* destruct (IHbci1s' ds1) as [IH_ok _].
|
||||
exact (IH_ok ds' H_fdel).
|
||||
* discriminate H_fdel.
|
||||
+ intros s H_fdel.
|
||||
rewrite -> fold_unfold_list_append_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons.
|
||||
rewrite -> fold_unfold_fetch_decode_execute_loop_cons in H_fdel.
|
||||
case (decode_execute bci ds) as [ ds1 | s1 ] eqn:H_decode_execute.
|
||||
* destruct (IHbci1s' ds1) as [_ IH_ko].
|
||||
exact (IH_ko s H_fdel).
|
||||
* exact H_fdel.
|
||||
Qed.
|
||||
|
||||
(* ********** *)
|
||||
|
Loading…
Reference in New Issue
Block a user