@@ -9,3 +9,58 @@ Global Instance typeOk_Prop : typeOk type_Prop.
99Proof .
1010 constructor; compute; firstorder.
1111Qed .
12+
13+ (** NOTE: These should fit into a larger picture, e.g. lattices or monoids * *)
14+ (** And/Conjunction * *)
15+ Lemma And_True_iff : forall P, (P /\ True) <-> P.
16+ Proof . intuition. Qed .
17+
18+ Lemma And_And_iff : forall P, (P /\ P) <-> P.
19+ Proof . intuition. Qed .
20+
21+ Lemma And_assoc : forall P Q R, (P /\ Q /\ R) <-> ((P /\ Q) /\ R).
22+ Proof . intuition. Qed .
23+
24+ Lemma And_comm : forall P Q, (P /\ Q) <-> (Q /\ P).
25+ Proof . intuition. Qed .
26+
27+ Lemma And_False_iff : forall P, (P /\ False) <-> False.
28+ Proof . intuition. Qed .
29+
30+ Lemma And_cancel
31+ : forall P Q R : Prop, (P -> (Q <-> R)) -> ((P /\ Q) <-> (P /\ R)).
32+ Proof . intuition. Qed .
33+
34+ (** Or/Disjunction * *)
35+ Lemma Or_False_iff : forall P, (P \/ False) <-> P.
36+ Proof . intuition. Qed .
37+
38+ Lemma Or_Or_iff : forall P, (P \/ P) <-> P.
39+ Proof . intuition. Qed .
40+
41+ Lemma Or_assoc : forall P Q R, (P \/ Q \/ R) <-> ((P \/ Q) \/ R).
42+ Proof . intuition. Qed .
43+
44+ Lemma Or_comm : forall P Q, (P \/ Q) <-> (Q \/ P).
45+ Proof . intuition. Qed .
46+
47+ Lemma Or_True_iff : forall P, (P \/ True) <-> True.
48+ Proof . intuition. Qed .
49+
50+ (** Forall * *)
51+ Lemma forall_iff : forall T P Q,
52+ (forall x,
53+ P x <-> Q x) ->
54+ ((forall x : T, P x) <-> (forall x : T, Q x)).
55+ Proof .
56+ intros. setoid_rewrite H. reflexivity.
57+ Qed .
58+
59+ (** Exists * *)
60+ Lemma exists_iff : forall T P Q,
61+ (forall x,
62+ P x <-> Q x) ->
63+ ((exists x : T, P x) <-> (exists x : T, Q x)).
64+ Proof .
65+ intros. setoid_rewrite H. reflexivity.
66+ Qed .
0 commit comments