make "prepare_atp_problem" more robust w.r.t. choice of type system
--- a/src/HOL/Tools/ATP/atp_translate.ML Tue May 31 16:38:36 2011 +0200
+++ b/src/HOL/Tools/ATP/atp_translate.ML Tue May 31 16:38:36 2011 +0200
@@ -103,6 +103,7 @@
val level_of_type_sys : type_system -> type_level
val is_type_sys_virtually_sound : type_system -> bool
val is_type_sys_fairly_sound : type_system -> bool
+ val choose_format : format list -> type_system -> format * type_system
val raw_type_literals_for_types : typ list -> type_literal list
val unmangled_const : string -> string * string fo_term list
val translate_atp_fact :
@@ -568,6 +569,20 @@
fun is_setting_higher_order THF (Simple_Types _) = true
| is_setting_higher_order _ _ = false
+fun choose_format formats (Simple_Types level) =
+ if member (op =) formats THF then (THF, Simple_Types level)
+ else if member (op =) formats TFF then (TFF, Simple_Types level)
+ else choose_format formats (Preds (Mangled_Monomorphic, level, Heavy))
+ | choose_format formats type_sys =
+ (case hd formats of
+ CNF_UEQ =>
+ (CNF_UEQ, case type_sys of
+ Preds stuff =>
+ (if is_type_sys_fairly_sound type_sys then Preds else Tags)
+ stuff
+ | _ => type_sys)
+ | format => (format, type_sys))
+
type translated_formula =
{name: string,
locality: locality,
@@ -1756,6 +1771,7 @@
explicit_apply readable_names preproc hyp_ts concl_t
facts =
let
+ val (format, type_sys) = choose_format [format] type_sys
val (fact_names, (conjs, facts, class_rel_clauses, arity_clauses)) =
translate_formulas ctxt format prem_kind type_sys preproc hyp_ts concl_t
facts
--- a/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML Tue May 31 16:38:36 2011 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML Tue May 31 16:38:36 2011 +0200
@@ -514,30 +514,13 @@
val fallback_best_type_systems =
[Preds (Mangled_Monomorphic, Nonmonotonic_Types, Light)]
-fun adjust_dumb_type_sys formats (Simple_Types level) =
- if member (op =) formats THF then
- (THF, Simple_Types level)
- else if member (op =) formats TFF then
- (TFF, Simple_Types level)
- else
- adjust_dumb_type_sys formats (Preds (Mangled_Monomorphic, level, Heavy))
- | adjust_dumb_type_sys formats type_sys =
- (case hd formats of
- CNF_UEQ =>
- (CNF_UEQ, case type_sys of
- Preds stuff =>
- (if is_type_sys_fairly_sound type_sys then Preds else Tags)
- stuff
- | _ => type_sys)
- | format => (format, type_sys))
-
fun choose_format_and_type_sys _ formats (Dumb_Type_Sys type_sys) =
- adjust_dumb_type_sys formats type_sys
+ choose_format formats type_sys
| choose_format_and_type_sys best_type_systems formats
(Smart_Type_Sys full_types) =
map type_sys_from_string best_type_systems @ fallback_best_type_systems
|> find_first (if full_types then is_type_sys_virtually_sound else K true)
- |> the |> adjust_dumb_type_sys formats
+ |> the |> choose_format formats
val metis_minimize_max_time = seconds 2.0