src/ZF/Tools/inductive_package.ML
changeset 43333 2bdec7f430d3
parent 43324 2b47822868e4
child 43596 78211f66cf8d
equal deleted inserted replaced
43332:dca2c7c598f0 43333:2bdec7f430d3
   491      (*instantiate the variable to a tuple, if it is non-trivial, in order to
   491      (*instantiate the variable to a tuple, if it is non-trivial, in order to
   492        allow the predicate to be "opened up".
   492        allow the predicate to be "opened up".
   493        The name "x.1" comes from the "RS spec" !*)
   493        The name "x.1" comes from the "RS spec" !*)
   494      val inst =
   494      val inst =
   495          case elem_frees of [_] => I
   495          case elem_frees of [_] => I
   496             | _ => instantiate ([], [(cterm_of thy1 (Var(("x",1), Ind_Syntax.iT)),
   496             | _ => Drule.instantiate_normalize ([], [(cterm_of thy1 (Var(("x",1), Ind_Syntax.iT)),
   497                                       cterm_of thy1 elem_tuple)]);
   497                                       cterm_of thy1 elem_tuple)]);
   498 
   498 
   499      (*strip quantifier and the implication*)
   499      (*strip quantifier and the implication*)
   500      val induct0 = inst (quant_induct RS @{thm spec} RSN (2, @{thm rev_mp}));
   500      val induct0 = inst (quant_induct RS @{thm spec} RSN (2, @{thm rev_mp}));
   501 
   501