Fixed bug involving inductive definitions with equalities in the premises.
authorpaulson
Fri, 04 Oct 2002 15:23:58 +0200
changeset 13627 67b0b7500a9d
parent 13626 282fbabec862
child 13628 87482b5e3f2e
Fixed bug involving inductive definitions with equalities in the premises.
src/ZF/Tools/inductive_package.ML
--- a/src/ZF/Tools/inductive_package.ML	Fri Oct 04 15:23:12 2002 +0200
+++ b/src/ZF/Tools/inductive_package.ML	Fri Oct 04 15:23:58 2002 +0200
@@ -323,7 +323,8 @@
        Intro rules with extra Vars in premises still cause some backtracking *)
      fun ind_tac [] 0 = all_tac
        | ind_tac(prem::prems) i =
-             DEPTH_SOLVE_1 (ares_tac [prem, refl] i) THEN
+             DEPTH_SOLVE_1 (ares_tac [prem, refl] i APPEND hyp_subst_tac i) 
+             THEN
              ind_tac prems (i-1);
 
      val pred = Free(pred_name, Ind_Syntax.iT --> FOLogic.oT);
@@ -362,8 +363,7 @@
              REPEAT (FIRSTGOAL (eresolve_tac [CollectE, disjE])),
              (*Now break down the individual cases.  No disjE here in case
                some premise involves disjunction.*)
-             REPEAT (FIRSTGOAL (eresolve_tac [CollectE, exE, conjE]
-                                ORELSE' hyp_subst_tac)),
+             REPEAT (FIRSTGOAL (eresolve_tac [CollectE, exE, conjE])),
              ind_tac (rev prems) (length prems) ]);
 
      val dummy = if !Ind_Syntax.trace then