9 |
9 |
10 signature METIS_TACTICS = |
10 signature METIS_TACTICS = |
11 sig |
11 sig |
12 val metisN : string |
12 val metisN : string |
13 val metisFT_N : string |
13 val metisFT_N : string |
|
14 val default_unsound_type_sys : string |
|
15 val default_sound_type_sys : string |
14 val trace : bool Config.T |
16 val trace : bool Config.T |
15 val verbose : bool Config.T |
17 val verbose : bool Config.T |
16 val new_skolemizer : bool Config.T |
18 val new_skolemizer : bool Config.T |
17 val old_metis_tac : Proof.context -> thm list -> int -> tactic |
19 val old_metis_tac : Proof.context -> thm list -> int -> tactic |
18 val old_metisF_tac : Proof.context -> thm list -> int -> tactic |
20 val old_metisF_tac : Proof.context -> thm list -> int -> tactic |
19 val old_metisH_tac : Proof.context -> thm list -> int -> tactic |
|
20 val old_metisFT_tac : Proof.context -> thm list -> int -> tactic |
21 val old_metisFT_tac : Proof.context -> thm list -> int -> tactic |
21 val new_metis_tac : string list -> Proof.context -> thm list -> int -> tactic |
22 val new_metis_tac : string list -> Proof.context -> thm list -> int -> tactic |
22 val new_metisFT_tac : Proof.context -> thm list -> int -> tactic |
23 val new_metisFT_tac : Proof.context -> thm list -> int -> tactic |
23 val setup : theory -> theory |
24 val setup : theory -> theory |
24 end |
25 end |
28 |
29 |
29 open ATP_Translate |
30 open ATP_Translate |
30 open Metis_Translate |
31 open Metis_Translate |
31 open Metis_Reconstruct |
32 open Metis_Reconstruct |
32 |
33 |
|
34 val metisN = Binding.qualified_name_of @{binding metis} |
|
35 val metisFT_N = Binding.qualified_name_of @{binding metisFT} |
33 val full_typesN = "full_types" |
36 val full_typesN = "full_types" |
|
37 |
34 val default_unsound_type_sys = "poly_args" |
38 val default_unsound_type_sys = "poly_args" |
35 val default_sound_type_sys = "poly_preds_query" |
39 val default_sound_type_sys = "poly_preds_heavy_query" |
36 |
40 |
37 fun method_call_for_mode HO = (@{binding metis}, "") |
41 fun method_call_for_mode HO = (@{binding old_metis}, "") |
38 | method_call_for_mode FO = (@{binding metisF}, "") |
42 | method_call_for_mode FO = (@{binding metisF}, "") |
39 | method_call_for_mode FT = (@{binding metisFT}, "") |
43 | method_call_for_mode FT = (@{binding old_metisFT}, "") |
40 | method_call_for_mode (Type_Sys type_sys) = |
44 | method_call_for_mode (Type_Sys type_sys) = |
41 if type_sys = default_sound_type_sys then |
45 if type_sys = default_sound_type_sys then |
42 (@{binding new_metisFT}, "") |
46 (@{binding metisFT}, "") |
43 else |
47 else |
44 (@{binding new_metis}, |
48 (@{binding metis}, |
45 if type_sys = default_unsound_type_sys then "" else type_sys) |
49 if type_sys = default_unsound_type_sys then "" else type_sys) |
46 |
|
47 val metisN = Binding.qualified_name_of @{binding metis} |
|
48 val metisFT_N = Binding.qualified_name_of @{binding metisFT} |
|
49 |
50 |
50 val new_skolemizer = |
51 val new_skolemizer = |
51 Attrib.setup_config_bool @{binding metis_new_skolemizer} (K false) |
52 Attrib.setup_config_bool @{binding metis_new_skolemizer} (K false) |
52 |
53 |
53 (* Designed to work also with monomorphic instances of polymorphic theorems. *) |
54 (* Designed to work also with monomorphic instances of polymorphic theorems. *) |
217 Meson.MESON (preskolem_tac ctxt) (maps neg_clausify) tac ctxt i st0 |
218 Meson.MESON (preskolem_tac ctxt) (maps neg_clausify) tac ctxt i st0 |
218 end |
219 end |
219 |
220 |
220 val old_metis_modes = [HO, FT] |
221 val old_metis_modes = [HO, FT] |
221 val old_metisF_modes = [FO, FT] |
222 val old_metisF_modes = [FO, FT] |
222 val old_metisH_modes = [HO] |
|
223 val old_metisFT_modes = [FT] |
223 val old_metisFT_modes = [FT] |
224 val new_metis_default_modes = |
224 val new_metis_default_modes = |
225 map Type_Sys [default_unsound_type_sys, default_sound_type_sys] |
225 map Type_Sys [default_unsound_type_sys, default_sound_type_sys] |
226 val new_metisFT_modes = [Type_Sys default_sound_type_sys] |
226 val new_metisFT_modes = [Type_Sys default_sound_type_sys] |
227 |
227 |
228 val old_metis_tac = generic_metis_tac old_metis_modes |
228 val old_metis_tac = generic_metis_tac old_metis_modes |
229 val old_metisF_tac = generic_metis_tac old_metisF_modes |
229 val old_metisF_tac = generic_metis_tac old_metisF_modes |
230 val old_metisH_tac = generic_metis_tac old_metisH_modes |
|
231 val old_metisFT_tac = generic_metis_tac old_metisFT_modes |
230 val old_metisFT_tac = generic_metis_tac old_metisFT_modes |
232 fun new_metis_tac [] = generic_metis_tac new_metis_default_modes |
231 fun new_metis_tac [] = generic_metis_tac new_metis_default_modes |
233 | new_metis_tac type_syss = generic_metis_tac (map Type_Sys type_syss) |
232 | new_metis_tac type_syss = generic_metis_tac (map Type_Sys type_syss) |
234 val new_metisFT_tac = generic_metis_tac new_metisFT_modes |
233 val new_metisFT_tac = generic_metis_tac new_metisFT_modes |
235 |
234 |