lemma approx_unique_complex: "\r \ SComplex; s \ SComplex; r \ x; s \ x\ \ r = s" by (blast intro: SComplex_approx_iff [THEN iffD1] approx_trans2)
subsection \<open>Properties of \<^term>\<open>hRe\<close>, \<^term>\<open>hIm\<close> and \<^term>\<open>HComplex\<close>\<close>
lemma abs_hRe_le_hcmod: "\x. \hRe x\ \ hcmod x" by transfer (rule abs_Re_le_cmod)
lemma abs_hIm_le_hcmod: "\x. \hIm x\ \ hcmod x" by transfer (rule abs_Im_le_cmod)
lemma Infinitesimal_hRe: "x \ Infinitesimal \ hRe x \ Infinitesimal" using Infinitesimal_hcmod_iff abs_hRe_le_hcmod hrabs_le_Infinitesimal by blast
lemma Infinitesimal_hIm: "x \ Infinitesimal \ hIm x \ Infinitesimal" using Infinitesimal_hcmod_iff abs_hIm_le_hcmod hrabs_le_Infinitesimal by blast
lemma Infinitesimal_HComplex: assumes x: "x \ Infinitesimal" and y: "y \ Infinitesimal" shows"HComplex x y \ Infinitesimal" proof - have"hcmod (HComplex 0 y) \ Infinitesimal" by (simp add: hcmod_i y) moreoverhave"hcmod (hcomplex_of_hypreal x) \ Infinitesimal" using Infinitesimal_hcmod_iff Infinitesimal_of_hypreal_iff x by blast ultimatelyhave"hcmod (HComplex x y) \ Infinitesimal" by (metis Infinitesimal_add Infinitesimal_hcmod_iff add.right_neutral hcomplex_of_hypreal_add_HComplex) thenshow ?thesis by (simp add: Infinitesimal_hnorm_iff) qed
lemma hcomplex_Infinitesimal_iff: "(x \ Infinitesimal) \ (hRe x \ Infinitesimal \ hIm x \ Infinitesimal)" using Infinitesimal_HComplex Infinitesimal_hIm Infinitesimal_hRe by fastforce
lemma hRe_diff [simp]: "\x y. hRe (x - y) = hRe x - hRe y" by transfer simp
lemma hIm_diff [simp]: "\x y. hIm (x - y) = hIm x - hIm y" by transfer simp
lemma approx_hRe: "x \ y \ hRe x \ hRe y" unfolding approx_def by (drule Infinitesimal_hRe) simp
lemma approx_hIm: "x \ y \ hIm x \ hIm y" unfolding approx_def by (drule Infinitesimal_hIm) simp
lemma approx_HComplex: "\a \ b; c \ d\ \ HComplex a c \ HComplex b d" unfolding approx_def by (simp add: Infinitesimal_HComplex)
lemma hcomplex_approx_iff: "(x \ y) = (hRe x \ hRe y \ hIm x \ hIm y)" unfolding approx_def by (simp add: hcomplex_Infinitesimal_iff)
lemma HFinite_hRe: "x \ HFinite \ hRe x \ HFinite" using HFinite_bounded_hcmod abs_ge_zero abs_hRe_le_hcmod by blast
lemma HFinite_hIm: "x \ HFinite \ hIm x \ HFinite" using HFinite_bounded_hcmod abs_ge_zero abs_hIm_le_hcmod by blast
lemma HFinite_HComplex: assumes"x \ HFinite" "y \ HFinite" shows"HComplex x y \ HFinite" proof - have"HComplex x 0 \ HFinite" "HComplex 0 y \ HFinite" using HFinite_hcmod_iff assms hcmod_i by fastforce+ thenhave"HComplex x 0 + HComplex 0 y \ HFinite" using HFinite_add by blast thenshow ?thesis by simp qed
lemma hcomplex_HFinite_iff: "(x \ HFinite) = (hRe x \ HFinite \ hIm x \ HFinite)" using HFinite_HComplex HFinite_hIm HFinite_hRe by fastforce
lemma hcomplex_HInfinite_iff: "(x \ HInfinite) = (hRe x \ HInfinite \ hIm x \ HInfinite)" by (simp add: HInfinite_HFinite_iff hcomplex_HFinite_iff)
lemma hcomplex_of_hypreal_approx_iff [simp]: "(hcomplex_of_hypreal x \ hcomplex_of_hypreal z) = (x \ z)" by (simp add: hcomplex_approx_iff)
(* Here we go - easy proof now!! *) lemma stc_part_Ex: assumes"x \ HFinite" shows"\t \ SComplex. x \ t" proof - let ?t = "HComplex (st (hRe x)) (st (hIm x))" have"?t \ SComplex" using HFinite_hIm HFinite_hRe Reals_eq_Standard assms st_SReal by auto moreoverhave"x \ ?t" by (simp add: HFinite_hIm HFinite_hRe assms hcomplex_approx_iff st_HFinite st_eq_approx) ultimatelyshow ?thesis .. qed
lemma stc_part_Ex1: "x \ HFinite \ \!t. t \ SComplex \ x \ t" using approx_sym approx_unique_complex stc_part_Ex by blast
subsection\<open>Theorems About Monads\<close>
lemma monad_zero_hcmod_iff: "(x \ monad 0) = (hcmod x \ monad 0)" by (simp add: Infinitesimal_monad_zero_iff [symmetric] Infinitesimal_hcmod_iff)
subsection\<open>Theorems About Standard Part\<close>
lemma stc_approx_self: "x \ HFinite \ stc x \ x" unfolding stc_def by (metis (no_types, lifting) approx_reorient someI_ex stc_part_Ex1)
lemma stc_SComplex: "x \ HFinite \ stc x \ SComplex" unfolding stc_def by (metis (no_types, lifting) SComplex_iff approx_sym someI_ex stc_part_Ex)
lemma stc_HFinite: "x \ HFinite \ stc x \ HFinite" by (erule stc_SComplex [THEN Standard_subset_HFinite [THEN subsetD]])
lemma stc_unique: "\y \ SComplex; y \ x\ \ stc x = y" by (metis SComplex_approx_iff SComplex_iff approx_monad_iff approx_star_of_HFinite stc_SComplex stc_approx_self)
lemma stc_SComplex_eq [simp]: "x \ SComplex \ stc x = x" by (simp add: stc_unique)
lemma stc_eq_approx: "\x \ HFinite; y \ HFinite; stc x = stc y\ \ x \ y" by (auto dest!: stc_approx_self elim!: approx_trans3)
lemma approx_stc_eq: "\x \ HFinite; y \ HFinite; x \ y\ \ stc x = stc y" by (metis approx_sym approx_trans3 stc_part_Ex1 stc_unique)
lemma stc_eq_approx_iff: "\x \ HFinite; y \ HFinite\ \ (x \ y) = (stc x = stc y)" by (blast intro: approx_stc_eq stc_eq_approx)
lemma stc_Infinitesimal_add_SComplex: "\x \ SComplex; e \ Infinitesimal\ \ stc(x + e) = x" using Infinitesimal_add_approx_self stc_unique by blast
lemma stc_Infinitesimal_add_SComplex2: "\x \ SComplex; e \ Infinitesimal\ \ stc(e + x) = x" using Infinitesimal_add_approx_self2 stc_unique by blast
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.