src/HOL/simpdata.ML
changeset 6128 2acc5d36610c
parent 5975 cd19eaa90f45
child 6293 2a4357301973
--- a/src/HOL/simpdata.ML	Thu Jan 14 12:32:13 1999 +0100
+++ b/src/HOL/simpdata.ML	Thu Jan 14 13:18:09 1999 +0100
@@ -64,31 +64,28 @@
 
   fun prover s = prove_goal HOL.thy s (K [Blast_tac 1]);
 
-  val P_imp_P_iff_True = prover "P --> (P = True)" RS mp;
-  val P_imp_P_eq_True = P_imp_P_iff_True RS eq_reflection;
-
-  val not_P_imp_P_iff_F = prover "~P --> (P = False)" RS mp;
-  val not_P_imp_P_eq_False = not_P_imp_P_iff_F RS eq_reflection;
-
 in
 
 (*Make meta-equalities.  The operator below is Trueprop*)
 
-  fun mk_meta_eq r = r RS eq_reflection;
+fun mk_meta_eq r = r RS eq_reflection;
+
+val Eq_TrueI  = mk_meta_eq(prover  "P --> (P = True)"  RS mp);
+val Eq_FalseI = mk_meta_eq(prover "~P --> (P = False)" RS mp);
 
-  fun mk_eq th = case concl_of th of
-          Const("==",_)$_$_       => th
-      |   _$(Const("op =",_)$_$_) => mk_meta_eq th
-      |   _$(Const("Not",_)$_)    => th RS not_P_imp_P_eq_False
-      |   _                       => th RS P_imp_P_eq_True;
-  (* last 2 lines requires all formulae to be of the from Trueprop(.) *)
+fun mk_eq th = case concl_of th of
+        Const("==",_)$_$_       => th
+    |   _$(Const("op =",_)$_$_) => mk_meta_eq th
+    |   _$(Const("Not",_)$_)    => th RS Eq_FalseI
+    |   _                       => th RS Eq_TrueI;
+(* last 2 lines requires all formulae to be of the from Trueprop(.) *)
 
-  fun mk_eq_True r = Some(r RS meta_eq_to_obj_eq RS P_imp_P_eq_True);
+fun mk_eq_True r = Some(r RS meta_eq_to_obj_eq RS Eq_TrueI);
 
-  fun mk_meta_cong rl =
-    standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl))
-    handle THM _ =>
-    error("Premises and conclusion of congruence rules must be =-equalities");
+fun mk_meta_cong rl =
+  standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl))
+  handle THM _ =>
+  error("Premises and conclusion of congruence rules must be =-equalities");
 
 val not_not = prover "(~ ~ P) = P";
 
@@ -505,6 +502,6 @@
                eresolve_tac [disjE] 1) THEN
         ref_tac 1;
   in EVERY'[TRY o filter_prems_tac test,
-            REPEAT o etac rev_mp, prep_tac, rtac ccontr, prem_nnf_tac,
+            DETERM o REPEAT o etac rev_mp, prep_tac, rtac ccontr, prem_nnf_tac,
             SELECT_GOAL (DEPTH_SOLVE refute_prems_tac)]
   end;