Skip to content

Commit 5c27c83

Browse files
author
Gregory Malecha
committed
Equational reasoning for Prop in Data.Prop
1 parent 8e54e77 commit 5c27c83

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

theories/Data/Prop.v

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,58 @@ Global Instance typeOk_Prop : typeOk type_Prop.
99
Proof.
1010
constructor; compute; firstorder.
1111
Qed.
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

Comments
 (0)