aboutsummaryrefslogtreecommitdiffstats
path: root/src/hls/GiblePargenproofCommon.v
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 /src/hls/GiblePargenproofCommon.v
parent3cca0fa62b1b78ca0df38b539d88704b26b21645 (diff)
downloadvericert-4917816d72d131cc0c3a10c00648a5df354e7500.tar.gz
vericert-4917816d72d131cc0c3a10c00648a5df354e7500.zip
Work on forward proofs
Diffstat (limited to 'src/hls/GiblePargenproofCommon.v')
-rw-r--r--src/hls/GiblePargenproofCommon.v15
1 files changed, 15 insertions, 0 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.