Skip to content
Snippets Groups Projects
Commit 3c3ba0dd authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Merge branch 'feature/permutation_proper' into 'master'

Added two proper instances with permutations

See merge request iris/stdpp!76
parents 4ff965b2 2c0bedd5
No related branches found
No related tags found
1 merge request!76Added two proper instances with permutations
Pipeline #17982 passed
...@@ -2245,6 +2245,9 @@ Proof. split; firstorder. Qed. ...@@ -2245,6 +2245,9 @@ Proof. split; firstorder. Qed.
Lemma list_subseteq_nil l : [] l. Lemma list_subseteq_nil l : [] l.
Proof. intros x. by rewrite elem_of_nil. Qed. Proof. intros x. by rewrite elem_of_nil. Qed.
Global Instance list_subseteq_Permutation: Proper (() ==> () ==> ()) (⊆@{list A}) .
Proof. intros l1 l2 Hl k1 k2 Hk. apply forall_proper; intros x. by rewrite Hl, Hk. Qed.
(** ** Properties of the [Forall] and [Exists] predicate *) (** ** Properties of the [Forall] and [Exists] predicate *)
Lemma Forall_Exists_dec (P Q : A Prop) (dec : x, {P x} + {Q x}) : Lemma Forall_Exists_dec (P Q : A Prop) (dec : x, {P x} + {Q x}) :
l, {Forall P l} + {Exists Q l}. l, {Forall P l} + {Exists Q l}.
...@@ -2400,6 +2403,10 @@ Section Forall_Exists. ...@@ -2400,6 +2403,10 @@ Section Forall_Exists.
intros ?? l. induction l using rev_ind; auto. intros ?? l. induction l using rev_ind; auto.
rewrite Forall_app, Forall_singleton; intros [??]; auto. rewrite Forall_app, Forall_singleton; intros [??]; auto.
Qed. Qed.
Global Instance Forall_Permutation: Proper (() ==> ()) (Forall P).
Proof. intros l1 l2 Hl. rewrite !Forall_forall. by setoid_rewrite Hl. Qed.
Lemma Exists_exists l : Exists P l x, x l P x. Lemma Exists_exists l : Exists P l x, x l P x.
Proof. Proof.
split. split.
...@@ -2419,6 +2426,9 @@ Section Forall_Exists. ...@@ -2419,6 +2426,9 @@ Section Forall_Exists.
Exists P l ( x, P x Q x) Exists Q l. Exists P l ( x, P x Q x) Exists Q l.
Proof. intros H ?. induction H; auto. Defined. Proof. intros H ?. induction H; auto. Defined.
Global Instance Exists_Permutation: Proper (() ==> ()) (Exists P).
Proof. intros l1 l2 Hl. rewrite !Exists_exists. by setoid_rewrite Hl. Qed.
Lemma Exists_not_Forall l : Exists (not P) l ¬Forall P l. Lemma Exists_not_Forall l : Exists (not P) l ¬Forall P l.
Proof. induction 1; inversion_clear 1; contradiction. Qed. Proof. induction 1; inversion_clear 1; contradiction. Qed.
Lemma Forall_not_Exists l : Forall (not P) l ¬Exists P l. Lemma Forall_not_Exists l : Forall (not P) l ¬Exists P l.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment