intros f x l a df;
apply (derivable_pt_lim_ext (fun y => a * f y)).
- intros z; rewrite Rmult_comm; reflexivity.
- unfold Rdiv; rewrite Rmult_comm; apply derivable_pt_lim_scal; assumption.
Qed.

(* Specifications: *)
Lemma derivable_pt_lim_Rsqr : forall x:R, derivable_pt_lim Rsqr x (2 * x).
(** ** Rules for derivable_pt (derivability at a point) *)
Lemma derivable_pt_id : forall x:R, derivable_pt id x.
Lemma derivable_pt_comp :
forall f1 f2 (x:R),
derivable_pt f1 x -> derivable_pt f2 (f1 x) -> derivable_pt (f2 o f1) x.
Lemma derivable_pt_xeq:
forall (f : R -> R) (x1 x2 : R), x1=x2 -> derivable_pt f x1 -> derivable_pt f x2.
Lemma derivable_pt_opp :
forall (f : R -> R) (x:R), derivable_pt f x -> derivable_pt (- f) x.
Lemma derivable_pt_opp_rev:
forall (f : R -> R) (x : R), derivable_pt (- f) x -> derivable_pt f x.
Lemma derivable_pt_mirr:
forall (f : R -> R) (x : R), derivable_pt f (-x) -> derivable_pt (mirr_fct f) x.
Lemma derivable_pt_mirr_rev:
forall (f : R -> R) (x : R), derivable_pt (mirr_fct f) (- x) -> derivable_pt f x.
Lemma derivable_pt_mirr_prem:
forall (f : R -> R) (x : R), derivable_pt (mirr_fct f) x -> derivable_pt f (-x).
Lemma derivable_pt_plus :
forall f1 f2 (x:R),
derivable_pt f1 x -> derivable_pt f2 x -> derivable_pt (f1 + f2) x.
Lemma derivable_pt_minus :
forall f1 f2 (x:R),
derivable_pt f1 x -> derivable_pt f2 x -> derivable_pt (f1 - f2) x.
Lemma derivable_pt_mult :
forall f1 f2 (x:R),
derivable_pt f1 x -> derivable_pt f2 x -> derivable_pt (f1 * f2) x.
Lemma derivable_pt_const : forall a x:R, derivable_pt (fct_cte a) x.
Lemma derivable_pt_scal :
forall f (a x:R), derivable_pt f x -> derivable_pt (mult_real_fct a f) x.
Lemma derivable_pt_Rsqr : forall x:R, derivable_pt Rsqr x.
(** ** Rules for derivable (derivability on whole domain) *)
Lemma derivable_id : derivable id.
Lemma derivable_comp :
forall f1 f2, derivable f1 -> derivable f2 -> derivable (f2 o f1).
Lemma derivable_opp : forall f, derivable f -> derivable (- f).
Lemma derivable_mirr : forall f, derivable f -> derivable (mirr_fct f).
Lemma derivable_plus :
forall f1 f2, derivable f1 -> derivable f2 -> derivable (f1 + f2).
Lemma derivable_minus :
forall f1 f2, derivable f1 -> derivable f2 -> derivable (f1 - f2).
Lemma derivable_mult :
forall f1 f2, derivable f1 -> derivable f2 -> derivable (f1 * f2).
Lemma derivable_const : forall a:R, derivable (fct_cte a).
Lemma derivable_scal :
forall f (a:R), derivable f -> derivable (mult_real_fct a f).
Lemma derivable_Rsqr : derivable Rsqr.
(** ** Rules for derive_pt (derivative function on whole domain) *)
Lemma derive_pt_id : forall x:R, derive_pt id x (derivable_pt_id _) = 1.
Lemma derive_pt_comp :
forall f1 f2 (x:R) (pr1:derivable_pt f1 x) (pr2:derivable_pt f2 (f1 x)),
derive_pt (f2 o f1) x (derivable_pt_comp _ _ _ pr1 pr2) =
derive_pt f2 (f1 x) pr2 * derive_pt f1 x pr1.
Lemma derive_pt_opp :
forall f (x:R) (pr1:derivable_pt f x),
derive_pt (- f) x (derivable_pt_opp _ _ pr1) = - derive_pt f x pr1.
Lemma derive_pt_opp_rev :
forall f (x:R) (pr1:derivable_pt (- f) x),
derive_pt (- f) x pr1 = - derive_pt f x (derivable_pt_opp_rev _ _ pr1).
Lemma derive_pt_mirr :
forall f (x:R) (pr1:derivable_pt f (-x)),
derive_pt (mirr_fct f) x (derivable_pt_mirr _ _ pr1) = - derive_pt f (-x) pr1.
Lemma derive_pt_mirr_rev :
forall f (x:R) (pr1:derivable_pt (mirr_fct f) x),
derive_pt (mirr_fct f) x pr1 = - derive_pt f (-x) (derivable_pt_mirr_prem f x pr1).
Lemma derive_pt_plus :
forall f1 f2 (x:R) (pr1:derivable_pt f1 x) (pr2:derivable_pt f2 x),
derive_pt (f1 + f2) x (derivable_pt_plus _ _ _ pr1 pr2) =
derive_pt f1 x pr1 + derive_pt f2 x pr2.
Lemma derive_pt_minus :
forall f1 f2 (x:R) (pr1:derivable_pt f1 x) (pr2:derivable_pt f2 x),
derive_pt (f1 - f2) x (derivable_pt_minus _ _ _ pr1 pr2) =
derive_pt f1 x pr1 - derive_pt f2 x pr2.
Lemma derive_pt_mult :
forall f1 f2 (x:R) (pr1:derivable_pt f1 x) (pr2:derivable_pt f2 x),
derive_pt (f1 * f2) x (derivable_pt_mult _ _ _ pr1 pr2) =
derive_pt f1 x pr1 * f2 x + f1 x * derive_pt f2 x pr2.
Lemma derive_pt_const :
forall a x:R, derive_pt (fct_cte a) x (derivable_pt_const a x) = 0.
Lemma derive_pt_scal :
forall f (a x:R) (pr:derivable_pt f x),
derive_pt (mult_real_fct a f) x (derivable_pt_scal _ _ _ pr) =
a * derive_pt f x pr.
Lemma derive_pt_Rsqr :
forall x:R, derive_pt Rsqr x (derivable_pt_Rsqr _) = 2 * x.