minor refactoring
authorblanchet
Wed, 28 Jul 2010 18:54:18 +0200
changeset 38290463177795c49
parent 38289 f31ddd5da4e3
child 38291 f367847f5068
minor refactoring
src/HOL/Tools/Sledgehammer/sledgehammer.ML
src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
src/HOL/Tools/Sledgehammer/sledgehammer_util.ML
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer.ML	Wed Jul 28 18:45:18 2010 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer.ML	Wed Jul 28 18:54:18 2010 +0200
     1.3 @@ -53,9 +53,9 @@
     1.4    val running_atps: unit -> unit
     1.5    val messages: int option -> unit
     1.6    val get_prover_fun : theory -> string -> prover
     1.7 -  val start_prover_thread :
     1.8 -    params -> int -> int -> relevance_override -> (string -> minimize_command)
     1.9 -    -> Proof.state -> string -> unit
    1.10 +  val run_sledgehammer :
    1.11 +    params -> int -> relevance_override -> (string -> minimize_command)
    1.12 +    -> Proof.state -> unit
    1.13    val setup : theory -> theory
    1.14  end;
    1.15  
    1.16 @@ -845,7 +845,6 @@
    1.17  
    1.18  fun get_prover_fun thy name = prover_fun name (get_prover thy name)
    1.19  
    1.20 -(* start prover thread *)
    1.21  fun start_prover_thread (params as {verbose, full_types, timeout, ...}) i n
    1.22                          relevance_override minimize_command proof_state name =
    1.23    let
    1.24 @@ -871,6 +870,19 @@
    1.25              end)
    1.26    end
    1.27  
    1.28 +fun run_sledgehammer {atps = [], ...} _ _ _ _ = error "No ATP is set."
    1.29 +  | run_sledgehammer (params as {atps, ...}) i relevance_override
    1.30 +                     minimize_command state =
    1.31 +    case subgoal_count state of
    1.32 +      0 => priority "No subgoal!"
    1.33 +    | n =>
    1.34 +      let
    1.35 +        val _ = kill_atps ()
    1.36 +        val _ = priority "Sledgehammering..."
    1.37 +        val _ = app (start_prover_thread params i n relevance_override
    1.38 +                                         minimize_command state) atps
    1.39 +      in () end
    1.40 +
    1.41  val setup =
    1.42    dest_dir_setup
    1.43    #> problem_prefix_setup
     2.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 28 18:45:18 2010 +0200
     2.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Wed Jul 28 18:54:18 2010 +0200
     2.3 @@ -188,22 +188,8 @@
     2.4  fun get_params thy = extract_params (default_raw_params thy)
     2.5  fun default_params thy = get_params thy o map (apsnd single)
     2.6  
     2.7 -val subgoal_count = Logic.count_prems o prop_of o #goal o Proof.goal
     2.8 -
     2.9  (* Sledgehammer the given subgoal *)
    2.10  
    2.11 -fun run {atps = [], ...} _ _ _ _ = error "No ATP is set."
    2.12 -  | run (params as {atps, ...}) i relevance_override minimize_command state =
    2.13 -    case subgoal_count state of
    2.14 -      0 => priority "No subgoal!"
    2.15 -    | n =>
    2.16 -      let
    2.17 -        val _ = kill_atps ()
    2.18 -        val _ = priority "Sledgehammering..."
    2.19 -        val _ = app (start_prover_thread params i n relevance_override
    2.20 -                                         minimize_command state) atps
    2.21 -      in () end
    2.22 -
    2.23  fun minimize override_params i refs state =
    2.24    let
    2.25      val thy = Proof.theory_of state
    2.26 @@ -252,8 +238,8 @@
    2.27    in
    2.28      if subcommand = runN then
    2.29        let val i = the_default 1 opt_i in
    2.30 -        run (get_params thy override_params) i relevance_override
    2.31 -            (minimize_command override_params i) state
    2.32 +        run_sledgehammer (get_params thy override_params) i relevance_override
    2.33 +                         (minimize_command override_params i) state
    2.34        end
    2.35      else if subcommand = minimizeN then
    2.36        minimize (map (apfst minimizize_raw_param_name) override_params)
     3.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_util.ML	Wed Jul 28 18:45:18 2010 +0200
     3.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_util.ML	Wed Jul 28 18:54:18 2010 +0200
     3.3 @@ -17,6 +17,7 @@
     3.4    val maybe_quote : string -> string
     3.5    val monomorphic_term : Type.tyenv -> term -> term
     3.6    val specialize_type : theory -> (string * typ) -> term -> term
     3.7 +  val subgoal_count : Proof.state -> int
     3.8    val strip_subgoal : thm -> int -> (string * typ) list * term list * term
     3.9  end;
    3.10   
    3.11 @@ -124,6 +125,8 @@
    3.12      | NONE => raise Type.TYPE_MATCH
    3.13    end
    3.14  
    3.15 +val subgoal_count = Logic.count_prems o prop_of o #goal o Proof.goal
    3.16 +
    3.17  fun strip_subgoal goal i =
    3.18    let
    3.19      val (t, frees) = Logic.goal_params (prop_of goal) i