src/HOL/Nonstandard_Analysis/NSCA.thy
changeset 67613 ce654b0e6d69
parent 67443 3abf6a722518
child 69597 ff784d5a5bfb
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
    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