equal
deleted
inserted
replaced
38 Sign.typ_unify thy (T, U) (unifier, maxidx') |
38 Sign.typ_unify thy (T, U) (unifier, maxidx') |
39 handle Type.TUNIFY => error_var "Incompatible type for instantiation of " xi |
39 handle Type.TUNIFY => error_var "Incompatible type for instantiation of " xi |
40 end; |
40 end; |
41 |
41 |
42 fun instantiate inst = |
42 fun instantiate inst = |
43 Term.instantiate ([], map (fn (xi, t) => ((xi, Term.fastype_of t), t)) inst) #> |
43 TermSubst.instantiate ([], map (fn (xi, t) => ((xi, Term.fastype_of t), t)) inst) #> |
44 Envir.beta_norm; |
44 Envir.beta_norm; |
45 |
45 |
46 fun make_instT f v = |
46 fun make_instT f v = |
47 let |
47 let |
48 val T = TVar v; |
48 val T = TVar v; |
86 if Sign.of_sort thy (T, S) then ((xi, S), T) |
86 if Sign.of_sort thy (T, S) then ((xi, S), T) |
87 else error_var "Incompatible sort for typ instantiation of " xi |
87 else error_var "Incompatible sort for typ instantiation of " xi |
88 end; |
88 end; |
89 |
89 |
90 val type_insts1 = map readT type_insts; |
90 val type_insts1 = map readT type_insts; |
91 val instT1 = Term.instantiateT type_insts1; |
91 val instT1 = TermSubst.instantiateT type_insts1; |
92 val vars1 = map (apsnd instT1) vars; |
92 val vars1 = map (apsnd instT1) vars; |
93 |
93 |
94 |
94 |
95 (* internal term instantiations *) |
95 (* internal term instantiations *) |
96 |
96 |