src/HOL/Tools/Metis/metis_tactics.ML
changeset 43211 77c432fe28ff
parent 43206 831d28439b3a
child 43212 050a03afe024
equal deleted inserted replaced
43210:7384b771805d 43211:77c432fe28ff
     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