src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 49307 7fcee834c7f5
parent 49265 1065c307fafe
child 49308 914ca0827804
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 18 08:44:03 2012 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 18 08:44:03 2012 +0200
     1.3 @@ -45,18 +45,14 @@
     1.4  
     1.5  (** Sledgehammer commands **)
     1.6  
     1.7 -fun add_relevance_override ns : relevance_override =
     1.8 -  {add = ns, del = [], only = false}
     1.9 -fun del_relevance_override ns : relevance_override =
    1.10 -  {add = [], del = ns, only = false}
    1.11 -fun only_relevance_override ns : relevance_override =
    1.12 -  {add = ns, del = [], only = true}
    1.13 -fun merge_relevance_override_pairwise (r1 : relevance_override)
    1.14 -                                      (r2 : relevance_override) =
    1.15 +fun add_fact_override ns : fact_override = {add = ns, del = [], only = false}
    1.16 +fun del_fact_override ns : fact_override = {add = [], del = ns, only = false}
    1.17 +fun only_fact_override ns : fact_override = {add = ns, del = [], only = true}
    1.18 +fun merge_fact_override_pairwise (r1 : fact_override) (r2 : fact_override) =
    1.19    {add = #add r1 @ #add r2, del = #del r1 @ #del r2,
    1.20     only = #only r1 andalso #only r2}
    1.21 -fun merge_relevance_overrides rs =
    1.22 -  fold merge_relevance_override_pairwise rs (only_relevance_override [])
    1.23 +fun merge_fact_overrides rs =
    1.24 +  fold merge_fact_override_pairwise rs (only_fact_override [])
    1.25  
    1.26  (*** parameters ***)
    1.27  
    1.28 @@ -350,7 +346,7 @@
    1.29      (if i = 1 then "" else " " ^ string_of_int i)
    1.30    end
    1.31  
    1.32 -fun hammer_away override_params subcommand opt_i relevance_override state =
    1.33 +fun hammer_away override_params subcommand opt_i fact_override state =
    1.34    let
    1.35      val ctxt = Proof.context_of state
    1.36      val override_params = override_params |> map (normalize_raw_param ctxt)
    1.37 @@ -358,7 +354,7 @@
    1.38      if subcommand = runN then
    1.39        let val i = the_default 1 opt_i in
    1.40          run_sledgehammer (get_params Normal ctxt override_params) Normal i
    1.41 -                         relevance_override (minimize_command override_params i)
    1.42 +                         fact_override (minimize_command override_params i)
    1.43                           state
    1.44          |> K ()
    1.45        end
    1.46 @@ -366,7 +362,7 @@
    1.47        run_minimize (get_params Minimize ctxt
    1.48                                 (("provers", [default_minimize_prover]) ::
    1.49                                  override_params))
    1.50 -                   (the_default 1 opt_i) (#add relevance_override) state
    1.51 +                   (the_default 1 opt_i) (#add fact_override) state
    1.52      else if subcommand = messagesN then
    1.53        messages opt_i
    1.54      else if subcommand = supported_proversN then
    1.55 @@ -381,8 +377,8 @@
    1.56        error ("Unknown subcommand: " ^ quote subcommand ^ ".")
    1.57    end
    1.58  
    1.59 -fun sledgehammer_trans (((subcommand, params), relevance_override), opt_i) =
    1.60 -  Toplevel.keep (hammer_away params subcommand opt_i relevance_override
    1.61 +fun sledgehammer_trans (((subcommand, params), fact_override), opt_i) =
    1.62 +  Toplevel.keep (hammer_away params subcommand opt_i fact_override
    1.63                   o Toplevel.proof_of)
    1.64  
    1.65  fun string_for_raw_param (name, value) = name ^ " = " ^ implode_param value
    1.66 @@ -410,19 +406,19 @@
    1.67  val parse_fact_refs =
    1.68    Scan.repeat1 (Scan.unless (Parse.name -- Args.colon) Parse_Spec.xthm)
    1.69  val parse_relevance_chunk =
    1.70 -  (Args.add |-- Args.colon |-- parse_fact_refs >> add_relevance_override)
    1.71 -  || (Args.del |-- Args.colon |-- parse_fact_refs >> del_relevance_override)
    1.72 -  || (parse_fact_refs >> only_relevance_override)
    1.73 -val parse_relevance_override =
    1.74 +  (Args.add |-- Args.colon |-- parse_fact_refs >> add_fact_override)
    1.75 +  || (Args.del |-- Args.colon |-- parse_fact_refs >> del_fact_override)
    1.76 +  || (parse_fact_refs >> only_fact_override)
    1.77 +val parse_fact_override =
    1.78    Scan.optional (Args.parens (Scan.repeat parse_relevance_chunk
    1.79 -                              >> merge_relevance_overrides))
    1.80 -                no_relevance_override
    1.81 +                              >> merge_fact_overrides))
    1.82 +                no_fact_override
    1.83  
    1.84  val _ =
    1.85    Outer_Syntax.improper_command @{command_spec "sledgehammer"}
    1.86      "search for first-order proof using automatic theorem provers"
    1.87      ((Scan.optional Parse.short_ident runN -- parse_params
    1.88 -      -- parse_relevance_override -- Scan.option Parse.nat) #>> sledgehammer_trans)
    1.89 +      -- parse_fact_override -- Scan.option Parse.nat) #>> sledgehammer_trans)
    1.90  val _ =
    1.91    Outer_Syntax.command @{command_spec "sledgehammer_params"}
    1.92      "set and display the default parameters for Sledgehammer"
    1.93 @@ -434,7 +430,7 @@
    1.94      val mode = if auto then Auto_Try else Try
    1.95      val i = 1
    1.96    in
    1.97 -    run_sledgehammer (get_params mode ctxt []) mode i no_relevance_override
    1.98 +    run_sledgehammer (get_params mode ctxt []) mode i no_fact_override
    1.99                       (minimize_command [] i) state
   1.100    end
   1.101