src/Pure/Isar/obtain.ML
changeset 19906 c23a0e65b285
parent 19897 fe661eb3b0e7
child 19978 df19a7876183
equal deleted inserted replaced
19905:7f480338b66e 19906:c23a0e65b285
   198       (Vartab.empty, Int.max (maxidx, Thm.maxidx_of rule));
   198       (Vartab.empty, Int.max (maxidx, Thm.maxidx_of rule));
   199     val norm_type = Envir.norm_type tyenv;
   199     val norm_type = Envir.norm_type tyenv;
   200 
   200 
   201     val xs = map (apsnd norm_type) vars;
   201     val xs = map (apsnd norm_type) vars;
   202     val ys = map (apsnd norm_type) (Library.drop (m, params));
   202     val ys = map (apsnd norm_type) (Library.drop (m, params));
   203     val ys' = map Syntax.internal (Term.variantlist (map fst ys, map fst xs)) ~~ map #2 ys;
   203     val ys' = map Term.internal (Term.variantlist (map fst ys, map fst xs)) ~~ map #2 ys;
   204 
   204 
   205     val instT =
   205     val instT =
   206       fold (Term.add_tvarsT o #2) params []
   206       fold (Term.add_tvarsT o #2) params []
   207       |> map (TVar #> (fn T => (Thm.ctyp_of thy T, Thm.ctyp_of thy (norm_type T))));
   207       |> map (TVar #> (fn T => (Thm.ctyp_of thy T, Thm.ctyp_of thy (norm_type T))));
   208     val rule' = rule |> Thm.instantiate (instT, []);
   208     val rule' = rule |> Thm.instantiate (instT, []);