src/HOL/Hyperreal/NSA.thy
changeset 21783 d75108a9665a
parent 21404 eb85850d3eb7
child 21810 b2d23672b003
equal deleted inserted replaced
21782:bf055d30d3ad 21783:d75108a9665a
   615 apply (simp add: Infinitesimal_def HFinite_def, auto)
   615 apply (simp add: Infinitesimal_def HFinite_def, auto)
   616 apply (rule_tac x = 1 in bexI, auto)
   616 apply (rule_tac x = 1 in bexI, auto)
   617 done
   617 done
   618 
   618 
   619 lemma Infinitesimal_hypreal_of_real_mult:
   619 lemma Infinitesimal_hypreal_of_real_mult:
   620      "x \<in> Infinitesimal ==> x * hypreal_of_real r \<in> Infinitesimal"
   620   fixes x :: "'a::real_normed_algebra star"
   621 by (erule HFinite_hypreal_of_real [THEN [2] Infinitesimal_HFinite_mult])
   621   shows "x \<in> Infinitesimal ==> x * star_of r \<in> Infinitesimal"
       
   622 by (erule HFinite_star_of [THEN [2] Infinitesimal_HFinite_mult])
   622 
   623 
   623 lemma Infinitesimal_hypreal_of_real_mult2:
   624 lemma Infinitesimal_hypreal_of_real_mult2:
   624      "x \<in> Infinitesimal ==> hypreal_of_real r * x \<in> Infinitesimal"
   625   fixes x :: "'a::real_normed_algebra star"
   625 by (erule HFinite_hypreal_of_real [THEN [2] Infinitesimal_HFinite_mult2])
   626   shows "x \<in> Infinitesimal ==> star_of r * x \<in> Infinitesimal"
       
   627 by (erule HFinite_star_of [THEN [2] Infinitesimal_HFinite_mult2])
   626 
   628 
   627 
   629 
   628 subsection{*The Infinitely Close Relation*}
   630 subsection{*The Infinitely Close Relation*}
   629 
   631 
   630 lemma mem_infmal_iff: "(x \<in> Infinitesimal) = (x @= 0)"
   632 lemma mem_infmal_iff: "(x \<in> Infinitesimal) = (x @= 0)"
  1741 apply (drule_tac [4] SReal_hypreal_of_real [THEN SReal_Infinitesimal_zero], auto)
  1743 apply (drule_tac [4] SReal_hypreal_of_real [THEN SReal_Infinitesimal_zero], auto)
  1742 done
  1744 done
  1743 
  1745 
  1744 (*used once, in Lim/NSDERIV_inverse*)
  1746 (*used once, in Lim/NSDERIV_inverse*)
  1745 lemma Infinitesimal_add_not_zero:
  1747 lemma Infinitesimal_add_not_zero:
  1746      "[| h \<in> Infinitesimal; x \<noteq> 0 |] ==> hypreal_of_real x + h \<noteq> 0"
  1748      "[| h \<in> Infinitesimal; x \<noteq> 0 |] ==> star_of x + h \<noteq> 0"
  1747 apply auto
  1749 apply auto
  1748 apply (subgoal_tac "h = - hypreal_of_real x", auto)
  1750 apply (subgoal_tac "h = - star_of x", auto intro: equals_zero_I [symmetric])
  1749 done
  1751 done
  1750 
  1752 
  1751 lemma Infinitesimal_square_cancel [simp]:
  1753 lemma Infinitesimal_square_cancel [simp]:
  1752      "(x::hypreal)*x + y*y \<in> Infinitesimal ==> x*x \<in> Infinitesimal"
  1754      "(x::hypreal)*x + y*y \<in> Infinitesimal ==> x*x \<in> Infinitesimal"
  1753 apply (rule Infinitesimal_interval2)
  1755 apply (rule Infinitesimal_interval2)