138 (case opTs of |
138 (case opTs of |
139 NONE => fold_map mk_tvar (map snd tvars @ map snd tfrees) env |
139 NONE => fold_map mk_tvar (map snd tvars @ map snd tfrees) env |
140 | SOME Ts => (Ts, env)); |
140 | SOME Ts => (Ts, env)); |
141 val prop' = subst_atomic_types (map TVar tvars @ map TFree tfrees ~~ Ts) |
141 val prop' = subst_atomic_types (map TVar tvars @ map TFree tfrees ~~ Ts) |
142 (forall_intr_vfs prop) handle Library.UnequalLengths => |
142 (forall_intr_vfs prop) handle Library.UnequalLengths => |
143 error ("Wrong number of type arguments for " ^ |
143 error ("Wrong number of type arguments for " ^ quote (guess_name prf)) |
144 quote (get_name [] prop prf)) |
|
145 in (prop', change_type (SOME Ts) prf, [], env', vTs) end; |
144 in (prop', change_type (SOME Ts) prf, [], env', vTs) end; |
146 |
145 |
147 fun head_norm (prop, prf, cnstrts, env, vTs) = |
146 fun head_norm (prop, prf, cnstrts, env, vTs) = |
148 (Envir.head_norm env prop, prf, cnstrts, env, vTs); |
147 (Envir.head_norm env prop, prf, cnstrts, env, vTs); |
149 |
148 |