aboutsummaryrefslogtreecommitdiffstats
path: root/src/hls/Gible.v
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-06-06 15:44:43 +0100
committerYann Herklotz <git@yannherklotz.com>2022-06-06 15:44:43 +0100
commit703b43cb326feb971966edaa0b19c1548920f7ac (patch)
treed8b3d8f96503aa479fb177f3334aa9e2b43574f3 /src/hls/Gible.v
parentbaa7185e411df24c307691bd77fb91e908a257c6 (diff)
downloadvericert-703b43cb326feb971966edaa0b19c1548920f7ac.tar.gz
vericert-703b43cb326feb971966edaa0b19c1548920f7ac.zip
Rearrange definitions and create IfConversion template
Diffstat (limited to 'src/hls/Gible.v')
-rw-r--r--src/hls/Gible.v12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/hls/Gible.v b/src/hls/Gible.v
index 4cecd2c..399935b 100644
--- a/src/hls/Gible.v
+++ b/src/hls/Gible.v
@@ -549,6 +549,18 @@ support if-conversion.
step_cf_instr (State s f sp pc rs pr m)
(RBgoto pc') E0 (State s f sp pc' rs pr m).
+ Lemma step_cf_instr_det :
+ forall st cf t st1 st2,
+ step_cf_instr st cf t st1 ->
+ step_cf_instr st cf t st2 ->
+ st1 = st2.
+ Proof using.
+ inversion 1; subst; simplify; clear H;
+ match goal with H: context[step_cf_instr] |- _ => inv H end; crush;
+ assert (vargs0 = vargs) by eauto using eval_builtin_args_determ; subst;
+ assert (vres = vres0 /\ m' = m'0) by eauto using external_call_deterministic; crush.
+ Qed.
+
(*|
Top-level step
--------------