# HG changeset patch # User blanchet # Date 1412615956 -7200 # Node ID d9892c88cb56771ec639c4a88f4eab93108f66cb # Parent 21a741e96970a669d5613ceb14da73f1b36a85a1 strengthened 'moura' method diff -r 21a741e96970 -r d9892c88cb56 src/HOL/SMT.thy --- a/src/HOL/SMT.thy Mon Oct 06 19:19:16 2014 +0200 +++ b/src/HOL/SMT.thy Mon Oct 06 19:19:16 2014 +0200 @@ -15,19 +15,37 @@ "\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+ 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 (blast_tac ctxt)); + 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)) *} method_setup moura = {*