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 |