src/HOLCF/Ssum.thy
changeset 27310 d0229bc6c461
parent 26962 c8b20f615d6c
child 29063 7619f0561cd7
equal deleted inserted replaced
27309:c74270fd72a8 27310:d0229bc6c461
   229 lemma approx_sinr [simp]: "approx i\<cdot>(sinr\<cdot>x) = sinr\<cdot>(approx i\<cdot>x)"
   229 lemma approx_sinr [simp]: "approx i\<cdot>(sinr\<cdot>x) = sinr\<cdot>(approx i\<cdot>x)"
   230 unfolding approx_ssum_def by (cases "x = \<bottom>") simp_all
   230 unfolding approx_ssum_def by (cases "x = \<bottom>") simp_all
   231 
   231 
   232 instance proof
   232 instance proof
   233   fix i :: nat and x :: "'a \<oplus> 'b"
   233   fix i :: nat and x :: "'a \<oplus> 'b"
   234   show "chain (\<lambda>i. approx i\<cdot>x)"
   234   show "chain (approx :: nat \<Rightarrow> 'a \<oplus> 'b \<rightarrow> 'a \<oplus> 'b)"
   235     unfolding approx_ssum_def by simp
   235     unfolding approx_ssum_def by simp
   236   show "(\<Squnion>i. approx i\<cdot>x) = x"
   236   show "(\<Squnion>i. approx i\<cdot>x) = x"
   237     unfolding approx_ssum_def
   237     unfolding approx_ssum_def
   238     by (simp add: lub_distribs eta_cfun)
   238     by (simp add: lub_distribs eta_cfun)
   239   show "approx i\<cdot>(approx i\<cdot>x) = approx i\<cdot>x"
   239   show "approx i\<cdot>(approx i\<cdot>x) = approx i\<cdot>x"
   240     by (cases x, simp add: approx_ssum_def, simp, simp)
   240     by (cases x, simp add: approx_ssum_def, simp, simp)
   241   have "{x::'a \<oplus> 'b. approx i\<cdot>x = x} \<subseteq>
   241   have "{x::'a \<oplus> 'b. approx i\<cdot>x = x} \<subseteq>
   242         (\<lambda>x. sinl\<cdot>x) ` {x. approx i\<cdot>x = x} \<union>
   242         (\<lambda>x. sinl\<cdot>x) ` {x. approx i\<cdot>x = x} \<union>
   243         (\<lambda>x. sinr\<cdot>x) ` {x. approx i\<cdot>x = x}"
   243         (\<lambda>x. sinr\<cdot>x) ` {x. approx i\<cdot>x = x}"
   244     by (rule subsetI, rule_tac p=x in ssumE2, simp, simp)
   244     by (rule subsetI, case_tac x rule: ssumE2, simp, simp)
   245   thus "finite {x::'a \<oplus> 'b. approx i\<cdot>x = x}"
   245   thus "finite {x::'a \<oplus> 'b. approx i\<cdot>x = x}"
   246     by (rule finite_subset,
   246     by (rule finite_subset,
   247         intro finite_UnI finite_imageI finite_fixes_approx)
   247         intro finite_UnI finite_imageI finite_fixes_approx)
   248 qed
   248 qed
   249 
   249