(* Contribution to the Coq Library   V6.3 (July 1999)                    *)
(****************************************************************************)
(* This contribution was updated for Coq V5.10 by the COQ workgroup.        *)
(* January 1995                                                             *)
(****************************************************************************)
(*                                ex1_auto.v                                *)
(****************************************************************************)
auto.
Qed.
intros A B H'; elim H'; auto.
Qed.
intros A B H'; elim H'; auto.
Qed.
auto.
Qed.
auto.
Qed.
intros x y z t H'; elim H'.
intros H'0 H'1 H'2; elim H'2.
auto.
Qed.
auto.
Qed.
intros a b p h; elim h;
[ intro H'; clear h; try exact H' | clear h; intro H' ].
exists a; try assumption.
exists b; try assumption.
Qed.
intros A R H' H'0 x H'1; try assumption.
elim H'1; intros y E; clear H'1; try exact E.
apply H' with y; auto.
Qed.
unfold not in |- *; auto.
Qed.
intros x y h; elim h; intros h0 H'; elim h0;
[ clear h h0; intro H'0 | intro H'0; elim H'0; clear h h0; try assumption ];
auto.
Qed.
(*This theorem needs classical logic*)
intros a H'; try assumption; auto 10.
generalize (classic a); intro h; elim h;
[ intro H'0; clear h; try exact H'0 | clear h; intro H'0 ].
elim H'; assumption.
Qed.
unfold not in |- *; auto.
Qed.

Theorem Peirce : forall A B : Prop, ((((A -> B) -> A) -> A) -> B) -> B.