Modified eqvt_tac to avoid failure due to introduction rules
authorberghofe
Fri, 20 Apr 2007 16:11:17 +0200
changeset 22755 e268f608669a
parent 22754 9947ae4792a0
child 22756 b9b78b90ba47
Modified eqvt_tac to avoid failure due to introduction rules whose premises contain variables that do not occur in the conclusion.
src/HOL/Nominal/nominal_inductive.ML
--- a/src/HOL/Nominal/nominal_inductive.ML	Fri Apr 20 15:13:06 2007 +0200
+++ b/src/HOL/Nominal/nominal_inductive.ML	Fri Apr 20 16:11:17 2007 +0200
@@ -346,12 +346,11 @@
            Sign.string_of_term (theory_of_thm intr)
              (Logic.unvarify (prop_of intr)) ^ "\n" ^ s);
         val res = SUBPROOF (fn {prems, ...} =>
-          let val prems' = map (fn th' =>
-            if null (names inter term_consts (prop_of th')) then th' RS th
-            else th') prems
-          in (rtac intr THEN_ALL_NEW
-            (resolve_tac prems ORELSE'
-              (cut_facts_tac prems' THEN' full_simp_tac eqvt_ss))) 1
+          let val prems' = map (fn th' => Simplifier.simplify eqvt_ss
+            (if null (names inter term_consts (prop_of th')) then th' RS th
+             else th')) prems
+            (* FIXME: instantiate intr? *)
+          in (rtac intr THEN_ALL_NEW resolve_tac prems') 1
           end) ctxt 1 st
       in
         case (Seq.pull res handle THM (s, _, _) => eqvt_err s) of