aboutsummaryrefslogtreecommitdiffstats
path: root/src/hls/GiblePargenproofEquiv.v
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2023-05-16 23:31:37 +0100
committerYann Herklotz <git@yannherklotz.com>2023-05-16 23:31:37 +0100
commit9403299d1a481ea4422524b6caa0d78e4c20fbaf (patch)
treeba457e3550ca8add319d22a124e7cbbcc8639c7b /src/hls/GiblePargenproofEquiv.v
parentb24fc9492bafb61761f847ec4829eaf5b5d88c7b (diff)
downloadvericert-9403299d1a481ea4422524b6caa0d78e4c20fbaf.tar.gz
vericert-9403299d1a481ea4422524b6caa0d78e4c20fbaf.zip
Work on scheduling proof
Diffstat (limited to 'src/hls/GiblePargenproofEquiv.v')
-rw-r--r--src/hls/GiblePargenproofEquiv.v23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/hls/GiblePargenproofEquiv.v b/src/hls/GiblePargenproofEquiv.v
index da2b2c1..5f589a7 100644
--- a/src/hls/GiblePargenproofEquiv.v
+++ b/src/hls/GiblePargenproofEquiv.v
@@ -735,6 +735,29 @@ Section CORRECT.
- apply negb_inj. apply sem_pred_det with (e:=p0); auto.
Qed.
+ Lemma sem_pred_expr_det :
+ forall A B p b1 b2 f (s: forall G, @Abstr.ctx G -> A -> B -> Prop),
+ (forall p b1 b2, s _ ictx p b1 -> s _ octx p b2 -> b1 = b2) ->
+ sem_pred_expr f (s _) ictx p b1 -> sem_pred_expr f (s _) octx p b2 -> b1 = b2.
+ Proof.
+ induction p; crush.
+ - inv H0. inv H1. eauto.
+ - inv H0; inv H1; eauto; exploit sem_pexpr_det; eauto; discriminate.
+ Qed.
+
+ Lemma sem_det :
+ forall p i cf i' cf',
+ sem ictx p (i, cf) ->
+ sem octx p (i', cf') ->
+ cf = cf' /\ match_states i i'.
+ Proof.
+ repeat inversion 1; subst; split.
+ - eauto using sem_pred_expr_det, sem_exit_det.
+ - inv H11; inv H12; inv H2; inv H3;
+ constructor; intros;
+ eauto using sem_pexpr_det, sem_pred_expr_det, sem_value_det, sem_mem_det.
+ Qed.
+
Lemma sem_pexpr_corr :
forall p b, sem_pexpr ictx p b -> sem_pexpr octx p b.
Proof.