diff -r b2fa5de30a73 -r 5fd2ed815144 Nominal/FSet.thy --- a/Nominal/FSet.thy Mon Apr 19 11:55:12 2010 +0200 +++ b/Nominal/FSet.thy Mon Apr 19 12:20:18 2010 +0200 @@ -180,7 +180,7 @@ apply (simp add: memb_def) done -lemma mem_card_not_0: +lemma memb_card_not_0: assumes a: "memb a A" shows "\(fcard_raw A = 0)" proof - @@ -195,10 +195,14 @@ using a apply(induct xs arbitrary: ys) apply(auto simp add: memb_def) - apply(metis) + apply(subgoal_tac "\x. (x \ set xs) = (x \ set ys)") + apply simp + apply auto + apply (drule_tac x="x" in spec) + apply blast apply(drule_tac x="[x \ ys. x \ a]" in meta_spec) - apply(simp add: fcard_raw_delete_one) - apply(metis Suc_pred'[OF fcard_raw_gt_0] fcard_raw_delete_one memb_def) + apply(simp add: fcard_raw_delete_one memb_def) + apply(metis Suc_pred'[OF fcard_raw_gt_0]) done lemma fcard_raw_rsp[quot_respect]: @@ -337,10 +341,15 @@ apply (rule_tac [!] impI) apply (rule_tac [!] conjI) apply (rule_tac [!] impI) - apply (simp add: in_set_code memb_cons_iff memb_def) - apply (metis) + apply (subgoal_tac "\e. memb e a2 = memb e b") + apply (simp) + apply (simp add: memb_cons_iff memb_def) + apply auto + apply (drule_tac x="e" in spec) + apply blast + apply (simp add: memb_cons_iff) apply (metis Nitpick.list_size_simp(2) ffold_raw.simps(2) - length_Suc_conv memb_absorb memb_cons_iff nil_not_cons(2)) + length_Suc_conv memb_absorb nil_not_cons(2)) apply (subgoal_tac "ffold_raw f z b = f a1 (ffold_raw f z (delete_raw b a1))") apply (simp only:) apply (rule_tac f="f a1" in arg_cong)