Proof of finite_set_storng_cases_raw.
--- a/Quot/Examples/FSet3.thy Sat Dec 12 04:25:47 2009 +0100
+++ b/Quot/Examples/FSet3.thy Sat Dec 12 04:48:43 2009 +0100
@@ -54,10 +54,23 @@
by auto
lemma finite_set_raw_strong_cases:
- "(X = []) \<or> (\<exists>a. \<exists> Y. (~(a mem Y) \<and> (X \<approx> a # Y)))"
+ "(X = []) \<or> (\<exists>a Y. ((a \<notin> set Y) \<and> (X \<approx> a # Y)))"
apply (induct X)
+ apply (simp)
+ apply (rule disjI2)
+ apply (erule disjE)
+ apply (rule_tac x="a" in exI)
+ apply (rule_tac x="[]" in exI)
+ apply (simp)
+ apply (erule exE)+
+ apply (case_tac "a = aa")
+ apply (rule_tac x="a" in exI)
+ apply (rule_tac x="Y" in exI)
+ apply (simp)
+ apply (rule_tac x="aa" in exI)
+ apply (rule_tac x="a # Y" in exI)
apply (auto)
- sorry
+ done
fun
delete_raw :: "'a list \<Rightarrow> 'a \<Rightarrow> 'a list"