2275 lemma vector_derivative_diff_at [simp]: |
2275 lemma vector_derivative_diff_at [simp]: |
2276 "\<lbrakk>f differentiable at a; g differentiable at a\<rbrakk> |
2276 "\<lbrakk>f differentiable at a; g differentiable at a\<rbrakk> |
2277 \<Longrightarrow> vector_derivative (\<lambda>x. f x - g x) (at a) = vector_derivative f (at a) - vector_derivative g (at a)" |
2277 \<Longrightarrow> vector_derivative (\<lambda>x. f x - g x) (at a) = vector_derivative f (at a) - vector_derivative g (at a)" |
2278 by (simp add: vector_derivative_at has_vector_derivative_diff vector_derivative_works [symmetric]) |
2278 by (simp add: vector_derivative_at has_vector_derivative_diff vector_derivative_works [symmetric]) |
2279 |
2279 |
|
2280 lemma vector_derivative_mult_at [simp]: |
|
2281 fixes f g :: "real \<Rightarrow> 'a :: real_normed_algebra" |
|
2282 shows "\<lbrakk>f differentiable at a; g differentiable at a\<rbrakk> |
|
2283 \<Longrightarrow> vector_derivative (\<lambda>x. f x * g x) (at a) = f a * vector_derivative g (at a) + vector_derivative f (at a) * g a" |
|
2284 by (simp add: vector_derivative_at has_vector_derivative_mult vector_derivative_works [symmetric]) |
|
2285 |
|
2286 lemma vector_derivative_scaleR_at [simp]: |
|
2287 "\<lbrakk>f differentiable at a; g differentiable at a\<rbrakk> |
|
2288 \<Longrightarrow> vector_derivative (\<lambda>x. f x *\<^sub>R g x) (at a) = f a *\<^sub>R vector_derivative g (at a) + vector_derivative f (at a) *\<^sub>R g a" |
|
2289 apply (rule vector_derivative_at) |
|
2290 apply (rule has_vector_derivative_scaleR) |
|
2291 apply (auto simp: vector_derivative_works has_vector_derivative_def has_field_derivative_def mult_commute_abs) |
|
2292 done |
|
2293 |
2280 lemma vector_derivative_within_closed_interval: |
2294 lemma vector_derivative_within_closed_interval: |
2281 assumes "a < b" |
2295 assumes "a < b" |
2282 and "x \<in> cbox a b" |
2296 and "x \<in> cbox a b" |
2283 assumes "(f has_vector_derivative f') (at x within cbox a b)" |
2297 assumes "(f has_vector_derivative f') (at x within cbox a b)" |
2284 shows "vector_derivative f (at x within cbox a b) = f'" |
2298 shows "vector_derivative f (at x within cbox a b) = f'" |
2354 lemma vector_derivative_at_within_ivl: |
2368 lemma vector_derivative_at_within_ivl: |
2355 "(f has_vector_derivative f') (at x) \<Longrightarrow> |
2369 "(f has_vector_derivative f') (at x) \<Longrightarrow> |
2356 a \<le> x \<Longrightarrow> x \<le> b \<Longrightarrow> a<b \<Longrightarrow> vector_derivative f (at x within {a..b}) = f'" |
2370 a \<le> x \<Longrightarrow> x \<le> b \<Longrightarrow> a<b \<Longrightarrow> vector_derivative f (at x within {a..b}) = f'" |
2357 using has_vector_derivative_at_within vector_derivative_within_closed_interval by fastforce |
2371 using has_vector_derivative_at_within vector_derivative_within_closed_interval by fastforce |
2358 |
2372 |
|
2373 lemma vector_derivative_chain_at: |
|
2374 assumes "f differentiable at x" "(g differentiable at (f x))" |
|
2375 shows "vector_derivative (g \<circ> f) (at x) = |
|
2376 vector_derivative f (at x) *\<^sub>R vector_derivative g (at (f x))" |
|
2377 by (metis vector_diff_chain_at vector_derivative_at vector_derivative_works assms) |
|
2378 |
2359 end |
2379 end |