# HG changeset patch # User Cezary Kaliszyk # Date 1253776186 -7200 # Node ID 999300935e9c82da5be6d816dda65339be783345 # Parent 322ae3432548db0ffb5f700b3a0b0382222f8dfb Make the tactic use Trueprop_cong and atomize. diff -r 322ae3432548 -r 999300935e9c QuotMain.thy --- a/QuotMain.thy Wed Sep 23 16:57:56 2009 +0200 +++ b/QuotMain.thy Thu Sep 24 09:09:46 2009 +0200 @@ -950,15 +950,21 @@ (* Has all the theorems about fset plugged in. These should be parameters to the tactic *) +lemma trueprop_cong: + shows "(a \ b) \ (Trueprop a \ Trueprop b)" + by auto + ML {* fun foo_tac' ctxt = REPEAT_ALL_NEW (FIRST' [ + rtac @{thm trueprop_cong}, rtac @{thm list_eq_sym}, rtac @{thm cons_preserves}, rtac @{thm mem_respects}, rtac @{thm QUOT_TYPE_I_fset.R_trans2}, CHANGED o (simp_tac ((Simplifier.context ctxt HOL_ss) addsimps @{thms QUOT_TYPE_I_fset.REP_ABS_rsp})), - foo_tac + foo_tac, + CHANGED o (ObjectLogic.full_atomize_tac) ]) *} @@ -972,13 +978,7 @@ (*notation ( output) "prop" ("#_" [1000] 1000) *) notation ( output) "Trueprop" ("#_" [1000] 1000) -lemma tp: - shows "(a \ b) \ (Trueprop a \ Trueprop b)" - by auto - prove {* (Thm.term_of cgoal2) *} - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) done @@ -991,8 +991,6 @@ val cgoal2 = Thm.rhs_of (MetaSimplifier.rewrite false fset_defs_sym cgoal) *} prove {* Thm.term_of cgoal2 *} - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) sorry @@ -1005,8 +1003,6 @@ val cgoal2 = Thm.rhs_of (MetaSimplifier.rewrite false fset_defs_sym cgoal) *} prove {* Thm.term_of cgoal2 *} - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) done @@ -1022,16 +1018,12 @@ (* It is the same, but we need a name for it. *) prove {* Thm.term_of cgoal3 *} - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) done lemma zzz : "Trueprop (REP_fset (INSERT a (INSERT a (ABS_fset xs))) \ REP_fset (INSERT a (ABS_fset xs))) \ Trueprop (a # a # xs \ a # xs)" - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) done @@ -1072,9 +1064,6 @@ val cgoal2 = Thm.rhs_of (MetaSimplifier.rewrite false fset_defs_sym cgoal) *} prove {* Thm.term_of cgoal2 *} - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) - apply (rule tp) - apply (tactic {* ObjectLogic.full_atomize_tac 1 *}) apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} ) apply (tactic {* foo_tac' @{context} 1 *}) done