224 text{*Standard and NS definitions of Limit*} (*NEEDS STRUCTURING*) |
224 text{*Standard and NS definitions of Limit*} (*NEEDS STRUCTURING*) |
225 lemma LIM_NSLIM: |
225 lemma LIM_NSLIM: |
226 "f -- x --> L ==> f -- x --NS> L" |
226 "f -- x --> L ==> f -- x --NS> L" |
227 apply (simp add: LIM_def NSLIM_def approx_def) |
227 apply (simp add: LIM_def NSLIM_def approx_def) |
228 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
228 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
229 apply (rule_tac z = xa in eq_Abs_star) |
229 apply (rule_tac x = xa in star_cases) |
230 apply (auto simp add: real_add_minus_iff starfun hypreal_minus hypreal_of_real_def star_of_def star_n_def hypreal_add) |
230 apply (auto simp add: real_add_minus_iff starfun star_n_minus star_of_def star_n_add star_n_eq_iff) |
231 apply (rule bexI, rule_tac [2] lemma_starrel_refl, clarify) |
231 apply (rule bexI [OF _ Rep_star_star_n], clarify) |
232 apply (drule_tac x = u in spec, clarify) |
232 apply (drule_tac x = u in spec, clarify) |
233 apply (drule_tac x = s in spec, clarify) |
233 apply (drule_tac x = s in spec, clarify) |
234 apply (subgoal_tac "\<forall>n::nat. (xa n) \<noteq> x & \<bar>(xa n) + - x\<bar> < s --> \<bar>f (xa n) + - L\<bar> < u") |
234 apply (subgoal_tac "\<forall>n::nat. (Xa n) \<noteq> x & \<bar>(Xa n) + - x\<bar> < s --> \<bar>f (Xa n) + - L\<bar> < u") |
235 prefer 2 apply blast |
235 prefer 2 apply blast |
236 apply (drule FreeUltrafilterNat_all, ultra) |
236 apply (drule FreeUltrafilterNat_all, ultra) |
237 done |
237 done |
238 |
238 |
239 |
239 |
268 apply (simp add: LIM_def NSLIM_def approx_def) |
268 apply (simp add: LIM_def NSLIM_def approx_def) |
269 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, clarify) |
269 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, clarify) |
270 apply (rule ccontr, simp) |
270 apply (rule ccontr, simp) |
271 apply (simp add: linorder_not_less) |
271 apply (simp add: linorder_not_less) |
272 apply (drule lemma_skolemize_LIM2, safe) |
272 apply (drule lemma_skolemize_LIM2, safe) |
273 apply (drule_tac x = "Abs_star (starrel``{X})" in spec) |
273 apply (drule_tac x = "star_n X" in spec) |
274 apply (auto simp add: starfun hypreal_minus hypreal_of_real_def star_of_def star_n_def hypreal_add) |
274 apply (auto simp add: starfun star_n_minus star_of_def star_n_add star_n_eq_iff) |
275 apply (drule lemma_simp [THEN real_seq_to_hypreal_Infinitesimal]) |
275 apply (drule lemma_simp [THEN real_seq_to_hypreal_Infinitesimal]) |
276 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff hypreal_of_real_def star_of_def star_n_def hypreal_minus hypreal_add, blast) |
276 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff star_of_def star_n_minus star_n_add star_n_eq_iff, blast) |
277 apply (drule spec, drule mp, assumption) |
277 apply (drule spec, drule mp, assumption) |
278 apply (drule FreeUltrafilterNat_all, ultra) |
278 apply (drule FreeUltrafilterNat_all, ultra) |
279 done |
279 done |
280 |
280 |
281 |
281 |
449 apply (drule_tac x = "hypreal_of_real a + x" in spec) |
449 apply (drule_tac x = "hypreal_of_real a + x" in spec) |
450 apply (drule_tac [2] x = "-hypreal_of_real a + x" in spec, safe, simp) |
450 apply (drule_tac [2] x = "-hypreal_of_real a + x" in spec, safe, simp) |
451 apply (rule mem_infmal_iff [THEN iffD2, THEN Infinitesimal_add_approx_self [THEN approx_sym]]) |
451 apply (rule mem_infmal_iff [THEN iffD2, THEN Infinitesimal_add_approx_self [THEN approx_sym]]) |
452 apply (rule_tac [4] approx_minus_iff2 [THEN iffD1]) |
452 apply (rule_tac [4] approx_minus_iff2 [THEN iffD1]) |
453 prefer 3 apply (simp add: add_commute) |
453 prefer 3 apply (simp add: add_commute) |
454 apply (rule_tac [2] z = x in eq_Abs_star) |
454 apply (rule_tac [2] x = x in star_cases) |
455 apply (rule_tac [4] z = x in eq_Abs_star) |
455 apply (rule_tac [4] x = x in star_cases) |
456 apply (auto simp add: starfun hypreal_of_real_def star_of_def star_n_def hypreal_minus hypreal_add add_assoc approx_refl hypreal_zero_def) |
456 apply (auto simp add: starfun star_of_def star_n_minus star_n_add add_assoc approx_refl star_n_zero_num) |
457 done |
457 done |
458 |
458 |
459 lemma NSLIM_isCont_iff: "(f -- a --NS> f a) = ((%h. f(a + h)) -- 0 --NS> f a)" |
459 lemma NSLIM_isCont_iff: "(f -- a --NS> f a) = ((%h. f(a + h)) -- 0 --NS> f a)" |
460 by (rule NSLIM_h_iff) |
460 by (rule NSLIM_h_iff) |
461 |
461 |
577 by (simp add: isUCont_def isCont_def LIM_def, meson) |
577 by (simp add: isUCont_def isCont_def LIM_def, meson) |
578 |
578 |
579 lemma isUCont_isNSUCont: "isUCont f ==> isNSUCont f" |
579 lemma isUCont_isNSUCont: "isUCont f ==> isNSUCont f" |
580 apply (simp add: isNSUCont_def isUCont_def approx_def) |
580 apply (simp add: isNSUCont_def isUCont_def approx_def) |
581 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
581 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
582 apply (rule_tac z = x in eq_Abs_star) |
582 apply (rule_tac x = x in star_cases) |
583 apply (rule_tac z = y in eq_Abs_star) |
583 apply (rule_tac x = y in star_cases) |
584 apply (auto simp add: starfun hypreal_minus hypreal_add) |
584 apply (auto simp add: starfun star_n_minus star_n_add) |
585 apply (rule bexI, rule_tac [2] lemma_starrel_refl, safe) |
585 apply (rule bexI [OF _ Rep_star_star_n], safe) |
586 apply (drule_tac x = u in spec, clarify) |
586 apply (drule_tac x = u in spec, clarify) |
587 apply (drule_tac x = s in spec, clarify) |
587 apply (drule_tac x = s in spec, clarify) |
588 apply (subgoal_tac "\<forall>n::nat. abs ((xa n) + - (xb n)) < s --> abs (f (xa n) + - f (xb n)) < u") |
588 apply (subgoal_tac "\<forall>n::nat. abs ((Xa n) + - (Xb n)) < s --> abs (f (Xa n) + - f (Xb n)) < u") |
589 prefer 2 apply blast |
589 prefer 2 apply blast |
590 apply (erule_tac V = "\<forall>x y. \<bar>x + - y\<bar> < s --> \<bar>f x + - f y\<bar> < u" in thin_rl) |
590 apply (erule_tac V = "\<forall>x y. \<bar>x + - y\<bar> < s --> \<bar>f x + - f y\<bar> < u" in thin_rl) |
591 apply (drule FreeUltrafilterNat_all, ultra) |
591 apply (drule FreeUltrafilterNat_all, ultra) |
592 done |
592 done |
593 |
593 |
618 apply (simp add: isNSUCont_def isUCont_def approx_def) |
618 apply (simp add: isNSUCont_def isUCont_def approx_def) |
619 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
619 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff, safe) |
620 apply (rule ccontr, simp) |
620 apply (rule ccontr, simp) |
621 apply (simp add: linorder_not_less) |
621 apply (simp add: linorder_not_less) |
622 apply (drule lemma_skolemize_LIM2u, safe) |
622 apply (drule lemma_skolemize_LIM2u, safe) |
623 apply (drule_tac x = "Abs_star (starrel``{X})" in spec) |
623 apply (drule_tac x = "star_n X" in spec) |
624 apply (drule_tac x = "Abs_star (starrel``{Y})" in spec) |
624 apply (drule_tac x = "star_n Y" in spec) |
625 apply (simp add: starfun hypreal_minus hypreal_add, auto) |
625 apply (simp add: starfun star_n_minus star_n_add, auto) |
626 apply (drule lemma_simpu [THEN real_seq_to_hypreal_Infinitesimal2]) |
626 apply (drule lemma_simpu [THEN real_seq_to_hypreal_Infinitesimal2]) |
627 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff hypreal_minus hypreal_add, blast) |
627 apply (simp add: Infinitesimal_FreeUltrafilterNat_iff star_n_minus star_n_add, blast) |
628 apply (drule_tac x = r in spec, clarify) |
628 apply (drule_tac x = r in spec, clarify) |
629 apply (drule FreeUltrafilterNat_all, ultra) |
629 apply (drule FreeUltrafilterNat_all, ultra) |
630 done |
630 done |
631 |
631 |
632 text{*Derivatives*} |
632 text{*Derivatives*} |