diff -r 559c01f40bee -r fafcc54e531d FSet.thy --- a/FSet.thy Thu Nov 26 16:23:24 2009 +0100 +++ b/FSet.thy Thu Nov 26 19:51:31 2009 +0100 @@ -346,78 +346,12 @@ lemma cheat: "P" sorry -lemma imp_refl: "P \ P" by simp - -lemma [mono]: "P \ Q \ \Q \ \P" -apply(auto) -done - -thm Set.conj_mono -thm Set.imp_mono -ML {* Inductive.get_monos @{context} *} -thm LEFT_RES_FORALL_REGULAR - -lemma test: - fixes P Q::"'a \ bool" - and x::"'a" - assumes a: "REFL R2" - and b: "\f. Q (f x) \ P (f x)" - shows "(\f\(Respects (R1 ===> R2)). Q (f x)) \ (\f. P (f x))" -apply(rule impI) -apply(rule allI) -apply(drule_tac x="\y. f x" in bspec) -apply(simp add: Respects_def IN_RESPECTS) -apply(rule impI) -using a -apply(simp add: REFL_def) -using b -apply - -apply(simp) -done - lemma "\P EMPTY; \a x. P x \ P (INSERT a x)\ \ P l" apply(tactic {* procedure_tac @{context} @{thm list.induct} 1 *}) -defer -apply(rule cheat) apply(rule cheat) -apply(atomize (full)) -apply(rule RIGHT_RES_FORALL_REGULAR) -apply(rule RIGHT_RES_FORALL_REGULAR) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *})+ -apply(rule LEFT_RES_FORALL_REGULAR) -apply(rule conjI) -using list_eq_refl -thm Ball_def IN_RESPECTS FUN_REL.simps - -apply - -apply(simp (no_asm) add: Respects_def) -apply(blast) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(rule LEFT_RES_FORALL_REGULAR) -apply(rule conjI) -defer -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(tactic {* resolve_tac (Inductive.get_monos @{context}) 1 *}) -apply(unfold Respects_def) -sorry - -lemma "\P EMPTY; \a x. P x \ P (INSERT a x)\ \ P l" -apply(tactic {* procedure_tac @{context} @{thm list.induct} 1 *}) -defer +prefer 2 apply(rule cheat) -apply(rule cheat) -apply(tactic {* regularize_tac @{context} rel_eqv rel_refl 1 *}) -done +apply(tactic {* r_mk_comb_tac @{context} rty quot rel_refl trans2 rsp_thms 1*}) quotient_def fset_rec::"'a \ ('b \ 'b fset \ 'a \ 'a) \ 'b fset \ 'a"