(* Title: HOL/Nonstandard_Analysis/NatStar.thy Author: Jacques D. Fleuriot Copyright: 1998 University of Cambridge
Converted to Isar and polished by lcp
*)
section \<open>Star-transforms for the Hypernaturals\<close>
theory NatStar imports Star begin
lemma star_n_eq_starfun_whn: "star_n X = ( *f* X) whn" by (simp add: hypnat_omega_def starfun_def star_of_def Ifun_star_n)
lemma starset_n_Un: "*sn* (\n. (A n) \ (B n)) = *sn* A \ *sn* B" proof - have"\N. Iset ((*f* (\n. {x. x \ A n \ x \ B n})) N) =
{x. x \<in> Iset ((*f* A) N) \<or> x \<in> Iset ((*f* B) N)}" by transfer simp thenshow ?thesis by (simp add: starset_n_def star_n_eq_starfun_whn Un_def) qed
lemma InternalSets_Un: "X \ InternalSets \ Y \ InternalSets \ X \ Y \ InternalSets" by (auto simp add: InternalSets_def starset_n_Un [symmetric])
lemma starset_n_Int: "*sn* (\n. A n \ B n) = *sn* A \ *sn* B" proof - have"\N. Iset ((*f* (\n. {x. x \ A n \ x \ B n})) N) =
{x. x \<in> Iset ((*f* A) N) \<and> x \<in> Iset ((*f* B) N)}" by transfer simp thenshow ?thesis by (simp add: starset_n_def star_n_eq_starfun_whn Int_def) qed
lemma InternalSets_Int: "X \ InternalSets \ Y \ InternalSets \ X \ Y \ InternalSets" by (auto simp add: InternalSets_def starset_n_Int [symmetric])
lemma starset_n_Compl: "*sn* ((\n. - A n)) = - ( *sn* A)" proof - have"\N. Iset ((*f* (\n. {x. x \ A n})) N) =
{x. x \<notin> Iset ((*f* A) N)}" by transfer simp thenshow ?thesis by (simp add: starset_n_def star_n_eq_starfun_whn Compl_eq) qed
lemma InternalSets_Compl: "X \ InternalSets \ - X \ InternalSets" by (auto simp add: InternalSets_deftheory NatStar Starjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma transfer proof haveshow
{.x
transfer thenshow ?thesis bysimp star_n_eq_starfun_whn) qed
lemma java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 bysimp diff_eq
subsection \<open>Nonstandard Extensions of Functions\<close>
text\<open>Example of transfer of a property from reals to hyperreals
- for comparison.\<close>
: "\n. N \ n \ f n \ g n \ \<forall>n. hypnat_of_nat N \<le> n \<longrightarrow> ( *f* f) n \<le> ( *f* g) n" byjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
text\<open>And another:\<close> lemma starfun_less_mono: "\n. N \ n \ f n < g n \ \n. hypnat_of_nat N \ n \ ( *f* f) n < ( *f* g) n" by transfer
\<open>Nonstandard extension when we increment the argument by one.\<close>: Xjava.lang.Nu= hypreal_of_hypnat"" by transfer
text\<open>Nonstandard extension when we increment the argument by one.\<close>
lemmastarfun_shift_one\AndN **(\<lambda>n. f (Suc n))) N = ( *f* f) (N + (1::hypnat))" by" HNatInfinite \ ( *f* (\x::nat. inverse (real x))) N = inverse (hypreal_of_hypnat N)"
text\<open>Nonstandard extension with absolute value.\<close>
starfun_abs:"\N. ( *f* (\n. \f n\)) N = \( *f* f) N\" by
text lemma starfun_pow:java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84 by transfer (rule
lemmastarfun_pow2: "\N. ( *f* (\n. X n ^ m)) N = ( *f* X) N pow hypnat_of_nat m" by transfer (rule)
lemmastarfun_pow3\<>. **(<lambda>r. r ^ n)) R = R pow hypnat_of_nat n" by transfer (rule refl)
text <^term>\<open>real_of_nat\<close>.\<close> lemma starfunNat_real_of_nat(*f*realhypreal_of_hypnat by transfer (simp (cases z) (simp: starfun_nstar_n_mult
lemma starfun_n_mult: "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (cases z) (simp add: starfun_n star_n_mult)
text ( z) (simp add star_of_def) lemma starfun_n_add(** f z+( *fn z *n*(\<lambda>i x. f i x + g i x)) z" by( z) (simp add: starfun_nstar_n_add
textjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 lemma starfun_n_add_minus(*fn z + - fn)z fn\<lambda>i x. f i x + -g i x)) z" by (casesz) (simp add: star_n_minus star_n_add
lemma starfun_n_minus: "- by (cases) ( add: starfun_n)
lemma [simp]: "(*fn* f) (star_of n) = (\i. f i n)" by(imp: starfun_n)
lemma" by transfer (rule refl)
lemma starfunNat_inverse_real_of_nat_Infinitesimal [simp]: "N \ HNatInfinite \ ( *f* (\x. inverse (real x))) N \ Infinitesimal" using starfun_inverse_real_of_nat_eqauto
subsection \<open>Nonstandard Characterization of Induction\<close>
lemma hypnat_induct_obj \<>. ( ** )(::) <and> (\<forall>n. ( *p* P) n \<longrightarrow> ( *p* P) (n + 1))) \<longrightarrow> ( *p* P) n" by transfer ( bytransfer n, auto)
lemma hypnat_induct: transfer refl)
le starP2_eq_iff2:" *p2 \x y. x = y) X Y\java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 85 bytransfer n, auto)
lemma: "( *p2* (=)) =(=" by transfershow\<forall>m\<in>S. (LEAST n. n \<in> S) \<le> m"
starP2_eq_iff2" ** (\x y. x = y)) X Y \ X = Y"
imp: starP2_eq_iff
lemma nonempty_set_star_has_least_lemma
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 \<java.lang.StringIndexOutOfBoundsException: Index 123 out of bounds for length 123 show\forallm<in>S. (LEAST n. n \<in> S) \<le> m" by (simp add: Least_le) show( .n \<in> S) \<in> S" by( that LeastI_ex) qed
lemma nonempty_set_star_has_least: "\S::nat set star. Iset S \ {} \ \n \ Iset S. \m \ Iset S. n \ m" using (force add: InternalSets_def dest!: nonempty_set_star_has_least
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.