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 |