intros;
generalize (not_ex_all_not nat (fun n : nat => P n /\ Q n /\ R n /\ S n) H);
intro; generalize (not_symt_et (P k) (Q k) (R k) (S k) (H2 k));
intro; generalize (not_and_or (P k /\ Q k) (R k /\ S k) H3);
intro; generalize (or_to_imply (P k /\ Q k) (~ (R k /\ S k)) H4);
intro; cut (P k /\ Q k); auto with core arith.
intro; generalize (H5 H6); intro; apply (not_and_or (R k) (S k) H7).
Qed.

(**********)
Lemma contraposee_ou :
forall P Q R : Prop, (P \/ Q -> R) -> ~ R -> ~ P /\ ~ Q.