src/HOL/Tools/ATP/atp_proof_reconstruct.ML
changeset 52758 7ffcd6f2890d
parent 52125 ac7830871177
child 53586 bd5fa6425993
--- a/src/HOL/Tools/ATP/atp_proof_reconstruct.ML	Mon Jul 29 17:27:56 2013 +0200
+++ b/src/HOL/Tools/ATP/atp_proof_reconstruct.ML	Mon Jul 29 18:06:39 2013 +0200
@@ -303,8 +303,13 @@
 fun quantify_over_var quant_of var_s t =
   let
     val vars = [] |> Term.add_vars t |> filter (fn ((s, _), _) => s = var_s)
-                  |> map Var
-  in fold_rev quant_of vars t end
+    val normTs = vars |> AList.group (op =) |> map (apsnd hd)
+    fun norm_var_types (Var (x, T)) =
+        Var (x, case AList.lookup (op =) normTs x of
+                  NONE => T
+                | SOME T' => T')
+      | norm_var_types t = t
+  in t |> map_aterms norm_var_types |> fold_rev quant_of (map Var normTs) end
 
 (* Interpret an ATP formula as a HOL term, extracting sort constraints as they
    appear in the formula. *)