added sledgehammer parameters isar_try0 and isar_minimize and their negative aliases
authorsmolkas
Fri, 12 Jul 2013 22:41:25 +0200
changeset 5376923393c31c7fe
parent 53768 564a108d722f
child 53770 21774f0b7bc0
added sledgehammer parameters isar_try0 and isar_minimize and their negative aliases
src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML
src/HOL/Tools/Sledgehammer/sledgehammer_minimize_isar.ML
src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
src/HOL/Tools/Sledgehammer/sledgehammer_reconstruct.ML
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Fri Jul 12 21:14:54 2013 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Fri Jul 12 22:41:25 2013 +0200
     1.3 @@ -102,6 +102,8 @@
     1.4     ("isar_compress", "10"),
     1.5     ("isar_compress_degree", "2"), (* TODO: document; right value?? *)
     1.6     ("merge_timeout_slack", "1.2"), (* TODO: document *)
     1.7 +   ("isar_try0", "true"), (* TODO: document *)
     1.8 +   ("isar_minimize", "true"), (* TODO: document *)
     1.9     ("slice", "true"),
    1.10     ("minimize", "smart"),
    1.11     ("preplay_timeout", "3"),
    1.12 @@ -123,13 +125,16 @@
    1.13     ("no_isar_proofs", "isar_proofs"),
    1.14     ("dont_slice", "slice"),
    1.15     ("dont_minimize", "minimize"),
    1.16 +   ("dont_try0_isar", "isar_try0"),
    1.17 +   ("dont_minimize_isar", "isar_minimize"),
    1.18     ("no_preplay_trace", "preplay_trace")] (* TODO: document *)
    1.19  
    1.20  val params_for_minimize =
    1.21    ["debug", "verbose", "overlord", "type_enc", "strict", "lam_trans",
    1.22     "uncurried_aliases", "max_mono_iters", "max_new_mono_instances",
    1.23     "learn", "isar_proofs", "isar_compress", "timeout", "preplay_timeout"]
    1.24 -(* TODO: add isar_compress_degree, merge_timeout_slack,  preplay_trace? *)
    1.25 +(* TODO: add isar_compress_degree, merge_timeout_slack,  preplay_trace,
    1.26 +   isar_try0, isar_minimize? *)
    1.27  
    1.28  val property_dependent_params = ["provers", "timeout"]
    1.29  
    1.30 @@ -313,6 +318,8 @@
    1.31      val isar_compress = Real.max (1.0, lookup_real "isar_compress")
    1.32      val isar_compress_degree = Int.max (1, lookup_int "isar_compress_degree")
    1.33      val merge_timeout_slack = Real.max (1.0, lookup_real "merge_timeout_slack")
    1.34 +    val isar_try0 = lookup_bool "isar_try0"
    1.35 +    val isar_minimize = lookup_bool "isar_minimize"
    1.36      val slice = mode <> Auto_Try andalso lookup_bool "slice"
    1.37      val minimize =
    1.38        if mode = Auto_Try then NONE else lookup_option lookup_bool "minimize"
    1.39 @@ -330,7 +337,8 @@
    1.40       fact_thresholds = fact_thresholds, max_mono_iters = max_mono_iters,
    1.41       max_new_mono_instances = max_new_mono_instances, isar_proofs = isar_proofs,
    1.42       isar_compress = isar_compress, isar_compress_degree = isar_compress_degree,
    1.43 -     merge_timeout_slack = merge_timeout_slack, slice = slice,
    1.44 +     merge_timeout_slack = merge_timeout_slack, isar_try0 = isar_try0,
    1.45 +     isar_minimize = isar_minimize, slice = slice,
    1.46       minimize = minimize, timeout = timeout, preplay_timeout = preplay_timeout,
    1.47       preplay_trace = preplay_trace, expect = expect}
    1.48    end
     2.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML	Fri Jul 12 21:14:54 2013 +0200
     2.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML	Fri Jul 12 22:41:25 2013 +0200
     2.3 @@ -59,6 +59,7 @@
     2.4                   max_new_mono_instances, type_enc, strict, lam_trans,
     2.5                   uncurried_aliases, isar_proofs, isar_compress,
     2.6                   isar_compress_degree, merge_timeout_slack,
     2.7 +                 isar_try0, isar_minimize,
     2.8                   preplay_timeout, preplay_trace, ...} : params)
     2.9                 silent (prover : prover) timeout i n state facts =
    2.10    let
    2.11 @@ -83,6 +84,7 @@
    2.12         isar_proofs = isar_proofs, isar_compress = isar_compress,
    2.13         isar_compress_degree = isar_compress_degree,
    2.14         merge_timeout_slack = merge_timeout_slack,
    2.15 +       isar_try0 = isar_try0, isar_minimize = isar_minimize,
    2.16         slice = false, minimize = SOME false, timeout = timeout,
    2.17         preplay_timeout = preplay_timeout, preplay_trace = preplay_trace,
    2.18         expect = ""}
    2.19 @@ -255,7 +257,8 @@
    2.20          ({debug, verbose, overlord, blocking, provers, type_enc, strict,
    2.21           lam_trans, uncurried_aliases, learn, fact_filter, max_facts,
    2.22           fact_thresholds, max_mono_iters, max_new_mono_instances, isar_proofs,
    2.23 -         isar_compress, isar_compress_degree, merge_timeout_slack, slice,
    2.24 +         isar_compress, isar_compress_degree, merge_timeout_slack, isar_try0,
    2.25 +         isar_minimize, slice,
    2.26           minimize, timeout, preplay_timeout, preplay_trace, expect} : params) =
    2.27    let
    2.28      fun lookup_override name default_value =
    2.29 @@ -274,7 +277,8 @@
    2.30       fact_thresholds = fact_thresholds, max_mono_iters = max_mono_iters,
    2.31       max_new_mono_instances = max_new_mono_instances, isar_proofs = isar_proofs,
    2.32       isar_compress = isar_compress, isar_compress_degree = isar_compress_degree,
    2.33 -     merge_timeout_slack = merge_timeout_slack, slice = slice,
    2.34 +     merge_timeout_slack = merge_timeout_slack,
    2.35 +     isar_try0 = isar_try0, isar_minimize = isar_minimize, slice = slice,
    2.36       minimize = minimize, timeout = timeout, preplay_timeout = preplay_timeout,
    2.37       preplay_trace = preplay_trace, expect = expect}
    2.38    end
     3.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_minimize_isar.ML	Fri Jul 12 21:14:54 2013 +0200
     3.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_minimize_isar.ML	Fri Jul 12 22:41:25 2013 +0200
     3.3 @@ -10,7 +10,7 @@
     3.4    type preplay_interface = Sledgehammer_Preplay.preplay_interface
     3.5    type isar_proof = Sledgehammer_Proof.isar_proof
     3.6    val minimize_dependencies_and_remove_unrefed_steps :
     3.7 -    preplay_interface -> isar_proof -> isar_proof
     3.8 +    bool -> preplay_interface -> isar_proof -> isar_proof
     3.9  end
    3.10  
    3.11  
    3.12 @@ -50,7 +50,8 @@
    3.13        mk_step_lfs_gfs min_lfs min_gfs
    3.14      end)
    3.15  
    3.16 -fun minimize_dependencies_and_remove_unrefed_steps preplay_interface proof =
    3.17 +fun minimize_dependencies_and_remove_unrefed_steps
    3.18 +  isar_minimize preplay_interface proof =
    3.19    let
    3.20      fun cons_to xs x = x :: xs
    3.21  
    3.22 @@ -85,7 +86,8 @@
    3.23              (refed, accu)
    3.24  
    3.25      and do_refed_step step =
    3.26 -      min_deps_of_step preplay_interface step
    3.27 +      step
    3.28 +      |> isar_minimize ? min_deps_of_step preplay_interface
    3.29        |> do_refed_step'
    3.30  
    3.31      and do_refed_step' (Let _) = raise Fail "Sledgehammer_Minimize_Isar"
     4.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Fri Jul 12 21:14:54 2013 +0200
     4.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Fri Jul 12 22:41:25 2013 +0200
     4.3 @@ -38,6 +38,8 @@
     4.4       isar_compress : real,
     4.5       isar_compress_degree : int,
     4.6       merge_timeout_slack : real,
     4.7 +     isar_try0 : bool,
     4.8 +     isar_minimize : bool,
     4.9       slice : bool,
    4.10       minimize : bool option,
    4.11       timeout : Time.time option,
    4.12 @@ -351,6 +353,8 @@
    4.13     isar_compress : real,
    4.14     isar_compress_degree : int,
    4.15     merge_timeout_slack : real,
    4.16 +   isar_try0 : bool,
    4.17 +   isar_minimize : bool,
    4.18     slice : bool,
    4.19     minimize : bool option,
    4.20     timeout : Time.time option,
    4.21 @@ -684,6 +688,7 @@
    4.22                      uncurried_aliases, fact_filter, max_facts, max_mono_iters,
    4.23                      max_new_mono_instances, isar_proofs, isar_compress,
    4.24                      isar_compress_degree, merge_timeout_slack,
    4.25 +                    isar_try0, isar_minimize,
    4.26                      slice, timeout, preplay_timeout, preplay_trace, ...})
    4.27          minimize_command
    4.28          ({state, goal, subgoal, subgoal_count, factss, ...} : prover_problem) =
    4.29 @@ -959,6 +964,7 @@
    4.30                  val isar_params =
    4.31                    (debug, verbose, preplay_timeout, preplay_trace, isar_compress,
    4.32                     isar_compress_degree, merge_timeout_slack,
    4.33 +                   isar_try0,isar_minimize,
    4.34                     pool, fact_names, lifted, sym_tab, atp_proof, goal)
    4.35                  val one_line_params =
    4.36                    (preplay, proof_banner mode name, used_facts,
     5.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_reconstruct.ML	Fri Jul 12 21:14:54 2013 +0200
     5.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_reconstruct.ML	Fri Jul 12 22:41:25 2013 +0200
     5.3 @@ -12,7 +12,7 @@
     5.4    type one_line_params = Sledgehammer_Print.one_line_params
     5.5  
     5.6    type isar_params =
     5.7 -    bool * bool * Time.time option * bool * real * int * real
     5.8 +    bool * bool * Time.time option * bool * real * int * real * bool * bool
     5.9      * string Symtab.table * (string * stature) list vector
    5.10      * (string * term) list * int Symtab.table * string proof * thm
    5.11  
    5.12 @@ -409,14 +409,14 @@
    5.13    in chain_proof end
    5.14  
    5.15  type isar_params =
    5.16 -  bool * bool * Time.time option * bool * real * int * real
    5.17 +  bool * bool * Time.time option * bool * real * int * real * bool * bool
    5.18    * string Symtab.table * (string * stature) list vector
    5.19    * (string * term) list * int Symtab.table * string proof * thm
    5.20  
    5.21  fun isar_proof_text ctxt isar_proofs
    5.22      (debug, verbose, preplay_timeout, preplay_trace, isar_compress,
    5.23 -     isar_compress_degree, merge_timeout_slack, pool, fact_names, lifted,
    5.24 -     sym_tab, atp_proof, goal)
    5.25 +     isar_compress_degree, merge_timeout_slack, isar_try0, isar_minimize, pool,
    5.26 +     fact_names, lifted, sym_tab, atp_proof, goal)
    5.27      (one_line_params as (_, _, _, _, subgoal, subgoal_count)) =
    5.28    let
    5.29      val (params, hyp_ts, concl_t) = strip_subgoal goal subgoal ctxt
    5.30 @@ -594,8 +594,9 @@
    5.31                 (if isar_proofs = SOME true then isar_compress else 1000.0)
    5.32                 (if isar_proofs = SOME true then isar_compress_degree else 100)
    5.33                 merge_timeout_slack preplay_interface
    5.34 -          |> try0 preplay_timeout preplay_interface
    5.35 -          |> minimize_dependencies_and_remove_unrefed_steps preplay_interface
    5.36 +          |> isar_try0 ? try0 preplay_timeout preplay_interface
    5.37 +          |> minimize_dependencies_and_remove_unrefed_steps isar_minimize
    5.38 +               preplay_interface
    5.39            |> `overall_preplay_stats
    5.40            ||> clean_up_labels_in_proof
    5.41          val isar_text = string_of_proof ctxt type_enc lam_trans subgoal