equal
deleted
inserted
replaced
236 let |
236 let |
237 val (_, sorts) = Drule.types_sorts thm; |
237 val (_, sorts) = Drule.types_sorts thm; |
238 fun prepT (a, T) = (Thm.ctyp_of thy (TVar (a, the_sort sorts a)), Thm.ctyp_of thy T); |
238 fun prepT (a, T) = (Thm.ctyp_of thy (TVar (a, the_sort sorts a)), Thm.ctyp_of thy T); |
239 fun prep (xi, t) = pairself (Thm.cterm_of thy) (Var (xi, Term.fastype_of t), t); |
239 fun prep (xi, t) = pairself (Thm.cterm_of thy) (Var (xi, Term.fastype_of t), t); |
240 in |
240 in |
241 Drule.instantiate (map prepT (gen_distinct (op =) envT), |
241 Drule.instantiate (map prepT (distinct (op =) envT), |
242 map prep (gen_distinct (fn ((xi, t), (yj, u)) => xi = yj andalso t aconv u) env)) thm |
242 map prep (distinct (fn ((xi, t), (yj, u)) => xi = yj andalso t aconv u) env)) thm |
243 end; |
243 end; |
244 |
244 |
245 in |
245 in |
246 |
246 |
247 fun read_instantiate mixed_insts (generic, thm) = |
247 fun read_instantiate mixed_insts (generic, thm) = |