Require Import List. Require Import CpdtTactics. Set Implicit Arguments. (* don't use tauto *) Section Propositional. Variables P Q R : Prop. Theorem contra : P -> ~P -> R. Admitted. Theorem and_assoc : (P /\ Q) /\ R -> P /\ (Q /\ R). Admitted. Theorem or_assoc : (P \/ Q) \/ R -> P \/ (Q \/ R). Admitted. Theorem uncurry : (P -> Q -> R) -> (P /\ Q -> R). Admitted. Theorem curry : (P /\ Q -> R) -> (P -> Q -> R). Admitted. End Propositional. Theorem forall_exists_commute : forall (A B : Type) (P : A -> B -> Prop), (exists x : A, forall y : B, P x y) -> (forall y : B, exists x : A, P x y). Admitted.