src/HOL/Hyperreal/HyperDef.thy
changeset 14378 69c4d5997669
parent 14371 c78c7da09519
child 14387 e96d5c42c4b0
equal deleted inserted replaced
14377:f454b3004f8f 14378:69c4d5997669
   173 by (blast dest: FreeUltrafilterNat_Compl FreeUltrafilterNat_Compl_mem)
   173 by (blast dest: FreeUltrafilterNat_Compl FreeUltrafilterNat_Compl_mem)
   174 
   174 
   175 lemma FreeUltrafilterNat_Compl_iff2:
   175 lemma FreeUltrafilterNat_Compl_iff2:
   176      "(X: FreeUltrafilterNat) = (-X \<notin> FreeUltrafilterNat)"
   176      "(X: FreeUltrafilterNat) = (-X \<notin> FreeUltrafilterNat)"
   177 by (auto simp add: FreeUltrafilterNat_Compl_iff1 [symmetric])
   177 by (auto simp add: FreeUltrafilterNat_Compl_iff1 [symmetric])
       
   178 
       
   179 lemma cofinite_mem_FreeUltrafilterNat: "finite (-X) ==> X \<in> FreeUltrafilterNat"
       
   180 apply (drule FreeUltrafilterNat_finite)  
       
   181 apply (simp add: FreeUltrafilterNat_Compl_iff2 [symmetric])
       
   182 done
   178 
   183 
   179 lemma FreeUltrafilterNat_UNIV [simp]: "(UNIV::nat set) \<in> FreeUltrafilterNat"
   184 lemma FreeUltrafilterNat_UNIV [simp]: "(UNIV::nat set) \<in> FreeUltrafilterNat"
   180 by (rule FreeUltrafilterNat_mem [THEN FreeUltrafilter_Ultrafilter, THEN Ultrafilter_Filter, THEN mem_FiltersetD4])
   185 by (rule FreeUltrafilterNat_mem [THEN FreeUltrafilter_Ultrafilter, THEN Ultrafilter_Filter, THEN mem_FiltersetD4])
   181 
   186 
   182 lemma FreeUltrafilterNat_Nat_set [simp]: "UNIV \<in> FreeUltrafilterNat"
   187 lemma FreeUltrafilterNat_Nat_set [simp]: "UNIV \<in> FreeUltrafilterNat"
   766 
   771 
   767 text{*A few lemmas first*}
   772 text{*A few lemmas first*}
   768 
   773 
   769 lemma lemma_omega_empty_singleton_disj: "{n::nat. x = real n} = {} |  
   774 lemma lemma_omega_empty_singleton_disj: "{n::nat. x = real n} = {} |  
   770       (\<exists>y. {n::nat. x = real n} = {y})"
   775       (\<exists>y. {n::nat. x = real n} = {y})"
   771 by (force dest: inj_real_of_nat [THEN injD])
   776 by (force)
   772 
   777 
   773 lemma lemma_finite_omega_set: "finite {n::nat. x = real n}"
   778 lemma lemma_finite_omega_set: "finite {n::nat. x = real n}"
   774 by (cut_tac x = x in lemma_omega_empty_singleton_disj, auto)
   779 by (cut_tac x = x in lemma_omega_empty_singleton_disj, auto)
   775 
   780 
   776 lemma not_ex_hypreal_of_real_eq_omega: 
   781 lemma not_ex_hypreal_of_real_eq_omega: 
   787  real number*}
   792  real number*}
   788 
   793 
   789 lemma lemma_epsilon_empty_singleton_disj:
   794 lemma lemma_epsilon_empty_singleton_disj:
   790      "{n::nat. x = inverse(real(Suc n))} = {} |  
   795      "{n::nat. x = inverse(real(Suc n))} = {} |  
   791       (\<exists>y. {n::nat. x = inverse(real(Suc n))} = {y})"
   796       (\<exists>y. {n::nat. x = inverse(real(Suc n))} = {y})"
   792 by (auto simp add: inj_real_of_nat [THEN inj_eq])
   797 by (auto)
   793 
   798 
   794 lemma lemma_finite_epsilon_set: "finite {n. x = inverse(real(Suc n))}"
   799 lemma lemma_finite_epsilon_set: "finite {n. x = inverse(real(Suc n))}"
   795 by (cut_tac x = x in lemma_epsilon_empty_singleton_disj, auto)
   800 by (cut_tac x = x in lemma_epsilon_empty_singleton_disj, auto)
   796 
   801 
   797 lemma not_ex_hypreal_of_real_eq_epsilon: 
   802 lemma not_ex_hypreal_of_real_eq_epsilon: