Proof of finite_set_storng_cases_raw.
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Sat, 12 Dec 2009 04:48:43 +0100
changeset 727 2cfe6f3d6352
parent 726 1a777307f57f
child 728 0015159fee96
Proof of finite_set_storng_cases_raw.
Quot/Examples/FSet3.thy
--- 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"