src/HOL/Tools/Sledgehammer/sledgehammer_run.ML
changeset 54141 f57f8e7a879f
parent 54126 6675cdc0d1ae
child 54503 b490e15a5e19
equal deleted inserted replaced
54140:564b8adb0952 54141:f57f8e7a879f
    66     else "\n" ^ Syntax.string_of_term ctxt (Thm.term_of (Thm.cprem_of goal i))))
    66     else "\n" ^ Syntax.string_of_term ctxt (Thm.term_of (Thm.cprem_of goal i))))
    67 
    67 
    68 fun launch_prover (params as {debug, verbose, spy, blocking, max_facts, slice,
    68 fun launch_prover (params as {debug, verbose, spy, blocking, max_facts, slice,
    69                               timeout, expect, ...})
    69                               timeout, expect, ...})
    70         mode output_result minimize_command only learn
    70         mode output_result minimize_command only learn
    71         {state, goal, subgoal, subgoal_count, factss as (_, facts) :: _} name =
    71         {comment, state, goal, subgoal, subgoal_count, factss as (_, facts) :: _} name =
    72   let
    72   let
    73     val ctxt = Proof.context_of state
    73     val ctxt = Proof.context_of state
    74 
    74 
    75     val hard_timeout = time_mult 3.0 (timeout |> the_default one_day)
    75     val hard_timeout = time_mult 3.0 (timeout |> the_default one_day)
    76     val _ = spying spy (fn () => (state, subgoal, name, "Launched"));
    76     val _ = spying spy (fn () => (state, subgoal, name, "Launched"));
    80     val num_facts = length facts |> not only ? Integer.min max_facts
    80     val num_facts = length facts |> not only ? Integer.min max_facts
    81 
    81 
    82     fun desc () = prover_description ctxt params name num_facts subgoal subgoal_count goal
    82     fun desc () = prover_description ctxt params name num_facts subgoal subgoal_count goal
    83 
    83 
    84     val problem =
    84     val problem =
    85       {state = state, goal = goal, subgoal = subgoal,
    85       {comment = comment, state = state, goal = goal, subgoal = subgoal,
    86        subgoal_count = subgoal_count,
    86        subgoal_count = subgoal_count,
    87        factss = factss
    87        factss = factss
    88          |> map (apsnd ((not (is_ho_atp ctxt name)
    88          |> map (apsnd ((not (is_ho_atp ctxt name)
    89                          ? filter_out (fn ((_, (_, Induction)), _) => true
    89                          ? filter_out (fn ((_, (_, Induction)), _) => true
    90                                         | _ => false))
    90                                         | _ => false))
   280 
   280 
   281       fun launch_provers state label is_appropriate_prop provers =
   281       fun launch_provers state label is_appropriate_prop provers =
   282         let
   282         let
   283           val factss = get_factss label is_appropriate_prop provers
   283           val factss = get_factss label is_appropriate_prop provers
   284           val problem =
   284           val problem =
   285             {state = state, goal = goal, subgoal = i, subgoal_count = n,
   285             {comment = "", state = state, goal = goal, subgoal = i, subgoal_count = n,
   286              factss = factss}
   286              factss = factss}
   287           fun learn prover =
   287           fun learn prover =
   288             mash_learn_proof ctxt params prover (prop_of goal) all_facts
   288             mash_learn_proof ctxt params prover (prop_of goal) all_facts
   289           val launch =
   289           val launch =
   290             launch_prover params mode output_result minimize_command only learn
   290             launch_prover params mode output_result minimize_command only learn