55 |
55 |
56 lemma inv_hcomplex_of_complex_image: "inv hcomplex_of_complex `SComplex = UNIV" |
56 lemma inv_hcomplex_of_complex_image: "inv hcomplex_of_complex `SComplex = UNIV" |
57 by (auto simp add: Standard_def image_def) (metis inj_star_of inv_f_f) |
57 by (auto simp add: Standard_def image_def) (metis inj_star_of inv_f_f) |
58 |
58 |
59 lemma SComplex_hcomplex_of_complex_image: |
59 lemma SComplex_hcomplex_of_complex_image: |
60 "[| \<exists>x. x: P; P \<le> SComplex |] ==> \<exists>Q. P = hcomplex_of_complex ` Q" |
60 "\<lbrakk>\<exists>x. x \<in> P; P \<le> SComplex\<rbrakk> \<Longrightarrow> \<exists>Q. P = hcomplex_of_complex ` Q" |
61 apply (simp add: Standard_def, blast) |
61 apply (simp add: Standard_def, blast) |
62 done |
62 done |
63 |
63 |
64 lemma SComplex_SReal_dense: |
64 lemma SComplex_SReal_dense: |
65 "[| x \<in> SComplex; y \<in> SComplex; hcmod x < hcmod y |
65 "\<lbrakk>x \<in> SComplex; y \<in> SComplex; hcmod x < hcmod y |
66 |] ==> \<exists>r \<in> Reals. hcmod x< r \<and> r < hcmod y" |
66 \<rbrakk> \<Longrightarrow> \<exists>r \<in> Reals. hcmod x< r \<and> r < hcmod y" |
67 apply (auto intro: SReal_dense simp add: SReal_hcmod_SComplex) |
67 apply (auto intro: SReal_dense simp add: SReal_hcmod_SComplex) |
68 done |
68 done |
69 |
69 |
70 |
70 |
71 subsection\<open>The Finite Elements form a Subring\<close> |
71 subsection\<open>The Finite Elements form a Subring\<close> |
76 |
76 |
77 lemma HFinite_hcmod_iff: "(x \<in> HFinite) = (hcmod x \<in> HFinite)" |
77 lemma HFinite_hcmod_iff: "(x \<in> HFinite) = (hcmod x \<in> HFinite)" |
78 by (simp add: HFinite_def) |
78 by (simp add: HFinite_def) |
79 |
79 |
80 lemma HFinite_bounded_hcmod: |
80 lemma HFinite_bounded_hcmod: |
81 "[|x \<in> HFinite; y \<le> hcmod x; 0 \<le> y |] ==> y: HFinite" |
81 "\<lbrakk>x \<in> HFinite; y \<le> hcmod x; 0 \<le> y\<rbrakk> \<Longrightarrow> y \<in> HFinite" |
82 by (auto intro: HFinite_bounded simp add: HFinite_hcmod_iff) |
82 by (auto intro: HFinite_bounded simp add: HFinite_hcmod_iff) |
83 |
83 |
84 |
84 |
85 subsection\<open>The Complex Infinitesimals form a Subring\<close> |
85 subsection\<open>The Complex Infinitesimals form a Subring\<close> |
86 |
86 |
341 lemma Standard_HComplex: |
341 lemma Standard_HComplex: |
342 "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> HComplex x y \<in> Standard" |
342 "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> HComplex x y \<in> Standard" |
343 by (simp add: HComplex_def) |
343 by (simp add: HComplex_def) |
344 |
344 |
345 (* Here we go - easy proof now!! *) |
345 (* Here we go - easy proof now!! *) |
346 lemma stc_part_Ex: "x:HFinite ==> \<exists>t \<in> SComplex. x \<approx> t" |
346 lemma stc_part_Ex: "x \<in> HFinite \<Longrightarrow> \<exists>t \<in> SComplex. x \<approx> t" |
347 apply (simp add: hcomplex_HFinite_iff hcomplex_approx_iff) |
347 apply (simp add: hcomplex_HFinite_iff hcomplex_approx_iff) |
348 apply (rule_tac x="HComplex (st (hRe x)) (st (hIm x))" in bexI) |
348 apply (rule_tac x="HComplex (st (hRe x)) (st (hIm x))" in bexI) |
349 apply (simp add: st_approx_self [THEN approx_sym]) |
349 apply (simp add: st_approx_self [THEN approx_sym]) |
350 apply (simp add: Standard_HComplex st_SReal [unfolded Reals_eq_Standard]) |
350 apply (simp add: Standard_HComplex st_SReal [unfolded Reals_eq_Standard]) |
351 done |
351 done |
352 |
352 |
353 lemma stc_part_Ex1: "x\<in>HFinite \<Longrightarrow> \<exists>!t. t \<in> SComplex \<and> x \<approx> t" |
353 lemma stc_part_Ex1: "x \<in> HFinite \<Longrightarrow> \<exists>!t. t \<in> SComplex \<and> x \<approx> t" |
354 apply (drule stc_part_Ex, safe) |
354 apply (drule stc_part_Ex, safe) |
355 apply (drule_tac [2] approx_sym, drule_tac [2] approx_sym, drule_tac [2] approx_sym) |
355 apply (drule_tac [2] approx_sym, drule_tac [2] approx_sym, drule_tac [2] approx_sym) |
356 apply (auto intro!: approx_unique_complex) |
356 apply (auto intro!: approx_unique_complex) |
357 done |
357 done |
358 |
358 |
360 hcomplex_of_complex_HFinite_diff_Infinitesimal [THEN [2] approx_inverse] |
360 hcomplex_of_complex_HFinite_diff_Infinitesimal [THEN [2] approx_inverse] |
361 |
361 |
362 |
362 |
363 subsection\<open>Theorems About Monads\<close> |
363 subsection\<open>Theorems About Monads\<close> |
364 |
364 |
365 lemma monad_zero_hcmod_iff: "(x \<in> monad 0) = (hcmod x:monad 0)" |
365 lemma monad_zero_hcmod_iff: "(x \<in> monad 0) = (hcmod x \<in> monad 0)" |
366 by (simp add: Infinitesimal_monad_zero_iff [symmetric] Infinitesimal_hcmod_iff) |
366 by (simp add: Infinitesimal_monad_zero_iff [symmetric] Infinitesimal_hcmod_iff) |
367 |
367 |
368 |
368 |
369 subsection\<open>Theorems About Standard Part\<close> |
369 subsection\<open>Theorems About Standard Part\<close> |
370 |
370 |