equal
deleted
inserted
replaced
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, []); |