src/HOL/Tools/ATP/atp_proof_reconstruct.ML
changeset 52758 7ffcd6f2890d
parent 52125 ac7830871177
child 53586 bd5fa6425993
equal deleted inserted replaced
52757:ea7cf7b14fdd 52758:7ffcd6f2890d
   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