better type reconstruction -- prevents ill-instantiations in proof replay
authorblanchet
Thu, 22 Sep 2011 16:30:47 +0200
changeset 45042 89341b897412
parent 45041 0523a6be8ade
child 45043 7e1a73fc0c8b
better type reconstruction -- prevents ill-instantiations in proof replay
src/HOL/Tools/ATP/atp_reconstruct.ML
src/HOL/Tools/Metis/metis_tactic.ML
src/HOL/Tools/Metis/metis_translate.ML
--- a/src/HOL/Tools/ATP/atp_reconstruct.ML	Thu Sep 22 10:02:16 2011 -0400
+++ b/src/HOL/Tools/ATP/atp_reconstruct.ML	Thu Sep 22 16:30:47 2011 +0200
@@ -430,8 +430,12 @@
           end
         | NONE => (* a free or schematic variable *)
           let
-            val ts = map (do_term [] NONE) us @ extra_ts
-            val T = map slack_fastype_of ts ---> HOLogic.typeT
+            val term_ts = map (do_term [] NONE) us
+            val ts = term_ts @ extra_ts
+            val T =
+              case opt_T of
+                SOME T => map slack_fastype_of term_ts ---> T
+              | NONE => map slack_fastype_of ts ---> HOLogic.typeT
             val t =
               case strip_prefix_and_unascii fixed_var_prefix s of
                 SOME s =>
--- a/src/HOL/Tools/Metis/metis_tactic.ML	Thu Sep 22 10:02:16 2011 -0400
+++ b/src/HOL/Tools/Metis/metis_tactic.ML	Thu Sep 22 16:30:47 2011 +0200
@@ -119,8 +119,6 @@
       val dischargers = map (fst o snd) th_cls_pairs
       val _ = trace_msg ctxt (fn () => "FOL_SOLVE: CONJECTURE CLAUSES")
       val _ = app (fn th => trace_msg ctxt (fn () => Display.string_of_thm ctxt th)) cls
-      val _ = trace_msg ctxt (fn () => "THEOREM CLAUSES")
-      val _ = app (fn th => trace_msg ctxt (fn () => Display.string_of_thm ctxt th)) ths
       val _ = trace_msg ctxt (fn () => "type_enc = " ^ type_enc)
       val type_enc = type_enc_from_string Sound type_enc
       val (sym_tab, axioms, old_skolems) =
@@ -129,6 +127,8 @@
           reflexive_or_trivial_from_metis ctxt type_enc sym_tab old_skolems mth
         | get_isa_thm _ (Isa_Raw ith) = ith
       val axioms = axioms |> map (fn (mth, ith) => (mth, get_isa_thm mth ith))
+      val _ = trace_msg ctxt (fn () => "THEOREM CLAUSES")
+      val _ = app (fn (_, th) => trace_msg ctxt (fn () => Display.string_of_thm ctxt th)) axioms
       val _ = trace_msg ctxt (fn () => "CLAUSES GIVEN TO METIS")
       val thms = axioms |> map fst
       val _ = app (fn th => trace_msg ctxt (fn () => Metis_Thm.toString th)) thms
--- a/src/HOL/Tools/Metis/metis_translate.ML	Thu Sep 22 10:02:16 2011 -0400
+++ b/src/HOL/Tools/Metis/metis_translate.ML	Thu Sep 22 16:30:47 2011 +0200
@@ -202,7 +202,8 @@
                clauses ([], [])
     (*
     val _ =
-      tracing ("PROPS:\n" ^ cat_lines (map (Syntax.string_of_term ctxt) props))
+      tracing ("PROPS:\n" ^
+               cat_lines (map (Syntax.string_of_term ctxt o snd) props))
     *)
     val (atp_problem, _, _, _, _, _, sym_tab) =
       prepare_atp_problem ctxt CNF Hypothesis Axiom type_enc false no_lambdasN