src/HOL/HOL.thy
changeset 26411 cd74690f3bfb
parent 25966 74f6817870f9
child 26496 49ae9456eba9
     1.1 --- a/src/HOL/HOL.thy	Wed Mar 26 22:39:58 2008 +0100
     1.2 +++ b/src/HOL/HOL.thy	Wed Mar 26 22:40:01 2008 +0100
     1.3 @@ -883,6 +883,12 @@
     1.4  
     1.5  subsubsection {* Classical Reasoner setup *}
     1.6  
     1.7 +lemma imp_elim: "P --> Q ==> (~ R ==> P) ==> (Q ==> R) ==> R"
     1.8 +  by (rule classical) iprover
     1.9 +
    1.10 +lemma swap: "~ P ==> (~ R ==> P) ==> R"
    1.11 +  by (rule classical) iprover
    1.12 +
    1.13  lemma thin_refl:
    1.14    "\<And>X. \<lbrakk> x=x; PROP W \<rbrakk> \<Longrightarrow> PROP W" .
    1.15  
    1.16 @@ -893,21 +899,22 @@
    1.17    val dest_eq = HOLogic.dest_eq
    1.18    val dest_Trueprop = HOLogic.dest_Trueprop
    1.19    val dest_imp = HOLogic.dest_imp
    1.20 -  val eq_reflection = @{thm HOL.eq_reflection}
    1.21 -  val rev_eq_reflection = @{thm HOL.meta_eq_to_obj_eq}
    1.22 -  val imp_intr = @{thm HOL.impI}
    1.23 -  val rev_mp = @{thm HOL.rev_mp}
    1.24 -  val subst = @{thm HOL.subst}
    1.25 -  val sym = @{thm HOL.sym}
    1.26 +  val eq_reflection = @{thm eq_reflection}
    1.27 +  val rev_eq_reflection = @{thm meta_eq_to_obj_eq}
    1.28 +  val imp_intr = @{thm impI}
    1.29 +  val rev_mp = @{thm rev_mp}
    1.30 +  val subst = @{thm subst}
    1.31 +  val sym = @{thm sym}
    1.32    val thin_refl = @{thm thin_refl};
    1.33  end);
    1.34  open Hypsubst;
    1.35  
    1.36  structure Classical = ClassicalFun(
    1.37  struct
    1.38 -  val mp = @{thm HOL.mp}
    1.39 -  val not_elim = @{thm HOL.notE}
    1.40 -  val classical = @{thm HOL.classical}
    1.41 +  val imp_elim = @{thm imp_elim}
    1.42 +  val not_elim = @{thm notE}
    1.43 +  val swap = @{thm swap}
    1.44 +  val classical = @{thm classical}
    1.45    val sizef = Drule.size_of_thm
    1.46    val hyp_subst_tacs = [Hypsubst.hyp_subst_tac]
    1.47  end);
    1.48 @@ -996,8 +1003,8 @@
    1.49    type claset = Classical.claset
    1.50    val equality_name = @{const_name "op ="}
    1.51    val not_name = @{const_name Not}
    1.52 -  val notE = @{thm HOL.notE}
    1.53 -  val ccontr = @{thm HOL.ccontr}
    1.54 +  val notE = @{thm notE}
    1.55 +  val ccontr = @{thm ccontr}
    1.56    val contr_tac = Classical.contr_tac
    1.57    val dup_intr = Classical.dup_intr
    1.58    val hyp_subst_tac = Hypsubst.blast_hyp_subst_tac