aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2023-05-28 17:35:38 +0100
committerYann Herklotz <git@yannherklotz.com>2023-05-28 17:35:38 +0100
commit4917816d72d131cc0c3a10c00648a5df354e7500 (patch)
treed89e4b4e18e797e9a794a34f76349992974db2e5
parent3cca0fa62b1b78ca0df38b539d88704b26b21645 (diff)
downloadvericert-4917816d72d131cc0c3a10c00648a5df354e7500.tar.gz
vericert-4917816d72d131cc0c3a10c00648a5df354e7500.zip
Work on forward proofs
-rw-r--r--src/hls/GiblePargenproofCommon.v15
-rw-r--r--src/hls/GiblePargenproofForward.v4
2 files changed, 18 insertions, 1 deletions
diff --git a/src/hls/GiblePargenproofCommon.v b/src/hls/GiblePargenproofCommon.v
index 22b5978..2dbdf12 100644
--- a/src/hls/GiblePargenproofCommon.v
+++ b/src/hls/GiblePargenproofCommon.v
@@ -221,6 +221,21 @@ Proof.
unfold predicated_not_inP; intros. eapply H. econstructor. right; eauto.
Qed.
+Lemma predicated_not_inP_equiv :
+ forall A (a: predicated A) p,
+ predicated_not_in p a = true -> predicated_not_inP p a.
+Proof.
+ induction a.
+ - intros. cbn in *. unfold predicated_not_inP; intros.
+ unfold not; intros. inv H0. cbn in *.
+ destruct (predin peq p op) eqn:?; try discriminate. eapply predin_PredIn in H1.
+ rewrite H1 in Heqb. discriminate.
+ - intros. cbn in H. eapply andb_prop in H. inv H. eapply IHa in H0.
+ unfold predicated_not_inP in *; intros. inv H. inv H3; cbn in *; eauto.
+ unfold not; intros. eapply predin_PredIn in H. now rewrite H in H1.
+Qed.
+
+
Lemma truthy_dec:
forall ps a, truthy ps a \/ falsy ps a.
Proof.
diff --git a/src/hls/GiblePargenproofForward.v b/src/hls/GiblePargenproofForward.v
index 6411351..cf81802 100644
--- a/src/hls/GiblePargenproofForward.v
+++ b/src/hls/GiblePargenproofForward.v
@@ -324,7 +324,9 @@ all be evaluable.
forall pred f,
predicated_not_in_forest pred f = true ->
forall x, predicated_not_inP pred (f #r x).
- Proof. Admitted.
+ Proof.
+ unfold predicated_not_in_forest, predicated_not_in_pred_expr; intros.
+ eapply andb_prop in H. inv H.
Lemma pred_not_in_forest_exitP :
forall pred f,