src/HOL/Deriv.thy
changeset 58729 e8ecc79aee43
parent 57953 69728243a614
child 58889 5b7a9633cfa8
equal deleted inserted replaced
58728:42398b610f86 58729:e8ecc79aee43
    78 
    78 
    79 lemma has_derivative_linear: "(f has_derivative f') F \<Longrightarrow> linear f'"
    79 lemma has_derivative_linear: "(f has_derivative f') F \<Longrightarrow> linear f'"
    80   using bounded_linear.linear[OF has_derivative_bounded_linear] .
    80   using bounded_linear.linear[OF has_derivative_bounded_linear] .
    81 
    81 
    82 lemma has_derivative_ident[derivative_intros, simp]: "((\<lambda>x. x) has_derivative (\<lambda>x. x)) F"
    82 lemma has_derivative_ident[derivative_intros, simp]: "((\<lambda>x. x) has_derivative (\<lambda>x. x)) F"
    83   by (simp add: has_derivative_def tendsto_const)
    83   by (simp add: has_derivative_def)
    84 
    84 
    85 lemma has_derivative_const[derivative_intros, simp]: "((\<lambda>x. c) has_derivative (\<lambda>x. 0)) F"
    85 lemma has_derivative_const[derivative_intros, simp]: "((\<lambda>x. c) has_derivative (\<lambda>x. 0)) F"
    86   by (simp add: has_derivative_def tendsto_const)
    86   by (simp add: has_derivative_def)
    87 
    87 
    88 lemma (in bounded_linear) bounded_linear: "bounded_linear f" ..
    88 lemma (in bounded_linear) bounded_linear: "bounded_linear f" ..
    89 
    89 
    90 lemma (in bounded_linear) has_derivative:
    90 lemma (in bounded_linear) has_derivative:
    91   "(g has_derivative g') F \<Longrightarrow> ((\<lambda>x. f (g x)) has_derivative (\<lambda>x. f (g' x))) F"
    91   "(g has_derivative g') F \<Longrightarrow> ((\<lambda>x. f (g x)) has_derivative (\<lambda>x. f (g' x))) F"
   178   show "((\<lambda>y. norm (f y - f x - f' (y - x)) / norm (y - x)) ---> 0) (at x within s)"
   178   show "((\<lambda>y. norm (f y - f x - f' (y - x)) / norm (y - x)) ---> 0) (at x within s)"
   179   proof (rule tendsto_sandwich[where f="\<lambda>x. 0"])
   179   proof (rule tendsto_sandwich[where f="\<lambda>x. 0"])
   180     show "(H ---> 0) (at x within s)" by fact
   180     show "(H ---> 0) (at x within s)" by fact
   181     show "eventually (\<lambda>n. norm (f n - f x - f' (n - x)) / norm (n - x) \<le> H n) (at x within s)"
   181     show "eventually (\<lambda>n. norm (f n - f x - f' (n - x)) / norm (n - x) \<le> H n) (at x within s)"
   182       unfolding eventually_at using e sandwich by auto
   182       unfolding eventually_at using e sandwich by auto
   183   qed (auto simp: le_divide_eq tendsto_const)
   183   qed (auto simp: le_divide_eq)
   184 qed fact
   184 qed fact
   185 
   185 
   186 lemma has_derivative_subset: "(f has_derivative f') (at x within s) \<Longrightarrow> t \<subseteq> s \<Longrightarrow> (f has_derivative f') (at x within t)"
   186 lemma has_derivative_subset: "(f has_derivative f') (at x within s) \<Longrightarrow> t \<subseteq> s \<Longrightarrow> (f has_derivative f') (at x within t)"
   187   by (auto simp add: has_derivative_iff_norm intro: tendsto_within_subset)
   187   by (auto simp add: has_derivative_iff_norm intro: tendsto_within_subset)
   188 
   188 
  1581     unfolding eventually_at by (intro exI[of _ a]) (auto simp: dist_real_def)
  1581     unfolding eventually_at by (intro exI[of _ a]) (auto simp: dist_real_def)
  1582   moreover
  1582   moreover
  1583   from \<zeta> have "eventually (\<lambda>x. norm (\<zeta> x) \<le> x) (at_right 0)"
  1583   from \<zeta> have "eventually (\<lambda>x. norm (\<zeta> x) \<le> x) (at_right 0)"
  1584     by eventually_elim auto
  1584     by eventually_elim auto
  1585   then have "((\<lambda>x. norm (\<zeta> x)) ---> 0) (at_right 0)"
  1585   then have "((\<lambda>x. norm (\<zeta> x)) ---> 0) (at_right 0)"
  1586     by (rule_tac real_tendsto_sandwich[where f="\<lambda>x. 0" and h="\<lambda>x. x"])
  1586     by (rule_tac real_tendsto_sandwich[where f="\<lambda>x. 0" and h="\<lambda>x. x"]) auto
  1587        (auto intro: tendsto_const tendsto_ident_at)
       
  1588   then have "(\<zeta> ---> 0) (at_right 0)"
  1587   then have "(\<zeta> ---> 0) (at_right 0)"
  1589     by (rule tendsto_norm_zero_cancel)
  1588     by (rule tendsto_norm_zero_cancel)
  1590   with \<zeta> have "filterlim \<zeta> (at_right 0) (at_right 0)"
  1589   with \<zeta> have "filterlim \<zeta> (at_right 0) (at_right 0)"
  1591     by (auto elim!: eventually_elim1 simp: filterlim_at)
  1590     by (auto elim!: eventually_elim1 simp: filterlim_at)
  1592   from this lim have "((\<lambda>t. f' (\<zeta> t) / g' (\<zeta> t)) ---> x) (at_right 0)"
  1591   from this lim have "((\<lambda>t. f' (\<zeta> t) / g' (\<zeta> t)) ---> x) (at_right 0)"