src/Pure/Isar/theory_target.ML
changeset 21644 5154a7213d3c
parent 21615 1bd558879c44
child 21668 2d811ae6752a
equal deleted inserted replaced
21643:bdf3e74727df 21644:5154a7213d3c
   181     val (th'' :: vs) = (th' :: map (Drule.mk_term o cert) (map Logic.mk_type tfrees @ frees))
   181     val (th'' :: vs) = (th' :: map (Drule.mk_term o cert) (map Logic.mk_type tfrees @ frees))
   182       |> Variable.export ctxt thy_ctxt
   182       |> Variable.export ctxt thy_ctxt
   183       |> Drule.zero_var_indexes_list;
   183       |> Drule.zero_var_indexes_list;
   184 
   184 
   185     (*thm definition*)
   185     (*thm definition*)
   186     val result = PureThy.name_thm true (name, Goal.close_result th'');
   186     val result = th''
       
   187       |> PureThy.name_thm true true ""
       
   188       |> Goal.close_result
       
   189       |> PureThy.name_thm true true name;
   187 
   190 
   188     (*import fixes*)
   191     (*import fixes*)
   189     val (tvars, vars) =
   192     val (tvars, vars) =
   190       chop (length tfrees) (map (Thm.term_of o Drule.dest_term) vs)
   193       chop (length tfrees) (map (Thm.term_of o Drule.dest_term) vs)
   191       |>> map Logic.dest_type;
   194       |>> map Logic.dest_type;
   200     val assm_tac = FIRST' (map (fn assm => Tactic.compose_tac (false, assm, 0)) assms);
   203     val assm_tac = FIRST' (map (fn assm => Tactic.compose_tac (false, assm, 0)) assms);
   201     val result'' =
   204     val result'' =
   202       (case SINGLE (Seq.INTERVAL assm_tac 1 nprems) result' of
   205       (case SINGLE (Seq.INTERVAL assm_tac 1 nprems) result' of
   203         NONE => raise THM ("Failed to re-import result", 0, [result'])
   206         NONE => raise THM ("Failed to re-import result", 0, [result'])
   204       | SOME res => res) COMP (concl_conv COMP_INCR Drule.equal_elim_rule2)
   207       | SOME res => res) COMP (concl_conv COMP_INCR Drule.equal_elim_rule2)
   205       |> Goal.norm_result;
   208       |> Goal.norm_result
       
   209       |> PureThy.name_thm false false name;
   206 
   210 
   207   in (result'', result) end;
   211   in (result'', result) end;
   208 
   212 
   209 fun notes loc kind facts lthy =
   213 fun notes loc kind facts lthy =
   210   let
   214   let