aboutsummaryrefslogtreecommitdiffstats
path: root/src/hls/GiblePargenproofBackward.v
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2023-05-14 14:44:55 +0100
committerYann Herklotz <git@yannherklotz.com>2023-05-14 14:44:55 +0100
commit56d3a4d3f189a2f89d52375b1c71b230d87b05ee (patch)
tree7da7049020f97cccfcbcb7ea3d1af95d159e304e /src/hls/GiblePargenproofBackward.v
parent17f479648a2912e6a7c8c20664645f22a75cf1b8 (diff)
downloadvericert-56d3a4d3f189a2f89d52375b1c71b230d87b05ee.tar.gz
vericert-56d3a4d3f189a2f89d52375b1c71b230d87b05ee.zip
Split correctness lemma into two
Diffstat (limited to 'src/hls/GiblePargenproofBackward.v')
-rw-r--r--src/hls/GiblePargenproofBackward.v21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/hls/GiblePargenproofBackward.v b/src/hls/GiblePargenproofBackward.v
index e2bb23c..ebb2744 100644
--- a/src/hls/GiblePargenproofBackward.v
+++ b/src/hls/GiblePargenproofBackward.v
@@ -67,6 +67,22 @@ Context (prog: GibleSeq.program) (tprog : GiblePar.program).
Let ge : GibleSeq.genv := Globalenvs.Genv.globalenv prog.
Let tge : GiblePar.genv := Globalenvs.Genv.globalenv tprog.
+Lemma sem_equiv_execution :
+ forall sp x i i' ti cf x' ti',
+ abstract_sequence x = Some x' ->
+ sem (mk_ctx i sp ge) x' (i', (Some cf)) ->
+ SeqBB.step ge sp (Iexec ti) x (Iterm ti' cf) ->
+ state_lessdef i ti ->
+ state_lessdef i' ti'.
+Proof. Admitted.
+
+Lemma sem_exists_execution :
+ forall sp x i i' ti cf x',
+ abstract_sequence x = Some x' ->
+ sem (mk_ctx i sp ge) x' (i', (Some cf)) ->
+ exists ti', SeqBB.step ge sp (Iexec ti) x (Iterm ti' cf).
+Proof. Admitted.
+
Lemma abstr_seq_reverse_correct :
forall sp x i i' ti cf x',
abstract_sequence x = Some x' ->
@@ -75,6 +91,9 @@ Lemma abstr_seq_reverse_correct :
exists ti', SeqBB.step ge sp (Iexec ti) x (Iterm ti' cf)
/\ state_lessdef i' ti'.
Proof.
+ intros. exploit sem_exists_execution; eauto; simplify.
+ eauto using sem_equiv_execution.
+Qed.
(*|
Proof Sketch:
@@ -91,6 +110,4 @@ comparison, because there two abstract states can be equal without one being
evaluable.
|*)
-Admitted.
-
End CORRECTNESS.