intros.
apply uniqueness_step3.
assert (H1 := uniqueness_step2 _ _ _ H).
assert (H2 := uniqueness_step2 _ _ _ H0).
unfold plus_fct.
cut
(forall h:R,
(f1 (x + h) + f2 (x + h) - (f1 x + f2 x)) / h =
(f1 (x + h) - f1 x) / h + (f2 (x + h) - f2 x) / h).
- intro.
generalize
(limit_plus (fun h':R => (f1 (x + h') - f1 x) / h')
(fun h':R => (f2 (x + h') - f2 x) / h') (fun h:R => h <> 0) l1 l2 0 H1 H2).
unfold limit1_in; unfold limit_in; unfold dist;
simpl; unfold Rdist; intros.
elim (H4 eps H5); intros.
exists x0.
elim H6; intros.
split.
+ assumption.
+ intros; rewrite H3; apply H8; assumption.
- intro; unfold Rdiv; ring.
Qed.

(* Specifications: *)
Lemma derivable_pt_lim_minus :
forall f1 f2 (x l1 l2:R),
derivable_pt_lim f1 x l1 ->
derivable_pt_lim f2 x l2 -> derivable_pt_lim (f1 - f2) x (l1 - l2).
Lemma derivable_pt_lim_mult :
forall f1 f2 (x l1 l2:R),
derivable_pt_lim f1 x l1 ->
derivable_pt_lim f2 x l2 ->
derivable_pt_lim (f1 * f2) x (l1 * f2 x + f1 x * l2).
Lemma derivable_pt_lim_const : forall a x:R, derivable_pt_lim (fct_cte a) x 0.
Lemma derivable_pt_lim_scal :
forall f (a x l:R),
derivable_pt_lim f x l -> derivable_pt_lim (mult_real_fct a f) x (a * l).
Lemma derivable_pt_lim_div_scal :
forall f x l a, derivable_pt_lim f x l ->
derivable_pt_lim (fun y => f y / a) x (l / a).