src/HOL/Tools/Metis/metis_tactics.ML
changeset 43199 45f33d290615
parent 43194 ef3ff8856245
child 43204 ac02112a208e
equal deleted inserted replaced
43198:7a2bc89ac48e 43199:45f33d290615
    18   val trace : bool Config.T
    18   val trace : bool Config.T
    19   val verbose : bool Config.T
    19   val verbose : bool Config.T
    20   val new_skolemizer : bool Config.T
    20   val new_skolemizer : bool Config.T
    21   val metis_tac : Proof.context -> thm list -> int -> tactic
    21   val metis_tac : Proof.context -> thm list -> int -> tactic
    22   val metisF_tac : Proof.context -> thm list -> int -> tactic
    22   val metisF_tac : Proof.context -> thm list -> int -> tactic
       
    23   val metisH_tac : Proof.context -> thm list -> int -> tactic
    23   val metisFT_tac : Proof.context -> thm list -> int -> tactic
    24   val metisFT_tac : Proof.context -> thm list -> int -> tactic
    24   val metisHO_tac : Proof.context -> thm list -> int -> tactic
       
    25   val metisX_tac : Proof.context -> type_sys option -> thm list -> int -> tactic
    25   val metisX_tac : Proof.context -> type_sys option -> thm list -> int -> tactic
    26   val setup : theory -> theory
    26   val setup : theory -> theory
    27 end
    27 end
    28 
    28 
    29 structure Metis_Tactics : METIS_TACTICS =
    29 structure Metis_Tactics : METIS_TACTICS =
   204        Seq.empty)
   204        Seq.empty)
   205     else
   205     else
   206       Meson.MESON (preskolem_tac ctxt) (maps neg_clausify) tac ctxt i st0
   206       Meson.MESON (preskolem_tac ctxt) (maps neg_clausify) tac ctxt i st0
   207   end
   207   end
   208 
   208 
   209 val metis_modes = [HO, MX]
   209 val metis_modes = [HO, FT]
   210 val metisF_modes = [FO, MX]
   210 val metisF_modes = [FO, FT]
       
   211 val metisH_modes = [HO]
   211 val metisFT_modes = [FT]
   212 val metisFT_modes = [FT]
   212 val metisHO_modes = [HO]
       
   213 val metisX_modes = [MX]
   213 val metisX_modes = [MX]
   214 
   214 
   215 val metis_tac = generic_metis_tac metis_modes NONE
   215 val metis_tac = generic_metis_tac metis_modes NONE
   216 val metisF_tac = generic_metis_tac metisF_modes NONE
   216 val metisF_tac = generic_metis_tac metisF_modes NONE
       
   217 val metisH_tac = generic_metis_tac metisH_modes NONE
   217 val metisFT_tac = generic_metis_tac metisFT_modes NONE
   218 val metisFT_tac = generic_metis_tac metisFT_modes NONE
   218 val metisHO_tac = generic_metis_tac metisHO_modes NONE
       
   219 fun metisX_tac ctxt type_sys = generic_metis_tac metisX_modes type_sys ctxt
   219 fun metisX_tac ctxt type_sys = generic_metis_tac metisX_modes type_sys ctxt
   220 
   220 
   221 (* Whenever "X" has schematic type variables, we treat "using X by metis" as
   221 (* Whenever "X" has schematic type variables, we treat "using X by metis" as
   222    "by (metis X)" to prevent "Subgoal.FOCUS" from freezing the type variables.
   222    "by (metis X)" to prevent "Subgoal.FOCUS" from freezing the type variables.
   223    We don't do it for nonschematic facts "X" because this breaks a few proofs
   223    We don't do it for nonschematic facts "X" because this breaks a few proofs