696 ((\<lambda>x. setsum (f x) S) has_field_derivative setsum (f' x) S) F" |
696 ((\<lambda>x. setsum (f x) S) has_field_derivative setsum (f' x) S) F" |
697 by (rule has_derivative_imp_has_field_derivative[OF has_derivative_setsum]) |
697 by (rule has_derivative_imp_has_field_derivative[OF has_derivative_setsum]) |
698 (auto simp: setsum_right_distrib mult_commute_abs dest: has_field_derivative_imp_has_derivative) |
698 (auto simp: setsum_right_distrib mult_commute_abs dest: has_field_derivative_imp_has_derivative) |
699 |
699 |
700 lemma DERIV_inverse'[derivative_intros]: |
700 lemma DERIV_inverse'[derivative_intros]: |
701 "(f has_field_derivative D) (at x within s) \<Longrightarrow> f x \<noteq> 0 \<Longrightarrow> |
701 assumes "(f has_field_derivative D) (at x within s)" |
702 ((\<lambda>x. inverse (f x)) has_field_derivative - (inverse (f x) * D * inverse (f x))) (at x within s)" |
702 and "f x \<noteq> 0" |
703 by (rule has_derivative_imp_has_field_derivative[OF has_derivative_inverse]) |
703 shows "((\<lambda>x. inverse (f x)) has_field_derivative - (inverse (f x) * D * inverse (f x))) (at x within s)" |
704 (auto dest: has_field_derivative_imp_has_derivative) |
704 proof - |
|
705 have "(f has_derivative (\<lambda>x. x * D)) = (f has_derivative op * D)" |
|
706 by (rule arg_cong [of "\<lambda>x. x * D"]) (simp add: fun_eq_iff) |
|
707 with assms have "(f has_derivative (\<lambda>x. x * D)) (at x within s)" |
|
708 by (auto dest!: has_field_derivative_imp_has_derivative) |
|
709 then show ?thesis using `f x \<noteq> 0` |
|
710 by (auto intro: has_derivative_imp_has_field_derivative has_derivative_inverse) |
|
711 qed |
705 |
712 |
706 text {* Power of @{text "-1"} *} |
713 text {* Power of @{text "-1"} *} |
707 |
714 |
708 lemma DERIV_inverse: |
715 lemma DERIV_inverse: |
709 "x \<noteq> 0 \<Longrightarrow> ((\<lambda>x. inverse(x)) has_field_derivative - (inverse x ^ Suc (Suc 0))) (at x within s)" |
716 "x \<noteq> 0 \<Longrightarrow> ((\<lambda>x. inverse(x)) has_field_derivative - (inverse x ^ Suc (Suc 0))) (at x within s)" |