aboutsummaryrefslogtreecommitdiffstats
path: root/src/Misc.v
diff options
context:
space:
mode:
authorChantal Keller <Chantal.Keller@inria.fr>2020-06-30 13:38:26 +0200
committerChantal Keller <Chantal.Keller@inria.fr>2020-06-30 13:38:26 +0200
commit94df778b8d85cea68e0b62a534d326566f5e8f19 (patch)
tree995bc1e85c7007e84c9d8f0a932e9decfc7af852 /src/Misc.v
parent1db73a0db048ac2dc9b59c6d4b030c3369231461 (diff)
parent5a48d8b315ba20a5d79b56f9f3fa0ab7a1e8e13a (diff)
downloadsmtcoq-94df778b8d85cea68e0b62a534d326566f5e8f19.tar.gz
smtcoq-94df778b8d85cea68e0b62a534d326566f5e8f19.zip
Merge branch 'master' of github.com:smtcoq/smtcoq into coq-8.11
Diffstat (limited to 'src/Misc.v')
-rw-r--r--src/Misc.v34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Misc.v b/src/Misc.v
index 952985f..8553172 100644
--- a/src/Misc.v
+++ b/src/Misc.v
@@ -495,6 +495,23 @@ Proof.
Qed.
+Lemma afold_left_and p a :
+ afold_left bool int true andb p a =
+ List.forallb p (to_list a).
+Proof.
+ rewrite afold_left_spec; auto.
+ rewrite fold_left_to_list.
+ assert (H:forall l acc, List.fold_left (fun (a0 : bool) (v : int) => a0 && p v) l acc =
+ acc && List.forallb p l).
+ {
+ clear a. induction l; simpl.
+ - intros; now rewrite andb_true_r.
+ - intro acc. rewrite IHl. now rewrite andb_assoc.
+ }
+ now apply H.
+Qed.
+
+
(* Case orb *)
Lemma afold_left_orb_true : forall A i a f,
@@ -541,6 +558,23 @@ Proof.
Qed.
+Lemma afold_left_or p a :
+ afold_left bool int false orb p a =
+ List.existsb p (to_list a).
+Proof.
+ rewrite afold_left_spec; auto.
+ rewrite fold_left_to_list.
+ assert (H:forall l acc, List.fold_left (fun (a0 : bool) (v : int) => a0 || p v) l acc =
+ acc || List.existsb p l).
+ {
+ clear a. induction l; simpl.
+ - intros; now rewrite orb_false_r.
+ - intro acc. rewrite IHl. now rewrite orb_assoc.
+ }
+ now apply H.
+Qed.
+
+
(* Case implb *)
Lemma afold_right_implb_false : forall A a f,