src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 49329 ee33ba3c0e05
parent 49323 89674e5a4d35
child 49334 340187063d84
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 18 08:44:04 2012 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 18 08:44:04 2012 +0200
     1.3 @@ -84,8 +84,9 @@
     1.4     ("strict", "false"),
     1.5     ("lam_trans", "smart"),
     1.6     ("uncurried_aliases", "smart"),
     1.7 +   ("fact_filter", "smart"),
     1.8 +   ("max_facts", "smart"),
     1.9     ("fact_thresholds", "0.45 0.85"),
    1.10 -   ("max_facts", "smart"),
    1.11     ("max_mono_iters", "smart"),
    1.12     ("max_new_mono_instances", "smart"),
    1.13     ("isar_proof", "false"),
    1.14 @@ -147,8 +148,8 @@
    1.15  
    1.16  val any_type_enc = type_enc_from_string Strict "erased"
    1.17  
    1.18 -(* "provers =", "type_enc =", and "lam_trans" can be omitted. For the last two,
    1.19 -   this is a secret feature. *)
    1.20 +(* "provers =", "type_enc =", "lam_trans =", and "fact_filter =" can be omitted.
    1.21 +   For the last three, this is a secret feature. *)
    1.22  fun normalize_raw_param ctxt =
    1.23    unalias_raw_param
    1.24    #> (fn (name, value) =>
    1.25 @@ -161,6 +162,8 @@
    1.26           else if can (trans_lams_from_string ctxt any_type_enc) name andalso
    1.27                   null value then
    1.28             ("lam_trans", [name])
    1.29 +         else if member (op =) fact_filters name then
    1.30 +           ("fact_filter", [name])
    1.31           else
    1.32             error ("Unknown parameter: " ^ quote name ^ "."))
    1.33  
    1.34 @@ -291,8 +294,9 @@
    1.35      val strict = mode = Auto_Try orelse lookup_bool "strict"
    1.36      val lam_trans = lookup_option lookup_string "lam_trans"
    1.37      val uncurried_aliases = lookup_option lookup_bool "uncurried_aliases"
    1.38 +    val fact_filter = lookup_option lookup_string "fact_filter"
    1.39 +    val max_facts = lookup_option lookup_int "max_facts"
    1.40      val fact_thresholds = lookup_real_pair "fact_thresholds"
    1.41 -    val max_facts = lookup_option lookup_int "max_facts"
    1.42      val max_mono_iters = lookup_option lookup_int "max_mono_iters"
    1.43      val max_new_mono_instances =
    1.44        lookup_option lookup_int "max_new_mono_instances"
    1.45 @@ -311,8 +315,8 @@
    1.46      {debug = debug, verbose = verbose, overlord = overlord, blocking = blocking,
    1.47       provers = provers, type_enc = type_enc, strict = strict,
    1.48       lam_trans = lam_trans, uncurried_aliases = uncurried_aliases,
    1.49 -     fact_thresholds = fact_thresholds, max_facts = max_facts,
    1.50 -     max_mono_iters = max_mono_iters,
    1.51 +     fact_filter = fact_filter, max_facts = max_facts,
    1.52 +     fact_thresholds = fact_thresholds, max_mono_iters = max_mono_iters,
    1.53       max_new_mono_instances = max_new_mono_instances,  isar_proof = isar_proof,
    1.54       isar_shrink_factor = isar_shrink_factor, slice = slice,
    1.55       minimize = minimize, timeout = timeout, preplay_timeout = preplay_timeout,