aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2020-04-29 15:02:12 +0200
committerCyril SIX <cyril.six@kalray.eu>2020-04-29 15:02:12 +0200
commit0fdf888d455526cf23374c26a961d6e06a582c4d (patch)
tree84868fe24452ae21d65337ef56ca04c4ad2a8317
parent0e0e169bb8c78da4965c3c301f1d5f5eb58a87b6 (diff)
downloadcompcert-kvx-0fdf888d455526cf23374c26a961d6e06a582c4d.tar.gz
compcert-kvx-0fdf888d455526cf23374c26a961d6e06a582c4d.zip
Complete proof of ssem_exclude_sabort
-rw-r--r--mppa_k1c/lib/RTLpathSE_theory.v13
1 files changed, 8 insertions, 5 deletions
diff --git a/mppa_k1c/lib/RTLpathSE_theory.v b/mppa_k1c/lib/RTLpathSE_theory.v
index 8ea4f9a7..f5a19b27 100644
--- a/mppa_k1c/lib/RTLpathSE_theory.v
+++ b/mppa_k1c/lib/RTLpathSE_theory.v
@@ -317,7 +317,7 @@ Proof.
- (* FIXME Problem : if we have a ssem_local, this means we ONLY evaluated the conditions,
but we NEVER actually evaluated the si_elocal from the sistate_exit ! So we cannot prove
a lack of abort on the si_elocal.. We must change the definitions *)
-Admitted.
+Abort.
Lemma ssem_local_exclude_sabort ge sp st rs m rs' m':
ssem_local ge sp (si_local st) rs m rs' m' ->
@@ -328,7 +328,10 @@ Proof.
intros SIML ALLF ABORT.
inv ABORT.
- intuition; eapply ssem_local_exclude_sabort_local; eauto.
- - destruct H as (ext & lx & ALLFU & SABORT). inv ALLFU. eapply ssem_local_exclude_sabort_exit; eauto.
+ - destruct H as (ext & lx & ALLFU & SABORT).
+ destruct ALLFU as (TAIL & _). eapply is_tail_in in TAIL.
+ eapply ALLF in TAIL.
+ destruct SABORT as [CONDFAIL | (CONDTRUE & ABORTL)]; congruence.
Qed.
Lemma ssem_exit_fallthrough_upto_exit ge sp ext ext' lx lx' exits rs m rs' m' pc':
@@ -371,9 +374,9 @@ Proof.
- destruct H as (ext' & lx' & ALLFU' & ABORT).
exploit ssem_exit_fallthrough_upto_exit; eauto. intros ITAIL.
destruct ALLFU as (ALLFU1 & ALLFU2). destruct ALLFU' as (ALLFU1' & ALLFU2').
- exploit (is_tail_cons_eq ext' ext lx' lx); eauto. intro. inv H.
- + eapply ssem_exit_exclude_sabort_exit; eauto.
- + eapply ALLFU2 in H0. destruct ABORT as [ABORT | (ABORT & ABORT')]; congruence.
+ exploit (is_tail_inv_left ext' ext lx' lx); eauto. intro. inv H.
+ + inv H0. eapply ssem_exit_exclude_sabort_exit; eauto.
+ + destruct H0 as (INE & TAIL). eapply ALLFU2 in INE. destruct ABORT as [ABORT | (ABORT & ABORT')]; congruence.
Qed.
Lemma ssem_exclude_sabort ge sp st rs m is: