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 |