src/HOL/Nonstandard_Analysis/HyperNat.thy
changeset 69597 ff784d5a5bfb
parent 67091 1393c2340eec
child 70219 b21efbf64292
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
   163 
   163 
   164 lemma Nats_diff [simp]: "a \<in> Nats \<Longrightarrow> b \<in> Nats \<Longrightarrow> a - b \<in> Nats" for a b :: hypnat
   164 lemma Nats_diff [simp]: "a \<in> Nats \<Longrightarrow> b \<in> Nats \<Longrightarrow> a - b \<in> Nats" for a b :: hypnat
   165   by (simp add: Nats_eq_Standard)
   165   by (simp add: Nats_eq_Standard)
   166 
   166 
   167 
   167 
   168 subsection \<open>Infinite Hypernatural Numbers -- @{term HNatInfinite}\<close>
   168 subsection \<open>Infinite Hypernatural Numbers -- \<^term>\<open>HNatInfinite\<close>\<close>
   169 
   169 
   170 text \<open>The set of infinite hypernatural numbers.\<close>
   170 text \<open>The set of infinite hypernatural numbers.\<close>
   171 definition HNatInfinite :: "hypnat set"
   171 definition HNatInfinite :: "hypnat set"
   172   where "HNatInfinite = {n. n \<notin> Nats}"
   172   where "HNatInfinite = {n. n \<notin> Nats}"
   173 
   173 
   304   by (simp add: Nats_less_whn)
   304   by (simp add: Nats_less_whn)
   305 
   305 
   306 
   306 
   307 subsubsection \<open>Alternative characterization of the set of infinite hypernaturals\<close>
   307 subsubsection \<open>Alternative characterization of the set of infinite hypernaturals\<close>
   308 
   308 
   309 text \<open>@{term "HNatInfinite = {N. \<forall>n \<in> Nats. n < N}"}\<close>
   309 text \<open>\<^term>\<open>HNatInfinite = {N. \<forall>n \<in> Nats. n < N}\<close>\<close>
   310 
   310 
   311 (*??delete? similar reasoning in hypnat_omega_gt_SHNat above*)
   311 (*??delete? similar reasoning in hypnat_omega_gt_SHNat above*)
   312 lemma HNatInfinite_FreeUltrafilterNat_lemma:
   312 lemma HNatInfinite_FreeUltrafilterNat_lemma:
   313   assumes "\<forall>N::nat. eventually (\<lambda>n. f n \<noteq> N) \<U>"
   313   assumes "\<forall>N::nat. eventually (\<lambda>n. f n \<noteq> N) \<U>"
   314   shows "eventually (\<lambda>n. N < f n) \<U>"
   314   shows "eventually (\<lambda>n. N < f n) \<U>"
   324   apply (safe intro!: Nats_less_HNatInfinite)
   324   apply (safe intro!: Nats_less_HNatInfinite)
   325   apply (auto simp add: HNatInfinite_def)
   325   apply (auto simp add: HNatInfinite_def)
   326   done
   326   done
   327 
   327 
   328 
   328 
   329 subsubsection \<open>Alternative Characterization of @{term HNatInfinite} using Free Ultrafilter\<close>
   329 subsubsection \<open>Alternative Characterization of \<^term>\<open>HNatInfinite\<close> using Free Ultrafilter\<close>
   330 
   330 
   331 lemma HNatInfinite_FreeUltrafilterNat:
   331 lemma HNatInfinite_FreeUltrafilterNat:
   332   "star_n X \<in> HNatInfinite \<Longrightarrow> \<forall>u. eventually (\<lambda>n. u < X n) \<U>"
   332   "star_n X \<in> HNatInfinite \<Longrightarrow> \<forall>u. eventually (\<lambda>n. u < X n) \<U>"
   333   apply (auto simp add: HNatInfinite_iff SHNat_eq)
   333   apply (auto simp add: HNatInfinite_iff SHNat_eq)
   334   apply (drule_tac x="star_of u" in spec, simp)
   334   apply (drule_tac x="star_of u" in spec, simp)