src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
changeset 48331 f190a6dbb29b
parent 48321 c552d7f1720b
child 48376 416e4123baf3
equal deleted inserted replaced
48330:192444b53e86 48331:f190a6dbb29b
   625   | suffix_for_mode Minimize = "_min"
   625   | suffix_for_mode Minimize = "_min"
   626 
   626 
   627 (* Give the ATPs some slack before interrupting them the hard way. "z3_tptp" on
   627 (* Give the ATPs some slack before interrupting them the hard way. "z3_tptp" on
   628    Linux appears to be the only ATP that does not honor its time limit. *)
   628    Linux appears to be the only ATP that does not honor its time limit. *)
   629 val atp_timeout_slack = seconds 1.0
   629 val atp_timeout_slack = seconds 1.0
       
   630 
       
   631 val mono_max_privileged_facts = 10
   630 
   632 
   631 fun run_atp mode name
   633 fun run_atp mode name
   632         ({exec, required_vars, arguments, proof_delims, known_failures,
   634         ({exec, required_vars, arguments, proof_delims, known_failures,
   633           prem_role, best_slices, best_max_mono_iters,
   635           prem_role, best_slices, best_max_mono_iters,
   634           best_max_new_mono_instances, ...} : atp_config)
   636           best_max_new_mono_instances, ...} : atp_config)
   699                 (* pseudo-theorem involving the same constants as the subgoal *)
   701                 (* pseudo-theorem involving the same constants as the subgoal *)
   700                 val subgoal_th =
   702                 val subgoal_th =
   701                   Logic.list_implies (hyp_ts, concl_t)
   703                   Logic.list_implies (hyp_ts, concl_t)
   702                   |> Skip_Proof.make_thm thy
   704                   |> Skip_Proof.make_thm thy
   703                 val rths =
   705                 val rths =
   704                   facts |> chop (length facts div 4)
   706                   facts |> chop mono_max_privileged_facts
   705                         |>> map (pair 1 o snd)
   707                         |>> map (pair 1 o snd)
   706                         ||> map (pair 2 o snd)
   708                         ||> map (pair 2 o snd)
   707                         |> op @
   709                         |> op @
   708                         |> cons (0, subgoal_th)
   710                         |> cons (0, subgoal_th)
   709               in
   711               in