equal
deleted
inserted
replaced
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) |