src/HOL/NSA/NSA.thy
changeset 61810 3c5040d5694a
parent 61806 d2e62ae01cd8
child 61945 1135b8de26c3
equal deleted inserted replaced
61809:81d34cf268d8 61810:3c5040d5694a
  1958  -------------------------------------*)
  1958  -------------------------------------*)
  1959 lemma FreeUltrafilterNat_const_Finite:
  1959 lemma FreeUltrafilterNat_const_Finite:
  1960      "eventually (\<lambda>n. norm (X n) = u) FreeUltrafilterNat ==> star_n X \<in> HFinite"
  1960      "eventually (\<lambda>n. norm (X n) = u) FreeUltrafilterNat ==> star_n X \<in> HFinite"
  1961 apply (rule FreeUltrafilterNat_HFinite)
  1961 apply (rule FreeUltrafilterNat_HFinite)
  1962 apply (rule_tac x = "u + 1" in exI)
  1962 apply (rule_tac x = "u + 1" in exI)
  1963 apply (auto elim: eventually_elim1)
  1963 apply (auto elim: eventually_mono)
  1964 done
  1964 done
  1965 
  1965 
  1966 lemma HInfinite_FreeUltrafilterNat:
  1966 lemma HInfinite_FreeUltrafilterNat:
  1967      "star_n X \<in> HInfinite ==> \<forall>u. eventually (\<lambda>n. u < norm (X n)) FreeUltrafilterNat"
  1967      "star_n X \<in> HInfinite ==> \<forall>u. eventually (\<lambda>n. u < norm (X n)) FreeUltrafilterNat"
  1968 apply (drule HInfinite_HFinite_iff [THEN iffD1])
  1968 apply (drule HInfinite_HFinite_iff [THEN iffD1])
  1969 apply (simp add: HFinite_FreeUltrafilterNat_iff)
  1969 apply (simp add: HFinite_FreeUltrafilterNat_iff)
  1970 apply (rule allI, drule_tac x="u + 1" in spec)
  1970 apply (rule allI, drule_tac x="u + 1" in spec)
  1971 apply (simp add: FreeUltrafilterNat.eventually_not_iff[symmetric])
  1971 apply (simp add: FreeUltrafilterNat.eventually_not_iff[symmetric])
  1972 apply (auto elim: eventually_elim1)
  1972 apply (auto elim: eventually_mono)
  1973 done
  1973 done
  1974 
  1974 
  1975 lemma lemma_Int_HI:
  1975 lemma lemma_Int_HI:
  1976      "{n. norm (Xa n) < u} Int {n. X n = Xa n} \<subseteq> {n. norm (X n) < (u::real)}"
  1976      "{n. norm (Xa n) < u} Int {n. X n = Xa n} \<subseteq> {n. norm (X n) < (u::real)}"
  1977 by auto
  1977 by auto
  2104 
  2104 
  2105 theorem HInfinite_omega [simp]: "omega \<in> HInfinite"
  2105 theorem HInfinite_omega [simp]: "omega \<in> HInfinite"
  2106 apply (simp add: omega_def)
  2106 apply (simp add: omega_def)
  2107 apply (rule FreeUltrafilterNat_HInfinite)
  2107 apply (rule FreeUltrafilterNat_HInfinite)
  2108 apply clarify
  2108 apply clarify
  2109 apply (rule_tac u1 = "u-1" in eventually_mono' [OF FreeUltrafilterNat_nat_gt_real])
  2109 apply (rule_tac u1 = "u-1" in eventually_mono [OF FreeUltrafilterNat_nat_gt_real])
  2110 apply auto
  2110 apply auto
  2111 done
  2111 done
  2112 
  2112 
  2113 (*-----------------------------------------------
  2113 (*-----------------------------------------------
  2114        Epsilon is a member of Infinitesimal
  2114        Epsilon is a member of Infinitesimal
  2198 lemma real_seq_to_hypreal_Infinitesimal:
  2198 lemma real_seq_to_hypreal_Infinitesimal:
  2199      "\<forall>n. norm(X n - x) < inverse(real(Suc n))
  2199      "\<forall>n. norm(X n - x) < inverse(real(Suc n))
  2200      ==> star_n X - star_of x \<in> Infinitesimal"
  2200      ==> star_n X - star_of x \<in> Infinitesimal"
  2201 unfolding star_n_diff star_of_def Infinitesimal_FreeUltrafilterNat_iff star_n_inverse
  2201 unfolding star_n_diff star_of_def Infinitesimal_FreeUltrafilterNat_iff star_n_inverse
  2202 by (auto dest!: FreeUltrafilterNat_inverse_real_of_posnat
  2202 by (auto dest!: FreeUltrafilterNat_inverse_real_of_posnat
  2203          intro: order_less_trans elim!: eventually_elim1)
  2203          intro: order_less_trans elim!: eventually_mono)
  2204 
  2204 
  2205 lemma real_seq_to_hypreal_approx:
  2205 lemma real_seq_to_hypreal_approx:
  2206      "\<forall>n. norm(X n - x) < inverse(real(Suc n))
  2206      "\<forall>n. norm(X n - x) < inverse(real(Suc n))
  2207       ==> star_n X @= star_of x"
  2207       ==> star_n X @= star_of x"
  2208 by (metis bex_Infinitesimal_iff real_seq_to_hypreal_Infinitesimal)
  2208 by (metis bex_Infinitesimal_iff real_seq_to_hypreal_Infinitesimal)
  2215 lemma real_seq_to_hypreal_Infinitesimal2:
  2215 lemma real_seq_to_hypreal_Infinitesimal2:
  2216      "\<forall>n. norm(X n - Y n) < inverse(real(Suc n))
  2216      "\<forall>n. norm(X n - Y n) < inverse(real(Suc n))
  2217       ==> star_n X - star_n Y \<in> Infinitesimal"
  2217       ==> star_n X - star_n Y \<in> Infinitesimal"
  2218 unfolding Infinitesimal_FreeUltrafilterNat_iff star_n_diff
  2218 unfolding Infinitesimal_FreeUltrafilterNat_iff star_n_diff
  2219 by (auto dest!: FreeUltrafilterNat_inverse_real_of_posnat
  2219 by (auto dest!: FreeUltrafilterNat_inverse_real_of_posnat
  2220          intro: order_less_trans elim!: eventually_elim1)
  2220          intro: order_less_trans elim!: eventually_mono)
  2221 
  2221 
  2222 end
  2222 end