169 lemma NSDERIV_add: "[| NSDERIV f x :> Da; NSDERIV g x :> Db |] |
169 lemma NSDERIV_add: "[| NSDERIV f x :> Da; NSDERIV g x :> Db |] |
170 ==> NSDERIV (%x. f x + g x) x :> Da + Db" |
170 ==> NSDERIV (%x. f x + g x) x :> Da + Db" |
171 apply (auto simp add: NSDERIV_NSLIM_iff NSLIM_def) |
171 apply (auto simp add: NSDERIV_NSLIM_iff NSLIM_def) |
172 apply (auto simp add: add_divide_distrib diff_divide_distrib dest!: spec) |
172 apply (auto simp add: add_divide_distrib diff_divide_distrib dest!: spec) |
173 apply (drule_tac b = "star_of Da" and d = "star_of Db" in approx_add) |
173 apply (drule_tac b = "star_of Da" and d = "star_of Db" in approx_add) |
174 apply (auto simp add: add_ac algebra_simps) |
174 apply (auto simp add: ac_simps algebra_simps) |
175 done |
175 done |
176 |
176 |
177 text{*Product of functions - Proof is trivial but tedious |
177 text{*Product of functions - Proof is trivial but tedious |
178 and long due to rearrangement of terms*} |
178 and long due to rearrangement of terms*} |
179 |
179 |
180 lemma lemma_nsderiv1: |
180 lemma lemma_nsderiv1: |
181 fixes a b c d :: "'a::comm_ring star" |
181 fixes a b c d :: "'a::comm_ring star" |
182 shows "(a*b) - (c*d) = (b*(a - c)) + (c*(b - d))" |
182 shows "(a*b) - (c*d) = (b*(a - c)) + (c*(b - d))" |
183 by (simp add: right_diff_distrib mult_ac) |
183 by (simp add: right_diff_distrib ac_simps) |
184 |
184 |
185 lemma lemma_nsderiv2: |
185 lemma lemma_nsderiv2: |
186 fixes x y z :: "'a::real_normed_field star" |
186 fixes x y z :: "'a::real_normed_field star" |
187 shows "[| (x - y) / z = star_of D + yb; z \<noteq> 0; |
187 shows "[| (x - y) / z = star_of D + yb; z \<noteq> 0; |
188 z \<in> Infinitesimal; yb \<in> Infinitesimal |] |
188 z \<in> Infinitesimal; yb \<in> Infinitesimal |] |