(* This program is free software; you can redistribute it and/or      *)
(* modify it under the terms of the GNU Lesser General Public License *)
(* as published by the Free Software Foundation; either version 2.1   *)
(* of the License, or (at your option) any later version.             *)
(*                                                                    *)
(* This program is distributed in the hope that it will be useful,    *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of     *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *)
(* GNU General Public License for more details.                       *)
(*                                                                    *)
(* You should have received a copy of the GNU Lesser General Public   *)
(* License along with this program; if not, write to the Free         *)
(* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *)
(* 02110-1301 USA                                                     *)


(* Contribution to the Coq Library   V6.3 (July 1999)                    *)

(*-- Tactics Tauto & Intuition --*)

(*-- Tauto: Tactic for automating proof in Intuionnistic Propositional 
            Caulculus, based on the contraction-free LJT of Dickhoff 
     Ref:   Roy Dyckhoff, The Journal of Symbolic Logic Volume 57,
            Number 3, Sept. 1992                                      --*) 

Parameter A B C : Prop.Parameter even : nat -> Prop.Parameter P : nat -> Prop.

(* Specifications: *)
Theorem Ex_Wallen : (A -> B /\ C) -> (A -> B) \/ (A -> C).
Theorem Ex_Klenne : ~ ~ (A \/ ~ A).
Theorem Ex_Klenne' : forall n : nat, ~ ~ (even n \/ ~ even n).
Theorem Ex_Klenne'' : ~ ~ ((forall n : nat, even n) \/ ~ (forall m : nat, even m)).
Theorem Intu : (forall x : nat, P x) /\ B -> (forall y : nat, P y) /\ P 0 \/ B /\ P 0.
Lemma NoMember : False.
Theorem tauto : (forall x : nat, P x) -> forall y : nat, P y.
Theorem tauto1 : A -> A.
Theorem tauto2 : (A -> B -> C) -> (A -> B) -> A -> C.
Theorem a : forall (x0 : A \/ B) (x1 : B /\ C), A -> B.
Theorem a2 : (A -> B /\ C) -> (A -> B) \/ (A -> C).
Theorem a4 : ~ A -> ~ A.
Theorem e2 : ~ ~ (A \/ ~ A).
Theorem e4 : ~ ~ (A \/ B -> A \/ B).
Theorem y0 : forall (x0 : A) (x1 : ~ A) (x2 : A -> B) (x3 : A \/ B) (x4 : A /\ B), A -> False.
Theorem y1 : forall x0 : (A /\ B) /\ C, B.
Theorem y2 : forall (x0 : A) (x1 : B), C \/ B.
Theorem y3 : forall x0 : A /\ B, B /\ A.
Theorem y5 : forall x0 : A \/ B, B \/ A.
Theorem y6 : forall (x0 : A -> B) (x1 : A), B.
Theorem y7 : forall (x0 : A /\ B -> C) (x1 : B) (x2 : A), C.
Theorem y8 : forall (x0 : A \/ B -> C) (x1 : A), C.
Theorem y9 : forall (x0 : A \/ B -> C) (x1 : B), C.
Theorem y10 : forall (x0 : (A -> B) -> C) (x1 : B), C.