equal
deleted
inserted
replaced
301 in t |> not (Vartab.is_empty tvar_tab) ? do_term end |
301 in t |> not (Vartab.is_empty tvar_tab) ? do_term end |
302 |
302 |
303 fun quantify_over_var quant_of var_s t = |
303 fun quantify_over_var quant_of var_s t = |
304 let |
304 let |
305 val vars = [] |> Term.add_vars t |> filter (fn ((s, _), _) => s = var_s) |
305 val vars = [] |> Term.add_vars t |> filter (fn ((s, _), _) => s = var_s) |
306 |> map Var |
306 val normTs = vars |> AList.group (op =) |> map (apsnd hd) |
307 in fold_rev quant_of vars t end |
307 fun norm_var_types (Var (x, T)) = |
|
308 Var (x, case AList.lookup (op =) normTs x of |
|
309 NONE => T |
|
310 | SOME T' => T') |
|
311 | norm_var_types t = t |
|
312 in t |> map_aterms norm_var_types |> fold_rev quant_of (map Var normTs) end |
308 |
313 |
309 (* Interpret an ATP formula as a HOL term, extracting sort constraints as they |
314 (* Interpret an ATP formula as a HOL term, extracting sort constraints as they |
310 appear in the formula. *) |
315 appear in the formula. *) |
311 fun prop_of_atp ctxt textual sym_tab phi = |
316 fun prop_of_atp ctxt textual sym_tab phi = |
312 let |
317 let |