Removed disjE from list of rules used to simplify elimination
authorberghofe
Fri, 03 Jul 1998 11:02:01 +0200
changeset 5120 f7f5442c934a
parent 5119 58d267fc8630
child 5121 5c1f89ae8aef
Removed disjE from list of rules used to simplify elimination rules because it made mk_cases fail if elimination rules contained disjunctive side conditions.
src/HOL/Tools/inductive_package.ML
--- a/src/HOL/Tools/inductive_package.ML	Fri Jul 03 10:55:32 1998 +0200
+++ b/src/HOL/Tools/inductive_package.ML	Fri Jul 03 11:02:01 1998 +0200
@@ -57,7 +57,7 @@
      (fn _ => [assume_tac 1]);
 
 (*For simplifying the elimination rule*)
-val elim_rls = [asm_rl, FalseE, refl_thin, conjE, exE, disjE, Pair_inject];
+val elim_rls = [asm_rl, FalseE, refl_thin, conjE, exE, Pair_inject];
 
 val vimage_name = Sign.intern_const (sign_of Vimage.thy) "op -``";
 val mono_name = Sign.intern_const (sign_of Ord.thy) "mono";
@@ -284,7 +284,6 @@
 (*Applies freeness of the given constructors, which *must* be unfolded by
   the given defs.  Cannot simply use the local con_defs because con_defs=[] 
   for inference systems.
-  FIXME: proper handling of conjunctive / disjunctive side conditions?!
  *)
 fun con_elim_tac simps =
   let val elim_tac = REPEAT o (eresolve_tac elim_rls)
@@ -296,10 +295,10 @@
   end;
 
 (*String s should have the form t:Si where Si is an inductive set*)
-fun mk_cases elims defs s =
+fun mk_cases elims simps s =
   let val prem = assume (read_cterm (sign_of_thm (hd elims)) (s, propT));
       val elims' = map (try (fn r =>
-        rule_by_tactic (con_elim_tac defs) (prem RS r) |> standard)) elims
+        rule_by_tactic (con_elim_tac simps) (prem RS r) |> standard)) elims
   in case find_first is_some elims' of
        Some (Some r) => r
      | None => error ("mk_cases: string '" ^ s ^ "' not of form 't : S_i'")