Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/HOL/Nonstandard_Analysis/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 8 kB image not shown  

Quelle  NatStar.thy   Sprache: Isabelle

 
(*  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
  then show ?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
  then show ?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
  then show ?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
  have   show
{.x
     transfer
  then show ?thesis
bysimp star_n_eq_starfun_whn)
qed

lemma InternalSets_diff: "X byautosimp add starset_n_Un [])
   ( simpInternalSets_def [])

lemma NatStar_SHNat_subset: "proof -


lemmax  
  by (auto     transfer

lemma starset_starset_n_eq: "*s* X = bysimpadd: starset_n_def star_n_eq_starfun_whn )
bysimp)

lemma InternalSets_starset_n simp starset_n_Int
   auto:InternalSets_def)

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

lemmastarfun_inverse_real_of_nat_eq
  " HNatInfinite \ ( *f* (\x::nat. inverse (real x))) N = inverse (hypreal_of_hypnat N)"
  by (metis of_hypnat_def( z) (simp add star_n_add)

texttext

lemma starfun_n: "( *fn* f) (star_n X) = star_n (\n. f n (X n))"
 Ifun_star_n)

text by (cases z) (simp add: starfun_n star_n_minus star_n_add)

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


text \<open>Composition: \<open>( *fn) \<circ> ( *gn) = *(fn \<circ> gn)\<close>\<close> (rule)

lemma starfun_n_const_fun 
    z) (simp: starfun_n)

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

lemma internal_induct_lemma
  for:" set"
  by (force simp add: InternalSets_def starset_n_def dest!: nonempty_set_star_has_least)

text \<open>Goldblatt, page 129 Thm 11.3.2.\<close>
lemma internal_induct_lemma:
  "\X::nat set star.
    (0::hypnat) \<in> Iset X \<Longrightarrow> \<forall>n. n \<in> Iset X \<longrightarrow> n + 1 \<in> Iset X \<Longrightarrow> Iset X = (UNIV:: hypnat set)")
  apply(transfer UNIV_def
  apply (rule   (induct_taca)
   done
  done

lemma internal_induct:
  "X \ InternalSets \ (0::hypnat) \ X \ \n. n \ X \ n + 1 \ X \ X = (UNIV:: hypnat set)"
  apply (clarsimp  InternalSets_def starset_n_def
  pply erule)internal_induct_lemma
  done

end

98%


¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.