(* Proof                                                                   *)
intros; tauto.
Qed.
(* End of proof                                                            *)

(* Specifications: *)
Lemma lem_or_and_conv_r :
forall a b c d : Prop,
(a \/ c) /\ (b \/ c) /\ (a \/ d) /\ (b \/ d) -> a /\ b \/ c /\ d.
Lemma lem_and_rew_r :
forall P Q1 Q2 : Prop, (Q1 <-> Q2) -> (P /\ Q1 <-> P /\ Q2).
Lemma lem_and_rew_l :
forall P Q1 Q2 : Prop, (Q1 <-> Q2) -> (Q1 /\ P <-> Q2 /\ P).
Lemma lem_and_assoc_l : forall a b c : Prop, (a /\ b) /\ c <-> a /\ b /\ c.
intros; tauto.
Lemma lem_or_rew_r :
forall P Q1 Q2 : Prop, (Q1 <-> Q2) -> (P \/ Q1 <-> P \/ Q2).
Lemma lem_or_assoc_l : forall a b c : Prop, (a \/ b) \/ c <-> a \/ b \/ c.
intros; tauto.
Lemma lem_or_rew_lr :
forall al bl ar br : Prop,
(al <-> ar) -> (bl <-> br) -> (al \/ bl <-> ar \/ br).
(***************************************************************************)
(* Symmetry properties                                                     *)
(***************************************************************************)
Lemma lem_iff_sym : forall a b : Prop, (a <-> b) -> (b <-> a).
intros; tauto.