killed "explicit_apply" option in Sledgehammer -- the "smart" default is about as lightweight as "false" and just as complete as "true"
authorblanchet
Wed, 08 Jun 2011 08:47:43 +0200
changeset 4410030c141dc22d6
parent 44099 956895f99904
child 44101 7b875e14b90d
killed "explicit_apply" option in Sledgehammer -- the "smart" default is about as lightweight as "false" and just as complete as "true"
src/HOL/Tools/ATP/atp_translate.ML
src/HOL/Tools/Metis/metis_reconstruct.ML
src/HOL/Tools/Metis/metis_translate.ML
src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML
src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
src/HOL/ex/atp_export.ML
     1.1 --- a/src/HOL/Tools/ATP/atp_translate.ML	Wed Jun 08 08:47:43 2011 +0200
     1.2 +++ b/src/HOL/Tools/ATP/atp_translate.ML	Wed Jun 08 08:47:43 2011 +0200
     1.3 @@ -131,8 +131,7 @@
     1.4    val type_constrs_of_terms : theory -> term list -> string list
     1.5    val prepare_atp_problem :
     1.6      Proof.context -> format -> formula_kind -> formula_kind -> type_sys
     1.7 -    -> bool option -> bool -> bool -> term list -> term
     1.8 -    -> ((string * locality) * term) list
     1.9 +    -> bool -> bool -> term list -> term -> ((string * locality) * term) list
    1.10      -> string problem * string Symtab.table * int * int
    1.11         * (string * locality) list vector * int list * int Symtab.table
    1.12    val atp_problem_weights : string problem -> (string * real) list
    1.13 @@ -1833,9 +1832,10 @@
    1.14  val conjsN = "Conjectures"
    1.15  val free_typesN = "Type variables"
    1.16  
    1.17 +val explicit_apply = NONE (* for experimental purposes *)
    1.18 +
    1.19  fun prepare_atp_problem ctxt format conj_sym_kind prem_kind type_sys
    1.20 -                        explicit_apply readable_names preproc hyp_ts concl_t
    1.21 -                        facts =
    1.22 +                        readable_names preproc hyp_ts concl_t facts =
    1.23    let
    1.24      val (format, type_sys) = choose_format [format] type_sys
    1.25      val (fact_names, (conjs, facts, class_rel_clauses, arity_clauses)) =
     2.1 --- a/src/HOL/Tools/Metis/metis_reconstruct.ML	Wed Jun 08 08:47:43 2011 +0200
     2.2 +++ b/src/HOL/Tools/Metis/metis_reconstruct.ML	Wed Jun 08 08:47:43 2011 +0200
     2.3 @@ -706,7 +706,7 @@
     2.4        val ax_counts =
     2.5          Int_Tysubst_Table.empty
     2.6          |> fold (fn (ax_no, (_, (tysubst, _))) =>
     2.7 -                    Int_Tysubst_Table.map_default ((ax_no, tysubst), 0)
     2.8 +                    Int_Tysubst_Table.map_default ((ax_no, [](*###*)), 0)
     2.9                                                    (Integer.add 1)) substs
    2.10          |> Int_Tysubst_Table.dest
    2.11        val needed_axiom_props =
     3.1 --- a/src/HOL/Tools/Metis/metis_translate.ML	Wed Jun 08 08:47:43 2011 +0200
     3.2 +++ b/src/HOL/Tools/Metis/metis_translate.ML	Wed Jun 08 08:47:43 2011 +0200
     3.3 @@ -167,7 +167,6 @@
     3.4  fun prepare_metis_problem ctxt type_sys conj_clauses fact_clauses =
     3.5    let
     3.6      val type_sys = type_sys_from_string type_sys
     3.7 -    val explicit_apply = NONE
     3.8      val clauses =
     3.9        conj_clauses @ fact_clauses
    3.10        |> (if polymorphism_of_type_sys type_sys = Polymorphic then
    3.11 @@ -188,8 +187,8 @@
    3.12  val _ = tracing ("PROPS:\n" ^ cat_lines (map (Syntax.string_of_term ctxt) props))
    3.13  *)
    3.14      val (atp_problem, _, _, _, _, _, sym_tab) =
    3.15 -      prepare_atp_problem ctxt CNF Hypothesis Axiom type_sys explicit_apply
    3.16 -                          false false props @{prop False} []
    3.17 +      prepare_atp_problem ctxt CNF Hypothesis Axiom type_sys false false props
    3.18 +                          @{prop False} []
    3.19  (*
    3.20  val _ = tracing ("ATP PROBLEM: " ^ cat_lines (tptp_lines_for_atp_problem CNF atp_problem))
    3.21  *)
     4.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jun 08 08:47:43 2011 +0200
     4.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jun 08 08:47:43 2011 +0200
     4.3 @@ -96,7 +96,6 @@
     4.4     ("max_relevant", "smart"),
     4.5     ("max_mono_iters", "3"),
     4.6     ("max_new_mono_instances", "400"),
     4.7 -   ("explicit_apply", "smart"),
     4.8     ("isar_proof", "false"),
     4.9     ("isar_shrink_factor", "1"),
    4.10     ("slicing", "true"),
    4.11 @@ -112,14 +111,13 @@
    4.12     ("no_overlord", "overlord"),
    4.13     ("non_blocking", "blocking"),
    4.14     ("partial_types", "full_types"),
    4.15 -   ("implicit_apply", "explicit_apply"),
    4.16     ("no_isar_proof", "isar_proof"),
    4.17     ("no_slicing", "slicing")]
    4.18  
    4.19  val params_for_minimize =
    4.20    ["debug", "verbose", "overlord", "type_sys", "full_types", "max_mono_iters",
    4.21 -   "max_new_mono_instances", "explicit_apply", "isar_proof",
    4.22 -   "isar_shrink_factor", "timeout", "preplay_timeout"]
    4.23 +   "max_new_mono_instances", "isar_proof", "isar_shrink_factor", "timeout",
    4.24 +   "preplay_timeout"]
    4.25  
    4.26  val property_dependent_params = ["provers", "full_types", "timeout"]
    4.27  
    4.28 @@ -284,7 +282,6 @@
    4.29      val max_relevant = lookup_option lookup_int "max_relevant"
    4.30      val max_mono_iters = lookup_int "max_mono_iters"
    4.31      val max_new_mono_instances = lookup_int "max_new_mono_instances"
    4.32 -    val explicit_apply = lookup_option lookup_bool "explicit_apply"
    4.33      val isar_proof = lookup_bool "isar_proof"
    4.34      val isar_shrink_factor = Int.max (1, lookup_int "isar_shrink_factor")
    4.35      val slicing = mode <> Auto_Try andalso lookup_bool "slicing"
    4.36 @@ -299,9 +296,9 @@
    4.37       provers = provers, relevance_thresholds = relevance_thresholds,
    4.38       max_relevant = max_relevant, max_mono_iters = max_mono_iters,
    4.39       max_new_mono_instances = max_new_mono_instances, type_sys = type_sys,
    4.40 -     explicit_apply = explicit_apply, isar_proof = isar_proof,
    4.41 -     isar_shrink_factor = isar_shrink_factor, slicing = slicing,
    4.42 -     timeout = timeout, preplay_timeout = preplay_timeout, expect = expect}
    4.43 +     isar_proof = isar_proof, isar_shrink_factor = isar_shrink_factor,
    4.44 +     slicing = slicing, timeout = timeout, preplay_timeout = preplay_timeout,
    4.45 +     expect = expect}
    4.46    end
    4.47  
    4.48  fun get_params mode ctxt = extract_params mode (default_raw_params ctxt)
     5.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML	Wed Jun 08 08:47:43 2011 +0200
     5.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML	Wed Jun 08 08:47:43 2011 +0200
     5.3 @@ -47,7 +47,7 @@
     5.4  fun print silent f = if silent then () else Output.urgent_message (f ())
     5.5  
     5.6  fun test_facts ({debug, verbose, overlord, provers, max_mono_iters,
     5.7 -                 max_new_mono_instances, type_sys, explicit_apply, isar_proof,
     5.8 +                 max_new_mono_instances, type_sys, isar_proof,
     5.9                   isar_shrink_factor, preplay_timeout, ...} : params)
    5.10                 silent (prover : prover) timeout i n state facts =
    5.11    let
    5.12 @@ -59,7 +59,7 @@
    5.13      val {goal, ...} = Proof.goal state
    5.14      val params =
    5.15        {debug = debug, verbose = verbose, overlord = overlord, blocking = true,
    5.16 -       provers = provers, type_sys = type_sys, explicit_apply = explicit_apply,
    5.17 +       provers = provers, type_sys = type_sys,
    5.18         relevance_thresholds = (1.01, 1.01), max_relevant = NONE,
    5.19         max_mono_iters = max_mono_iters,
    5.20         max_new_mono_instances = max_new_mono_instances, isar_proof = isar_proof,
    5.21 @@ -73,16 +73,18 @@
    5.22      val result as {outcome, used_facts, run_time_in_msecs, ...} =
    5.23        prover params (K (K "")) problem
    5.24    in
    5.25 -    print silent (fn () =>
    5.26 -        case outcome of
    5.27 -          SOME failure => string_for_failure failure
    5.28 -        | NONE => "Found proof" ^
    5.29 -                  (if length used_facts = length facts then ""
    5.30 -                   else " with " ^ n_facts used_facts) ^
    5.31 -                  (case run_time_in_msecs of
    5.32 -                     SOME ms =>
    5.33 -                     " (" ^ string_from_time (Time.fromMilliseconds ms) ^ ")"
    5.34 -                   | NONE => "") ^ ".");
    5.35 +    print silent
    5.36 +          (fn () =>
    5.37 +              case outcome of
    5.38 +                SOME failure => string_for_failure failure
    5.39 +              | NONE =>
    5.40 +                "Found proof" ^
    5.41 +                 (if length used_facts = length facts then ""
    5.42 +                  else " with " ^ n_facts used_facts) ^
    5.43 +                 (case run_time_in_msecs of
    5.44 +                    SOME ms =>
    5.45 +                    " (" ^ string_from_time (Time.fromMilliseconds ms) ^ ")"
    5.46 +                  | NONE => "") ^ ".");
    5.47      result
    5.48    end
    5.49  
     6.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Wed Jun 08 08:47:43 2011 +0200
     6.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Wed Jun 08 08:47:43 2011 +0200
     6.3 @@ -33,7 +33,6 @@
     6.4       max_relevant: int option,
     6.5       max_mono_iters: int,
     6.6       max_new_mono_instances: int,
     6.7 -     explicit_apply: bool option,
     6.8       isar_proof: bool,
     6.9       isar_shrink_factor: int,
    6.10       slicing: bool,
    6.11 @@ -301,7 +300,6 @@
    6.12     max_relevant: int option,
    6.13     max_mono_iters: int,
    6.14     max_new_mono_instances: int,
    6.15 -   explicit_apply: bool option,
    6.16     isar_proof: bool,
    6.17     isar_shrink_factor: int,
    6.18     slicing: bool,
    6.19 @@ -549,8 +547,8 @@
    6.20          ({exec, required_execs, arguments, proof_delims, known_failures,
    6.21            conj_sym_kind, prem_kind, formats, best_slices, ...} : atp_config)
    6.22          ({debug, verbose, overlord, type_sys, max_relevant, max_mono_iters,
    6.23 -          max_new_mono_instances, explicit_apply, isar_proof,
    6.24 -          isar_shrink_factor, slicing, timeout, preplay_timeout, ...} : params)
    6.25 +          max_new_mono_instances, isar_proof, isar_shrink_factor, slicing,
    6.26 +          timeout, preplay_timeout, ...} : params)
    6.27          minimize_command
    6.28          ({state, goal, subgoal, subgoal_count, facts, ...} : prover_problem) =
    6.29    let
    6.30 @@ -655,9 +653,8 @@
    6.31                  val (atp_problem, pool, conjecture_offset, facts_offset,
    6.32                       fact_names, typed_helpers, sym_tab) =
    6.33                    prepare_atp_problem ctxt format conj_sym_kind prem_kind
    6.34 -                      type_sys explicit_apply
    6.35 -                      (Config.get ctxt atp_readable_names) true hyp_ts concl_t
    6.36 -                      facts
    6.37 +                      type_sys (Config.get ctxt atp_readable_names) true hyp_ts
    6.38 +                      concl_t facts
    6.39                  fun weights () = atp_problem_weights atp_problem
    6.40                  val core =
    6.41                    File.shell_path command ^ " " ^
     7.1 --- a/src/HOL/ex/atp_export.ML	Wed Jun 08 08:47:43 2011 +0200
     7.2 +++ b/src/HOL/ex/atp_export.ML	Wed Jun 08 08:47:43 2011 +0200
     7.3 @@ -102,11 +102,10 @@
     7.4      val facts =
     7.5        facts0 |> map (fn ((_, loc), th) =>
     7.6                          ((Thm.get_name_hint th, loc), prop_of th))
     7.7 -    val explicit_apply = NONE
     7.8      val (atp_problem, _, _, _, _, _, _) =
     7.9        ATP_Translate.prepare_atp_problem ctxt format
    7.10 -          ATP_Problem.Axiom ATP_Problem.Axiom type_sys explicit_apply false true
    7.11 -          [] @{prop False} facts
    7.12 +          ATP_Problem.Axiom ATP_Problem.Axiom type_sys false true []
    7.13 +          @{prop False} facts
    7.14      val infers =
    7.15        facts0 |> map (fn (_, th) =>
    7.16                          (fact_name_of (Thm.get_name_hint th),