121 hIm_hcomplex_of_complex) |
121 hIm_hcomplex_of_complex) |
122 |
122 |
123 lemma CLIM_NSCLIM: |
123 lemma CLIM_NSCLIM: |
124 "f -- x --C> L ==> f -- x --NSC> L" |
124 "f -- x --C> L ==> f -- x --NSC> L" |
125 apply (simp add: CLIM_def NSCLIM_def capprox_def, auto) |
125 apply (simp add: CLIM_def NSCLIM_def capprox_def, auto) |
126 apply (rule_tac z = xa in eq_Abs_hcomplex) |
126 apply (rule_tac z = xa in eq_Abs_star) |
127 apply (auto simp add: hcomplex_of_complex_def starfunC hcomplex_diff |
127 apply (auto simp add: hcomplex_of_complex_def starfunC hcomplex_diff |
|
128 star_of_def star_n_def |
128 CInfinitesimal_hcmod_iff hcmod Infinitesimal_FreeUltrafilterNat_iff) |
129 CInfinitesimal_hcmod_iff hcmod Infinitesimal_FreeUltrafilterNat_iff) |
129 apply (rule bexI, rule_tac [2] lemma_starrel_refl, safe) |
130 apply (rule bexI, rule_tac [2] lemma_starrel_refl, safe) |
130 apply (drule_tac x = u in spec, auto) |
131 apply (drule_tac x = u in spec, auto) |
131 apply (drule_tac x = s in spec, auto, ultra) |
132 apply (drule_tac x = s in spec, auto, ultra) |
132 apply (drule sym, auto) |
133 apply (drule sym, auto) |
133 done |
134 done |
134 |
135 |
135 lemma eq_Abs_hcomplex_ALL: |
136 lemma eq_Abs_star_ALL: |
136 "(\<forall>t. P t) = (\<forall>X. P (Abs_hcomplex(hcomplexrel `` {X})))" |
137 "(\<forall>t. P t) = (\<forall>X. P (Abs_star(starrel `` {X})))" |
137 apply auto |
138 apply auto |
138 apply (rule_tac z = t in eq_Abs_hcomplex, auto) |
139 apply (rule_tac z = t in eq_Abs_star, auto) |
139 done |
140 done |
140 |
141 |
141 lemma lemma_CLIM: |
142 lemma lemma_CLIM: |
142 "\<forall>s. 0 < s --> (\<exists>xa. xa \<noteq> x & |
143 "\<forall>s. 0 < s --> (\<exists>xa. xa \<noteq> x & |
143 cmod (xa - x) < s & r \<le> cmod (f xa - L)) |
144 cmod (xa - x) < s & r \<le> cmod (f xa - L)) |
166 |
167 |
167 lemma NSCLIM_CLIM: |
168 lemma NSCLIM_CLIM: |
168 "f -- x --NSC> L ==> f -- x --C> L" |
169 "f -- x --NSC> L ==> f -- x --C> L" |
169 apply (simp add: CLIM_def NSCLIM_def) |
170 apply (simp add: CLIM_def NSCLIM_def) |
170 apply (rule ccontr) |
171 apply (rule ccontr) |
171 apply (auto simp add: eq_Abs_hcomplex_ALL starfunC |
172 apply (auto simp add: eq_Abs_star_ALL starfunC |
172 CInfinitesimal_capprox_minus [symmetric] hcomplex_diff |
173 CInfinitesimal_capprox_minus [symmetric] hcomplex_diff |
173 CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
174 CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
|
175 star_of_def star_n_def |
174 Infinitesimal_FreeUltrafilterNat_iff hcmod) |
176 Infinitesimal_FreeUltrafilterNat_iff hcmod) |
175 apply (simp add: linorder_not_less) |
177 apply (simp add: linorder_not_less) |
176 apply (drule lemma_skolemize_CLIM2, safe) |
178 apply (drule lemma_skolemize_CLIM2, safe) |
177 apply (drule_tac x = X in spec, auto) |
179 apply (drule_tac x = X in spec, auto) |
178 apply (drule lemma_csimp [THEN complex_seq_to_hcomplex_CInfinitesimal]) |
180 apply (drule lemma_csimp [THEN complex_seq_to_hcomplex_CInfinitesimal]) |
179 apply (simp add: CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
181 apply (simp add: CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
|
182 star_of_def star_n_def |
180 Infinitesimal_FreeUltrafilterNat_iff hcomplex_diff hcmod, blast) |
183 Infinitesimal_FreeUltrafilterNat_iff hcomplex_diff hcmod, blast) |
181 apply (drule_tac x = r in spec, clarify) |
184 apply (drule_tac x = r in spec, clarify) |
182 apply (drule FreeUltrafilterNat_all, ultra, arith) |
185 apply (drule FreeUltrafilterNat_all, ultra, arith) |
183 done |
186 done |
184 |
187 |
190 |
193 |
191 subsection{*Limit of Complex to Real Function*} |
194 subsection{*Limit of Complex to Real Function*} |
192 |
195 |
193 lemma CRLIM_NSCRLIM: "f -- x --CR> L ==> f -- x --NSCR> L" |
196 lemma CRLIM_NSCRLIM: "f -- x --CR> L ==> f -- x --NSCR> L" |
194 apply (simp add: CRLIM_def NSCRLIM_def capprox_def, auto) |
197 apply (simp add: CRLIM_def NSCRLIM_def capprox_def, auto) |
195 apply (rule_tac z = xa in eq_Abs_hcomplex) |
198 apply (rule_tac z = xa in eq_Abs_star) |
196 apply (auto simp add: hcomplex_of_complex_def starfunCR hcomplex_diff |
199 apply (auto simp add: hcomplex_of_complex_def starfunCR hcomplex_diff |
197 CInfinitesimal_hcmod_iff hcmod hypreal_diff |
200 CInfinitesimal_hcmod_iff hcmod hypreal_diff |
198 Infinitesimal_FreeUltrafilterNat_iff |
201 Infinitesimal_FreeUltrafilterNat_iff |
199 star_of_def star_n_def |
202 star_of_def star_n_def |
200 Infinitesimal_approx_minus [symmetric] hypreal_of_real_def) |
203 Infinitesimal_approx_minus [symmetric] hypreal_of_real_def) |
230 by auto |
233 by auto |
231 |
234 |
232 lemma NSCRLIM_CRLIM: "f -- x --NSCR> L ==> f -- x --CR> L" |
235 lemma NSCRLIM_CRLIM: "f -- x --NSCR> L ==> f -- x --CR> L" |
233 apply (simp add: CRLIM_def NSCRLIM_def capprox_def) |
236 apply (simp add: CRLIM_def NSCRLIM_def capprox_def) |
234 apply (rule ccontr) |
237 apply (rule ccontr) |
235 apply (auto simp add: eq_Abs_hcomplex_ALL starfunCR hcomplex_diff |
238 apply (auto simp add: eq_Abs_star_ALL starfunCR hcomplex_diff |
236 hcomplex_of_complex_def hypreal_diff CInfinitesimal_hcmod_iff |
239 hcomplex_of_complex_def hypreal_diff CInfinitesimal_hcmod_iff |
237 hcmod Infinitesimal_approx_minus [symmetric] |
240 hcmod Infinitesimal_approx_minus [symmetric] |
|
241 star_of_def star_n_def |
238 Infinitesimal_FreeUltrafilterNat_iff) |
242 Infinitesimal_FreeUltrafilterNat_iff) |
239 apply (simp add: linorder_not_less) |
243 apply (simp add: linorder_not_less) |
240 apply (drule lemma_skolemize_CRLIM2, safe) |
244 apply (drule lemma_skolemize_CRLIM2, safe) |
241 apply (drule_tac x = X in spec, auto) |
245 apply (drule_tac x = X in spec, auto) |
242 apply (drule lemma_crsimp [THEN complex_seq_to_hcomplex_CInfinitesimal]) |
246 apply (drule lemma_crsimp [THEN complex_seq_to_hcomplex_CInfinitesimal]) |
243 apply (simp add: CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
247 apply (simp add: CInfinitesimal_hcmod_iff hcomplex_of_complex_def |
|
248 star_of_def star_n_def |
244 Infinitesimal_FreeUltrafilterNat_iff hcomplex_diff hcmod) |
249 Infinitesimal_FreeUltrafilterNat_iff hcomplex_diff hcmod) |
245 apply (auto simp add: hypreal_of_real_def star_of_def star_n_def hypreal_diff) |
250 apply (auto simp add: hypreal_of_real_def star_of_def star_n_def hypreal_diff) |
246 apply (drule_tac x = r in spec, clarify) |
251 apply (drule_tac x = r in spec, clarify) |
247 apply (drule FreeUltrafilterNat_all, ultra) |
252 apply (drule FreeUltrafilterNat_all, ultra) |
248 done |
253 done |
406 (** another equivalence result **) |
411 (** another equivalence result **) |
407 lemma NSCLIM_NSCRLIM_iff: |
412 lemma NSCLIM_NSCRLIM_iff: |
408 "(f -- x --NSC> L) = ((%y. cmod(f y - L)) -- x --NSCR> 0)" |
413 "(f -- x --NSC> L) = ((%y. cmod(f y - L)) -- x --NSCR> 0)" |
409 apply (auto simp add: NSCLIM_def NSCRLIM_def CInfinitesimal_capprox_minus [symmetric] CInfinitesimal_hcmod_iff) |
414 apply (auto simp add: NSCLIM_def NSCRLIM_def CInfinitesimal_capprox_minus [symmetric] CInfinitesimal_hcmod_iff) |
410 apply (auto dest!: spec) |
415 apply (auto dest!: spec) |
411 apply (rule_tac [!] z = xa in eq_Abs_hcomplex) |
416 apply (rule_tac [!] z = xa in eq_Abs_star) |
412 apply (auto simp add: hcomplex_diff starfunC starfunCR hcomplex_of_complex_def hcmod mem_infmal_iff) |
417 apply (auto simp add: hcomplex_diff starfunC starfunCR hcomplex_of_complex_def hcmod mem_infmal_iff star_of_def star_n_def) |
413 done |
418 done |
414 |
419 |
415 (** much, much easier standard proof **) |
420 (** much, much easier standard proof **) |
416 lemma CLIM_CRLIM_iff: "(f -- x --C> L) = ((%y. cmod(f y - L)) -- x --CR> 0)" |
421 lemma CLIM_CRLIM_iff: "(f -- x --C> L) = ((%y. cmod(f y - L)) -- x --CR> 0)" |
417 by (simp add: CLIM_def CRLIM_def) |
422 by (simp add: CLIM_def CRLIM_def) |
425 "(f -- a --NSC> L) = ((%x. Re(f x)) -- a --NSCR> Re(L) & |
430 "(f -- a --NSC> L) = ((%x. Re(f x)) -- a --NSCR> Re(L) & |
426 (%x. Im(f x)) -- a --NSCR> Im(L))" |
431 (%x. Im(f x)) -- a --NSCR> Im(L))" |
427 apply (auto intro: NSCLIM_NSCRLIM_Re NSCLIM_NSCRLIM_Im) |
432 apply (auto intro: NSCLIM_NSCRLIM_Re NSCLIM_NSCRLIM_Im) |
428 apply (auto simp add: NSCLIM_def NSCRLIM_def) |
433 apply (auto simp add: NSCLIM_def NSCRLIM_def) |
429 apply (auto dest!: spec) |
434 apply (auto dest!: spec) |
430 apply (rule_tac z = x in eq_Abs_hcomplex) |
435 apply (rule_tac z = x in eq_Abs_star) |
431 apply (simp add: capprox_approx_iff starfunC hcomplex_of_complex_def starfunCR hypreal_of_real_def star_of_def star_n_def) |
436 apply (simp add: capprox_approx_iff starfunC hcomplex_of_complex_def starfunCR hypreal_of_real_def star_of_def star_n_def) |
432 done |
437 done |
433 |
438 |
434 lemma CLIM_CRLIM_Re_Im_iff: |
439 lemma CLIM_CRLIM_Re_Im_iff: |
435 "(f -- a --C> L) = ((%x. Re(f x)) -- a --CR> Re(L) & |
440 "(f -- a --C> L) = ((%x. Re(f x)) -- a --CR> Re(L) & |
479 apply (drule_tac x = "hcomplex_of_complex a + x" in spec) |
484 apply (drule_tac x = "hcomplex_of_complex a + x" in spec) |
480 apply (drule_tac [2] x = "- hcomplex_of_complex a + x" in spec, safe, simp) |
485 apply (drule_tac [2] x = "- hcomplex_of_complex a + x" in spec, safe, simp) |
481 apply (rule mem_cinfmal_iff [THEN iffD2, THEN CInfinitesimal_add_capprox_self [THEN capprox_sym]]) |
486 apply (rule mem_cinfmal_iff [THEN iffD2, THEN CInfinitesimal_add_capprox_self [THEN capprox_sym]]) |
482 apply (rule_tac [4] capprox_minus_iff2 [THEN iffD1]) |
487 apply (rule_tac [4] capprox_minus_iff2 [THEN iffD1]) |
483 prefer 3 apply (simp add: compare_rls hcomplex_add_commute) |
488 prefer 3 apply (simp add: compare_rls hcomplex_add_commute) |
484 apply (rule_tac [2] z = x in eq_Abs_hcomplex) |
489 apply (rule_tac [2] z = x in eq_Abs_star) |
485 apply (rule_tac [4] z = x in eq_Abs_hcomplex) |
490 apply (rule_tac [4] z = x in eq_Abs_star) |
486 apply (auto simp add: starfunC hcomplex_of_complex_def hcomplex_minus hcomplex_add) |
491 apply (auto simp add: starfunC hcomplex_of_complex_def hcomplex_minus hcomplex_add star_of_def star_n_def) |
487 done |
492 done |
488 |
493 |
489 lemma NSCLIM_isContc_iff: |
494 lemma NSCLIM_isContc_iff: |
490 "(f -- a --NSC> f a) = ((%h. f(a + h)) -- 0 --NSC> f a)" |
495 "(f -- a --NSC> f a) = ((%h. f(a + h)) -- 0 --NSC> f a)" |
491 by (rule NSCLIM_h_iff) |
496 by (rule NSCLIM_h_iff) |
858 apply safe |
863 apply safe |
859 apply (frule_tac f = g in NSCDERIV_capprox) |
864 apply (frule_tac f = g in NSCDERIV_capprox) |
860 apply (auto simp add: starfunC_lambda_cancel2 starfunC_o [symmetric]) |
865 apply (auto simp add: starfunC_lambda_cancel2 starfunC_o [symmetric]) |
861 apply (case_tac "( *fc* g) (hcomplex_of_complex (x) + xa) = hcomplex_of_complex (g x) ") |
866 apply (case_tac "( *fc* g) (hcomplex_of_complex (x) + xa) = hcomplex_of_complex (g x) ") |
862 apply (drule_tac g = g in NSCDERIV_zero) |
867 apply (drule_tac g = g in NSCDERIV_zero) |
863 apply (auto simp add: hcomplex_divide_def) |
868 apply (auto simp add: divide_inverse) |
864 apply (rule_tac z1 = "( *fc* g) (hcomplex_of_complex (x) + xa) - hcomplex_of_complex (g x) " and y1 = "inverse xa" in lemma_complex_chain [THEN ssubst]) |
869 apply (rule_tac z1 = "( *fc* g) (hcomplex_of_complex (x) + xa) - hcomplex_of_complex (g x) " and y1 = "inverse xa" in lemma_complex_chain [THEN ssubst]) |
865 apply (simp (no_asm_simp)) |
870 apply (simp (no_asm_simp)) |
866 apply (rule capprox_mult_hcomplex_of_complex) |
871 apply (rule capprox_mult_hcomplex_of_complex) |
867 apply (auto intro!: NSCDERIVD1 intro: capprox_minus_iff [THEN iffD2] |
872 apply (auto intro!: NSCDERIVD1 intro: capprox_minus_iff [THEN iffD2] |
868 simp add: diff_minus [symmetric] divide_inverse [symmetric]) |
873 simp add: diff_minus [symmetric] divide_inverse [symmetric]) |
1026 val complex_add_minus_iff = thm "complex_add_minus_iff"; |
1031 val complex_add_minus_iff = thm "complex_add_minus_iff"; |
1027 val complex_add_eq_0_iff = thm "complex_add_eq_0_iff"; |
1032 val complex_add_eq_0_iff = thm "complex_add_eq_0_iff"; |
1028 val NSCLIM_NSCRLIM_Re = thm "NSCLIM_NSCRLIM_Re"; |
1033 val NSCLIM_NSCRLIM_Re = thm "NSCLIM_NSCRLIM_Re"; |
1029 val NSCLIM_NSCRLIM_Im = thm "NSCLIM_NSCRLIM_Im"; |
1034 val NSCLIM_NSCRLIM_Im = thm "NSCLIM_NSCRLIM_Im"; |
1030 val CLIM_NSCLIM = thm "CLIM_NSCLIM"; |
1035 val CLIM_NSCLIM = thm "CLIM_NSCLIM"; |
1031 val eq_Abs_hcomplex_ALL = thm "eq_Abs_hcomplex_ALL"; |
1036 val eq_Abs_star_ALL = thm "eq_Abs_star_ALL"; |
1032 val lemma_CLIM = thm "lemma_CLIM"; |
1037 val lemma_CLIM = thm "lemma_CLIM"; |
1033 val lemma_skolemize_CLIM2 = thm "lemma_skolemize_CLIM2"; |
1038 val lemma_skolemize_CLIM2 = thm "lemma_skolemize_CLIM2"; |
1034 val lemma_csimp = thm "lemma_csimp"; |
1039 val lemma_csimp = thm "lemma_csimp"; |
1035 val NSCLIM_CLIM = thm "NSCLIM_CLIM"; |
1040 val NSCLIM_CLIM = thm "NSCLIM_CLIM"; |
1036 val CLIM_NSCLIM_iff = thm "CLIM_NSCLIM_iff"; |
1041 val CLIM_NSCLIM_iff = thm "CLIM_NSCLIM_iff"; |