diff -r 020e27417b59 -r 0911d3aabf47 FSet.thy --- a/FSet.thy Mon Nov 30 12:14:20 2009 +0100 +++ b/FSet.thy Mon Nov 30 15:32:14 2009 +0100 @@ -313,7 +313,6 @@ val qtrm = @{term "\x. x memb [] = False"} val aps = find_aps rtrm qtrm *} -unfolding IN_def EMPTY_def apply(tactic {* clean_tac @{context} [quot] defs aps 1*}) done @@ -354,10 +353,12 @@ lemma cheat: "P" sorry lemma "\P EMPTY; \a x. P x \ P (INSERT a x)\ \ P l" +apply (tactic {* (ObjectLogic.full_atomize_tac THEN' gen_frees_tac @{context}) 1 *}) +ML_prf {* val qtm = #concl (fst (Subgoal.focus @{context} 1 (#goal (Isar.goal ())))) *} apply(tactic {* procedure_tac @{context} @{thm list.induct} 1 *}) apply(tactic {* regularize_tac @{context} [rel_eqv] 1 *}) prefer 2 -apply(rule cheat) +apply(tactic {* clean_tac @{context} [quot] defs [] 1 *}) apply(tactic {* inj_repabs_tac_fset @{context} 1*}) (* 3 *) (* Ball-Ball *) apply(tactic {* inj_repabs_tac_fset @{context} 1*}) (* 9 *) (* Rep-Abs-elim - can be complex Rep-Abs *) apply(tactic {* inj_repabs_tac_fset @{context} 1*}) (* 2 *) (* lam-lam-elim for R = (===>) *) @@ -454,6 +455,8 @@ lemma "P (x :: 'a list) (EMPTY :: 'c fset) \ (\e t. P x t \ P x (INSERT e t)) \ P x l" apply (tactic {* procedure_tac @{context} @{thm list_induct_part} 1 *}) apply (tactic {* regularize_tac @{context} [rel_eqv] 1 *}) +prefer 2 +apply (tactic {* clean_tac @{context} [quot] defs [(@{typ "('a list \ 'c list \ bool)"},@{typ "('a list \ 'c fset \ bool)"})] 1 *}) apply (tactic {* (APPLY_RSP_TAC rty @{context}) 1 *}) apply (rule FUN_QUOTIENT) apply (rule FUN_QUOTIENT) @@ -523,7 +526,6 @@ apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) -apply (tactic {* clean_tac @{context} [quot] defs [(@{typ "('a list \ 'c list \ bool)"},@{typ "('a list \ 'c fset \ bool)"})] 1 *}) done end