honor 'try0' also for one-liners
authorblanchet
Fri, 01 Aug 2014 14:43:57 +0200
changeset 57742 1977a884fef7
parent 57741 a35d2d26d66e
child 57743 0af2d5dfb0ac
honor 'try0' also for one-liners
src/HOL/Tools/Sledgehammer/sledgehammer_prover.ML
src/HOL/Tools/Sledgehammer/sledgehammer_prover_atp.ML
src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt2.ML
--- a/src/HOL/Tools/Sledgehammer/sledgehammer_prover.ML	Fri Aug 01 14:43:57 2014 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer_prover.ML	Fri Aug 01 14:43:57 2014 +0200
@@ -67,7 +67,7 @@
   val overlord_file_location_of_prover : string -> string * string
   val proof_banner : mode -> string -> string
   val is_atp : theory -> string -> bool
-  val bunches_of_proof_methods : bool -> bool -> string -> proof_method list list
+  val bunches_of_proof_methods : bool -> bool -> bool -> string -> proof_method list list
   val is_fact_chained : (('a * stature) * 'b) -> bool
   val filter_used_facts : bool -> (''a * stature) list -> ((''a * stature) * 'b) list ->
     ((''a * stature) * 'b) list
@@ -161,19 +161,22 @@
   | Try => "Sledgehammer (" ^ quote name ^ ") found a proof"
   | _ => "Try this")
 
-fun bunches_of_proof_methods smt_proofs needs_full_types desperate_lam_trans =
-  [[Simp_Method, Auto_Method, Blast_Method, Linarith_Method],
-   [Meson_Method, Metis_Method (if needs_full_types then SOME full_typesN else NONE, NONE),
-    Force_Method, Presburger_Method],
-    (if needs_full_types then
-       [Metis_Method (NONE, NONE),
-        Metis_Method (SOME really_full_type_enc, NONE),
-        Metis_Method (SOME full_typesN, SOME desperate_lam_trans),
-        Metis_Method (SOME really_full_type_enc, SOME desperate_lam_trans)]
-     else
-       [Metis_Method (SOME full_typesN, NONE),
-        Metis_Method (SOME no_typesN, SOME desperate_lam_trans),
-        Metis_Method (SOME really_full_type_enc, SOME desperate_lam_trans)])] @
+fun bunches_of_proof_methods try0 smt_proofs needs_full_types desperate_lam_trans =
+  (if try0 then
+    [[Simp_Method, Auto_Method, Blast_Method, Linarith_Method],
+     [Meson_Method, Force_Method, Presburger_Method]]
+   else
+     []) @
+  [[Metis_Method (if needs_full_types then SOME full_typesN else NONE, NONE)],
+   (if needs_full_types then
+      [Metis_Method (NONE, NONE),
+       Metis_Method (SOME really_full_type_enc, NONE),
+       Metis_Method (SOME full_typesN, SOME desperate_lam_trans),
+       Metis_Method (SOME really_full_type_enc, SOME desperate_lam_trans)]
+    else
+      [Metis_Method (SOME full_typesN, NONE),
+       Metis_Method (SOME no_typesN, SOME desperate_lam_trans),
+       Metis_Method (SOME really_full_type_enc, SOME desperate_lam_trans)])] @
   (if smt_proofs then [[SMT2_Method]] else [])
 
 fun is_fact_chained ((_, (sc, _)), _) = sc = Chained
--- a/src/HOL/Tools/Sledgehammer/sledgehammer_prover_atp.ML	Fri Aug 01 14:43:57 2014 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer_prover_atp.ML	Fri Aug 01 14:43:57 2014 +0200
@@ -360,7 +360,7 @@
           val used_facts = used_facts_in_atp_proof ctxt (map fst used_from) atp_proof
           val needs_full_types = is_typed_helper_used_in_atp_proof atp_proof
           val preferred_methss =
-            bunches_of_proof_methods (smt_proofs <> SOME false) needs_full_types
+            bunches_of_proof_methods try0 (smt_proofs <> SOME false) needs_full_types
               (if atp_proof_prefers_lifting atp_proof then liftingN else hide_lamsN)
             |> `(hd o hd)
         in
--- a/src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt2.ML	Fri Aug 01 14:43:57 2014 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt2.ML	Fri Aug 01 14:43:57 2014 +0200
@@ -197,7 +197,7 @@
         NONE =>
         let
           val preferred_methss =
-            (SMT2_Method, bunches_of_proof_methods (smt_proofs <> SOME false) false liftingN)
+            (SMT2_Method, bunches_of_proof_methods try0 (smt_proofs <> SOME false) false liftingN)
         in
           (preferred_methss,
            fn preplay =>