65 ("theory_irrelevant", "theory_relevant"), |
65 ("theory_irrelevant", "theory_relevant"), |
66 ("first_order", "higher_order"), |
66 ("first_order", "higher_order"), |
67 ("dont_follow_defs", "follow_defs"), |
67 ("dont_follow_defs", "follow_defs"), |
68 ("metis_proof", "isar_proof"), |
68 ("metis_proof", "isar_proof"), |
69 ("no_sorts", "sorts")] |
69 ("no_sorts", "sorts")] |
|
70 |
|
71 val params_for_minimize = |
|
72 ["full_types", "explicit_apply", "higher_order", "isar_proof", "modulus", |
|
73 "sorts", "minimize_timeout"] |
70 |
74 |
71 val property_dependent_params = ["atps", "full_types", "timeout"] |
75 val property_dependent_params = ["atps", "full_types", "timeout"] |
72 |
76 |
73 fun is_known_raw_param s = |
77 fun is_known_raw_param s = |
74 AList.defined (op =) default_default_params s orelse |
78 AList.defined (op =) default_default_params s orelse |
217 val running_atpsN = "running_atps" |
221 val running_atpsN = "running_atps" |
218 val kill_atpsN = "kill_atps" |
222 val kill_atpsN = "kill_atps" |
219 val refresh_tptpN = "refresh_tptp" |
223 val refresh_tptpN = "refresh_tptp" |
220 val helpN = "help" |
224 val helpN = "help" |
221 |
225 |
222 |
|
223 fun minimizize_raw_param_name "timeout" = "minimize_timeout" |
226 fun minimizize_raw_param_name "timeout" = "minimize_timeout" |
224 | minimizize_raw_param_name name = name |
227 | minimizize_raw_param_name name = name |
|
228 |
|
229 val is_raw_param_relevant_for_minimize = |
|
230 member (op =) params_for_minimize o fst o unalias_raw_param |
|
231 fun string_for_raw_param (key, values) = |
|
232 key ^ (case space_implode " " values of |
|
233 "" => "" |
|
234 | value => " = " ^ value) |
|
235 |
|
236 fun minimize_command override_params i atp_name facts = |
|
237 "sledgehammer minimize [atp = " ^ atp_name ^ |
|
238 (override_params |> filter is_raw_param_relevant_for_minimize |
|
239 |> implode o map (prefix ", " o string_for_raw_param)) ^ |
|
240 "] (" ^ space_implode " " facts ^ ")" ^ |
|
241 (if i = 1 then "" else " " ^ string_of_int i) |
225 |
242 |
226 fun hammer_away override_params subcommand opt_i relevance_override state = |
243 fun hammer_away override_params subcommand opt_i relevance_override state = |
227 let |
244 let |
228 val thy = Proof.theory_of state |
245 val thy = Proof.theory_of state |
229 val _ = List.app check_raw_param override_params |
246 val _ = List.app check_raw_param override_params |
230 in |
247 in |
231 if subcommand = runN then |
248 if subcommand = runN then |
232 sledgehammer (get_params thy override_params) (the_default 1 opt_i) |
249 let val i = the_default 1 opt_i in |
233 relevance_override state |
250 sledgehammer (get_params thy override_params) i relevance_override |
|
251 (minimize_command override_params i) state |
|
252 end |
234 else if subcommand = minimizeN then |
253 else if subcommand = minimizeN then |
235 minimize (map (apfst minimizize_raw_param_name) override_params) [] |
254 minimize (map (apfst minimizize_raw_param_name) override_params) [] |
236 (the_default 1 opt_i) (#add relevance_override) state |
255 (the_default 1 opt_i) (#add relevance_override) state |
237 else if subcommand = messagesN then |
256 else if subcommand = messagesN then |
238 messages opt_i |
257 messages opt_i |