# HG changeset patch # User blanchet # Date 1708675891 -3600 # Node ID 658f17274845b5ee33032674c28306066b3314a5 # Parent 5044f1d9196d0ea9c214a7255f359c608eeda524 new less ad hoc implementation of the 'moura' tactic for skolemization diff -r 5044f1d9196d -r 658f17274845 NEWS --- a/NEWS Thu Feb 22 21:42:02 2024 +0100 +++ b/NEWS Fri Feb 23 09:11:31 2024 +0100 @@ -18,6 +18,7 @@ * Sledgehammer - Update of bundled prover: + Vampire 4.8 HO - Sledgehammer schedules (2023-10-19) + - New implementation of moura tactic. INCOMPATIBILITY. * Mirabelle: - Removed proof reconstruction from "sledgehammer" action; the related option diff -r 5044f1d9196d -r 658f17274845 src/HOL/Homology/Brouwer_Degree.thy --- a/src/HOL/Homology/Brouwer_Degree.thy Thu Feb 22 21:42:02 2024 +0100 +++ b/src/HOL/Homology/Brouwer_Degree.thy Fri Feb 23 09:11:31 2024 +0100 @@ -1299,7 +1299,7 @@ if x: "x \ carrier ?G" for x proof - obtain n::int where xeq: "x = pow ?G a n" - using carra x aeq by moura + using carra x aeq by auto show ?thesis by (simp add: xeq a d hom_int_pow int_pow_pow mult.commute) qed diff -r 5044f1d9196d -r 658f17274845 src/HOL/SMT.thy --- a/src/HOL/SMT.thy Thu Feb 22 21:42:02 2024 +0100 +++ b/src/HOL/SMT.thy Fri Feb 23 09:11:31 2024 +0100 @@ -12,48 +12,25 @@ subsection \A skolemization tactic and proof method\ -lemma choices: - "\Q. \x. \y ya. Q x y ya \ \f fa. \x. Q x (f x) (fa x)" - "\Q. \x. \y ya yb. Q x y ya yb \ \f fa fb. \x. Q x (f x) (fa x) (fb x)" - "\Q. \x. \y ya yb yc. Q x y ya yb yc \ \f fa fb fc. \x. Q x (f x) (fa x) (fb x) (fc x)" - "\Q. \x. \y ya yb yc yd. Q x y ya yb yc yd \ - \f fa fb fc fd. \x. Q x (f x) (fa x) (fb x) (fc x) (fd x)" - "\Q. \x. \y ya yb yc yd ye. Q x y ya yb yc yd ye \ - \f fa fb fc fd fe. \x. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x)" - "\Q. \x. \y ya yb yc yd ye yf. Q x y ya yb yc yd ye yf \ - \f fa fb fc fd fe ff. \x. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x) (ff x)" - "\Q. \x. \y ya yb yc yd ye yf yg. Q x y ya yb yc yd ye yf yg \ - \f fa fb fc fd fe ff fg. \x. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x) (ff x) (fg x)" - by metis+ - -lemma bchoices: - "\Q. \x \ S. \y ya. Q x y ya \ \f fa. \x \ S. Q x (f x) (fa x)" - "\Q. \x \ S. \y ya yb. Q x y ya yb \ \f fa fb. \x \ S. Q x (f x) (fa x) (fb x)" - "\Q. \x \ S. \y ya yb yc. Q x y ya yb yc \ \f fa fb fc. \x \ S. Q x (f x) (fa x) (fb x) (fc x)" - "\Q. \x \ S. \y ya yb yc yd. Q x y ya yb yc yd \ - \f fa fb fc fd. \x \ S. Q x (f x) (fa x) (fb x) (fc x) (fd x)" - "\Q. \x \ S. \y ya yb yc yd ye. Q x y ya yb yc yd ye \ - \f fa fb fc fd fe. \x \ S. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x)" - "\Q. \x \ S. \y ya yb yc yd ye yf. Q x y ya yb yc yd ye yf \ - \f fa fb fc fd fe ff. \x \ S. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x) (ff x)" - "\Q. \x \ S. \y ya yb yc yd ye yf yg. Q x y ya yb yc yd ye yf yg \ - \f fa fb fc fd fe ff fg. \x \ S. Q x (f x) (fa x) (fb x) (fc x) (fd x) (fe x) (ff x) (fg x)" - by metis+ +lemma ex_iff_push: "(\y. P \ Q y) \ (P \ (\y. Q y)) \ ((\y. Q y) \ P)" + by metis ML \ fun moura_tac ctxt = - Atomize_Elim.atomize_elim_tac ctxt THEN' - SELECT_GOAL (Clasimp.auto_tac (ctxt addSIs @{thms choice choices bchoice bchoices}) THEN - ALLGOALS (Metis_Tactic.metis_tac (take 1 ATP_Proof_Reconstruct.partial_type_encs) - ATP_Proof_Reconstruct.default_metis_lam_trans ctxt [] ORELSE' - blast_tac ctxt)) + TRY o Atomize_Elim.atomize_elim_tac ctxt THEN' + REPEAT o EqSubst.eqsubst_tac ctxt [0] + @{thms choice_iff[symmetric] bchoice_iff[symmetric]} THEN' + TRY o Simplifier.asm_full_simp_tac + (clear_simpset ctxt addsimps @{thms all_simps ex_simps ex_iff_push}) THEN_ALL_NEW + Metis_Tactic.metis_tac (take 1 ATP_Proof_Reconstruct.partial_type_encs) + ATP_Proof_Reconstruct.default_metis_lam_trans ctxt [] \ method_setup moura = \ Scan.succeed (SIMPLE_METHOD' o moura_tac) \ "solve skolemization goals, especially those arising from Z3 proofs" -hide_fact (open) choices bchoices +hide_fact (open) ex_iff_push subsection \Triggers for quantifier instantiation\