src/HOL/Hyperreal/HyperNat.thy
changeset 15070 541d2a35fc30
parent 15053 405be2b48f5b
child 15131 c69542757a4d
equal deleted inserted replaced
15069:0a0371b55a0f 15070:541d2a35fc30
   502 lemma hypnat_of_nat_minus:
   502 lemma hypnat_of_nat_minus:
   503       "hypnat_of_nat ((j::nat) - k) = hypnat_of_nat j - hypnat_of_nat k"
   503       "hypnat_of_nat ((j::nat) - k) = hypnat_of_nat j - hypnat_of_nat k"
   504 by (simp add: hypnat_of_nat_def split: nat_diff_split hypnat_diff_split)
   504 by (simp add: hypnat_of_nat_def split: nat_diff_split hypnat_diff_split)
   505 
   505 
   506 
   506 
   507 subsection{*Existence of an Infinite Hypernatural Number*}
   507 subsection{*Existence of an infinite hypernatural number*}
   508 
   508 
   509 lemma hypnat_omega: "hypnatrel``{%n::nat. n} \<in> hypnat"
   509 lemma hypnat_omega: "hypnatrel``{%n::nat. n} \<in> hypnat"
   510 by auto
   510 by auto
   511 
   511 
   512 lemma Rep_hypnat_omega: "Rep_hypnat(whn) \<in> hypnat"
   512 lemma Rep_hypnat_omega: "Rep_hypnat(whn) \<in> hypnat"
   515 text{*Existence of infinite number not corresponding to any natural number
   515 text{*Existence of infinite number not corresponding to any natural number
   516 follows because member @{term FreeUltrafilterNat} is not finite.
   516 follows because member @{term FreeUltrafilterNat} is not finite.
   517 See @{text HyperDef.thy} for similar argument.*}
   517 See @{text HyperDef.thy} for similar argument.*}
   518 
   518 
   519 
   519 
   520 subsection{*Properties of the set @{term Nats} of Embedded Natural Numbers*}
   520 subsection{*Properties of the set of embedded natural numbers*}
   521 
   521 
   522 lemma of_nat_eq_add [rule_format]:
   522 lemma of_nat_eq_add [rule_format]:
   523      "\<forall>d::hypnat. of_nat m = of_nat n + d --> d \<in> range of_nat"
   523      "\<forall>d::hypnat. of_nat m = of_nat n + d --> d \<in> range of_nat"
   524 apply (induct n) 
   524 apply (induct n) 
   525 apply (auto simp add: add_assoc) 
   525 apply (auto simp add: add_assoc) 
   589 
   589 
   590 lemma HNatInfinite_not_Nats_iff: "(x \<in> HNatInfinite) = (x \<notin> Nats)"
   590 lemma HNatInfinite_not_Nats_iff: "(x \<in> HNatInfinite) = (x \<notin> Nats)"
   591 by (simp add: HNatInfinite_def)
   591 by (simp add: HNatInfinite_def)
   592 
   592 
   593 
   593 
   594 subsection{*Alternative Characterization of the Set of Infinite Hypernaturals:
   594 subsection{*Alternative characterization of the set of infinite hypernaturals*}
   595 @{term "HNatInfinite = {N. \<forall>n \<in> Nats. n < N}"}*}
   595 
       
   596 text{* @{term "HNatInfinite = {N. \<forall>n \<in> Nats. n < N}"}*}
   596 
   597 
   597 (*??delete? similar reasoning in hypnat_omega_gt_SHNat above*)
   598 (*??delete? similar reasoning in hypnat_omega_gt_SHNat above*)
   598 lemma HNatInfinite_FreeUltrafilterNat_lemma:
   599 lemma HNatInfinite_FreeUltrafilterNat_lemma:
   599      "\<forall>N::nat. {n. f n \<noteq> N} \<in> FreeUltrafilterNat
   600      "\<forall>N::nat. {n. f n \<noteq> N} \<in> FreeUltrafilterNat
   600       ==> {n. N < f n} \<in> FreeUltrafilterNat"
   601       ==> {n. N < f n} \<in> FreeUltrafilterNat"