
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 "\<not>(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 "\<forall>x. (x \<in> set xs) = (x \<in> set ys)")
+  apply simp
+  apply auto
+  apply (drule_tac x="x" in spec)
+  apply blast
   apply(drule_tac x="[x \<leftarrow> ys. x \<noteq> 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 "\<forall>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)




