Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************)
(*         *   The Coq Proof Assistant / The Coq Development Team       *)
(*  v      *   INRIA, CNRS and contributors - Copyright 1999-2018       *)
(* <O___,, *       (see CREDITS file for the list of authors)           *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)

(*********************************************************)
Definition of the derivative,continuity
(*                                                       *)
(*********************************************************)

Require Import Rbase.
Require Import Rfunctions.
Require Import Rlimit.
Require Import Lra.
Require Import Omega.
Local Open Scope R_scope.

(*********)
Definition D_x (D:R -> Prop) (y x:R) : Prop := D x /\ y <> x.

(*********)
Definition continue_in (f:R -> R) (D:R -> Prop) (x0:R) : Prop :=
  limit1_in f (D_x D x0) (f x0) x0.

(*********)
Definition D_in (f d:R -> R) (D:R -> Prop) (x0:R) : Prop :=
  limit1_in (fun x:R => (f x - f x0) / (x - x0)) (D_x D x0) (d x0) x0.

(*********)

forall (f d : R -> R) (D : R -> Prop) (x0 : R), D_in f d D x0 -> continue_in f D x0

forall (f d : R -> R) (D : R -> Prop) (x0 : R), D_in f d D x0 -> continue_in f D x0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 = 0

exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 = 0

Rmin 1 x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 = 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin 1 x -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 = 0

forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin 1 x -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H7:D x1
H8:x0 <> x1

R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs ((f x1 - f x0) * / (x1 - x0) - 0) < eps
H7:D x1
H8:x0 <> x1

Rabs (f x1 - f x0) < eps * Rabs (x1 - x0) -> Rabs (f x1 - f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs ((f x1 - f x0) * / (x1 - x0) - 0) < eps
H7:D x1
H8:x0 <> x1
Rabs (f x1 - f x0) < eps * Rabs (x1 - x0)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs ((f x1 - f x0) * / (x1 - x0) - 0) < eps
H7:D x1
H8:x0 <> x1

Rabs (f x1 - f x0) < eps * Rabs (x1 - x0)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * Rabs (/ (x1 - x0)) < eps
H7:D x1
H8:x0 <> x1

x1 - x0 <> 0 -> Rabs (f x1 - f x0) < eps * Rabs (x1 - x0)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * Rabs (/ (x1 - x0)) < eps
H7:D x1
H8:x0 <> x1
x1 - x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * / Rabs (x1 - x0) < eps
H7:D x1
H8:x0 <> x1
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) * 1 < Rabs (x1 - x0) * eps

Rabs (f x1 - f x0) < eps * Rabs (x1 - x0)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * / Rabs (x1 - x0) < eps
H7:D x1
H8:x0 <> x1
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) * (/ Rabs (x1 - x0) * Rabs (x1 - x0)) < Rabs (x1 - x0) * eps
Rabs (x1 - x0) <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * Rabs (/ (x1 - x0)) < eps
H7:D x1
H8:x0 <> x1
x1 - x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * / Rabs (x1 - x0) < eps
H7:D x1
H8:x0 <> x1
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) * (/ Rabs (x1 - x0) * Rabs (x1 - x0)) < Rabs (x1 - x0) * eps

Rabs (x1 - x0) <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * Rabs (/ (x1 - x0)) < eps
H7:D x1
H8:x0 <> x1
x1 - x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 = 0
x1:R
H3:D x1 /\ x0 <> x1
H4:R_dist x1 x0 < Rmin 1 x
H5:R_dist x1 x0 < 1
H6:R_dist x1 x0 < x
H1:Rabs (f x1 - f x0) * Rabs (/ (x1 - x0)) < eps
H7:D x1
H8:x0 <> x1

x1 - x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

exists alp : R, alp > 0 /\ (forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < alp -> R_dist (f x1) (f x0) < eps)
(**)
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

Rmin (/ 2) x > 0 -> Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

eps * / Rabs (2 * d x0) > 0 -> Rmin (/ 2) x > 0 -> Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
eps * / Rabs (2 * d x0) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

eps * / Rabs (2 * d x0) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

/ Rabs (2 * d x0) > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
d x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

d x0 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
a:Rmin (/ 2) x > 0 -> / 2 > 0 /\ x > 0
b:/ 2 > 0 /\ x > 0 -> Rmin (/ 2) x > 0

0 < 2 -> Rmin (/ 2) x > 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
a:Rmin (/ 2) x > 0 -> / 2 > 0 /\ x > 0
b:/ 2 > 0 /\ x > 0 -> Rmin (/ 2) x > 0
0 < 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
a:Rmin (/ 2) x > 0 -> / 2 > 0 /\ x > 0
b:/ 2 > 0 /\ x > 0 -> Rmin (/ 2) x > 0

0 < 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0
forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H1:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((f x1 - f x0) * / (x1 - x0)) (d x0) < eps
H2:d x0 <> 0

forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < Rmin (Rmin (/ 2) x) (eps * / Rabs (2 * d x0)) -> R_dist (f x1) (f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H3:D x1 /\ x0 <> x1
H6:R_dist x1 x0 < eps * / Rabs (2 * d x0)
H7:R_dist x1 x0 < / 2
H8:R_dist x1 x0 < x
H4:D x1
H5:x1 <> x0
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) - Rabs (d x0 * (x1 - x0)) <= Rabs (f x1 - f x0 - d x0 * (x1 - x0))
H1:Rabs (f x1 - f x0) < Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps

Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps < eps -> Rabs (f x1 - f x0) < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H3:D x1 /\ x0 <> x1
H6:R_dist x1 x0 < eps * / Rabs (2 * d x0)
H7:R_dist x1 x0 < / 2
H8:R_dist x1 x0 < x
H4:D x1
H5:x1 <> x0
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) - Rabs (d x0 * (x1 - x0)) <= Rabs (f x1 - f x0 - d x0 * (x1 - x0))
H1:Rabs (f x1 - f x0) < Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps
Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:eps > 0
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H3:D x1 /\ x0 <> x1
H6:R_dist x1 x0 < eps * / Rabs (2 * d x0)
H7:R_dist x1 x0 < / 2
H8:R_dist x1 x0 < x
H4:D x1
H5:x1 <> x0
H9:x1 - x0 <> 0
H10:Rabs (f x1 - f x0) - Rabs (d x0 * (x1 - x0)) <= Rabs (f x1 - f x0 - d x0 * (x1 - x0))
H1:Rabs (f x1 - f x0) < Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps

Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))

Rabs 2 <> 0 -> Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0

Rabs 2 = 2 -> Rabs (d x0 * (x1 - x0)) + Rabs (x1 - x0) * eps < eps
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0
Rabs 2 = 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0

Rabs 2 = 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0
Hlt:2 < 0

- (2) = 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0
Hlt:2 < 0

0 < 2 -> - (2) = 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0
Hlt:2 < 0
0 < 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:Rabs (d x0) > 0
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < eps * / Rabs 2
H6:Rabs 2 <> 0
Hlt:2 < 0

0 < 2
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))
Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))

Rabs 2 <> 0
f, d:R -> R
D:R -> Prop
x0, eps:R
H0:0 < eps
x:R
H:x > 0
H2:d x0 <> 0
x1:R
H8:R_dist x1 x0 < x
H4:D x1
H9:x1 - x0 <> 0
H1:0 < Rabs (d x0)
H3:Rabs (x1 - x0) * eps < eps * / 2
H5:Rabs (d x0 * (x1 - x0)) < Rabs (d x0) * (eps * / (Rabs 2 * Rabs (d x0)))

2 <> 0
discrR. Qed. (*********)

forall (D : R -> Prop) (y x0 : R), D_in (fun _ : R => y) (fun _ : R => 0) D x0

forall (D : R -> Prop) (y x0 : R), D_in (fun _ : R => y) (fun _ : R => 0) D x0
D:R -> Prop
y, x0, eps:R
H:eps > 0

forall x : R, D_x D x0 x /\ R_dist x x0 < eps -> R_dist ((y - y) * / (x - x0)) 0 < eps
D:R -> Prop
y, x0, eps:R
H:eps > 0
x:R
H0:D_x D x0 x /\ R_dist x x0 < eps
r:0 < 0

- 0 < eps
D:R -> Prop
y, x0, eps:R
H:eps > 0
x:R
H0:D_x D x0 x /\ R_dist x x0 < eps
r:0 >= 0
0 < eps
D:R -> Prop
y, x0, eps:R
H:eps > 0
x:R
H0:D_x D x0 x /\ R_dist x x0 < eps
r:0 < 0

~ 0 < 0
D:R -> Prop
y, x0, eps:R
H:eps > 0
x:R
H0:D_x D x0 x /\ R_dist x x0 < eps
r:0 >= 0
0 < eps
D:R -> Prop
y, x0, eps:R
H:eps > 0
x:R
H0:D_x D x0 x /\ R_dist x x0 < eps
r:0 >= 0

0 < eps
unfold Rgt in H0; assumption. Qed. (*********)

forall (D : R -> Prop) (x0 : R), D_in (fun x : R => x) (fun _ : R => 1) D x0

forall (D : R -> Prop) (x0 : R), D_in (fun x : R => x) (fun _ : R => 1) D x0
D:R -> Prop
x0, eps:R
H:eps > 0

forall x : R, D_x D x0 x /\ R_dist x x0 < eps -> R_dist ((x - x0) * / (x - x0)) 1 < eps
D:R -> Prop
x0, eps:R
H:eps > 0
x:R
H0:D x /\ x0 <> x
H1:R_dist x x0 < eps
H2:D x
H3:x0 <> x
Hlt:0 < 0

- 0 < eps
D:R -> Prop
x0, eps:R
H:eps > 0
x:R
H0:D x /\ x0 <> x
H1:R_dist x x0 < eps
H2:D x
H3:x0 <> x
Hge:0 >= 0
0 < eps
D:R -> Prop
x0, eps:R
H:eps > 0
x:R
H0:D x /\ x0 <> x
H1:R_dist x x0 < eps
H2:D x
H3:x0 <> x
Hlt:0 < 0

~ 0 < 0
D:R -> Prop
x0, eps:R
H:eps > 0
x:R
H0:D x /\ x0 <> x
H1:R_dist x x0 < eps
H2:D x
H3:x0 <> x
Hge:0 >= 0
0 < eps
D:R -> Prop
x0, eps:R
H:eps > 0
x:R
H0:D x /\ x0 <> x
H1:R_dist x x0 < eps
H2:D x
H3:x0 <> x
Hge:0 >= 0

0 < eps
unfold Rgt in H; assumption. Qed. (*********)

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x + g x) (fun x : R => df x + dg x) D x0

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x + g x) (fun x : R => df x + dg x) D x0
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist ((f x1 - f x0 + (g x1 - g x0)) * / (x1 - x0)) (df x0 + dg x0) < eps

f x1 - f x0 + (g x1 - g x0) = f x1 + g x1 - (f x0 + g x0) -> R_dist ((f x1 + g x1 - (f x0 + g x0)) / (x1 - x0)) (df x0 + dg x0) < eps
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist ((f x1 - f x0 + (g x1 - g x0)) * / (x1 - x0)) (df x0 + dg x0) < eps
f x1 - f x0 + (g x1 - g x0) = f x1 + g x1 - (f x0 + g x0)
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist ((f x1 - f x0 + (g x1 - g x0)) * / (x1 - x0)) (df x0 + dg x0) < eps

f x1 - f x0 + (g x1 - g x0) = f x1 + g x1 - (f x0 + g x0)
ring. Qed. (*********)

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x * g x) (fun x : R => df x * g x + f x * dg x) D x0

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x * g x) (fun x : R => df x * g x + f x * dg x) D x0
D:R -> Prop
df, dg, f, g:R -> R
x0:R
H:limit1_in (fun x : R => (f x - f x0) / (x - x0)) (D_x D x0) (df x0) x0
H0:limit1_in (fun x : R => (g x - g x0) / (x - x0)) (D_x D x0) (dg x0) x0
H1:D_in f df D x0
H2:D_in g dg D x0
H3:limit1_in f (D_x D x0) (f x0) x0
H4:limit1_in (fun x : R => (g x - g x0) * / (x - x0) * f x) (D_x D x0) (dg x0 * f x0) x0

limit1_in (fun _ : R => g x0) (D_x D x0) (g x0) x0 -> limit1_in (fun x : R => (f x * g x - f x0 * g x0) / (x - x0)) (D_x D x0) (df x0 * g x0 + f x0 * dg x0) x0
D:R -> Prop
df, dg, f, g:R -> R
x0:R
H:limit1_in (fun x : R => (f x - f x0) / (x - x0)) (D_x D x0) (df x0) x0
H0:limit1_in (fun x : R => (g x - g x0) / (x - x0)) (D_x D x0) (dg x0) x0
H1:D_in f df D x0
H2:D_in g dg D x0
H3:limit1_in f (D_x D x0) (f x0) x0
H4:limit1_in (fun x : R => (g x - g x0) * / (x - x0) * f x) (D_x D x0) (dg x0 * f x0) x0
limit1_in (fun _ : R => g x0) (D_x D x0) (g x0) x0
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist (((f x1 - f x0) * g x0 + (g x1 - g x0) * f x1) * / (x1 - x0)) (df x0 * g x0 + f x0 * dg x0) < eps

(f x1 - f x0) * g x0 + (g x1 - g x0) * f x1 = f x1 * g x1 - f x0 * g x0 -> R_dist ((f x1 * g x1 - f x0 * g x0) / (x1 - x0)) (df x0 * g x0 + f x0 * dg x0) < eps
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist (((f x1 - f x0) * g x0 + (g x1 - g x0) * f x1) * / (x1 - x0)) (df x0 * g x0 + f x0 * dg x0) < eps
(f x1 - f x0) * g x0 + (g x1 - g x0) * f x1 = f x1 * g x1 - f x0 * g x0
D:R -> Prop
df, dg, f, g:R -> R
x0:R
H:limit1_in (fun x : R => (f x - f x0) / (x - x0)) (D_x D x0) (df x0) x0
H0:limit1_in (fun x : R => (g x - g x0) / (x - x0)) (D_x D x0) (dg x0) x0
H1:D_in f df D x0
H2:D_in g dg D x0
H3:limit1_in f (D_x D x0) (f x0) x0
H4:limit1_in (fun x : R => (g x - g x0) * / (x - x0) * f x) (D_x D x0) (dg x0 * f x0) x0
limit1_in (fun _ : R => g x0) (D_x D x0) (g x0) x0
D:R -> Prop
df, dg, f, g:R -> R
x0, eps:R
H0:eps > 0
x:R
H:x > 0
x1:R
H2:D_x D x0 x1 /\ R_dist x1 x0 < x
H1:R_dist (((f x1 - f x0) * g x0 + (g x1 - g x0) * f x1) * / (x1 - x0)) (df x0 * g x0 + f x0 * dg x0) < eps

(f x1 - f x0) * g x0 + (g x1 - g x0) * f x1 = f x1 * g x1 - f x0 * g x0
D:R -> Prop
df, dg, f, g:R -> R
x0:R
H:limit1_in (fun x : R => (f x - f x0) / (x - x0)) (D_x D x0) (df x0) x0
H0:limit1_in (fun x : R => (g x - g x0) / (x - x0)) (D_x D x0) (dg x0) x0
H1:D_in f df D x0
H2:D_in g dg D x0
H3:limit1_in f (D_x D x0) (f x0) x0
H4:limit1_in (fun x : R => (g x - g x0) * / (x - x0) * f x) (D_x D x0) (dg x0 * f x0) x0
limit1_in (fun _ : R => g x0) (D_x D x0) (g x0) x0
D:R -> Prop
df, dg, f, g:R -> R
x0:R
H:limit1_in (fun x : R => (f x - f x0) / (x - x0)) (D_x D x0) (df x0) x0
H0:limit1_in (fun x : R => (g x - g x0) / (x - x0)) (D_x D x0) (dg x0) x0
H1:D_in f df D x0
H2:D_in g dg D x0
H3:limit1_in f (D_x D x0) (f x0) x0
H4:limit1_in (fun x : R => (g x - g x0) * / (x - x0) * f x) (D_x D x0) (dg x0 * f x0) x0

limit1_in (fun _ : R => g x0) (D_x D x0) (g x0) x0
unfold limit1_in; unfold limit_in; simpl; intros; split with eps; split; auto; intros; elim (R_dist_refl (g x0) (g x0)); intros a b; rewrite (b (eq_refl (g x0))); unfold Rgt in H; assumption. Qed. (*********)

forall (D : R -> Prop) (f df : R -> R) (x0 a : R), D_in f df D x0 -> D_in (fun x : R => a * f x) (fun x : R => a * df x) D x0

forall (D : R -> Prop) (f df : R -> R) (x0 a : R), D_in f df D x0 -> D_in (fun x : R => a * f x) (fun x : R => a * df x) D x0
intros; generalize (Dmult D (fun _:R => 0) df (fun _:R => a) f x0 (Dconst D a x0) H); unfold D_in; intros; rewrite (Rmult_0_l (f x0)) in H0; rewrite (let (H1, H2) := Rplus_ne (a * df x0) in H2) in H0; assumption. Qed. (*********)

forall (D : R -> Prop) (f df : R -> R) (x0 : R), D_in f df D x0 -> D_in (fun x : R => - f x) (fun x : R => - df x) D x0

forall (D : R -> Prop) (f df : R -> R) (x0 : R), D_in f df D x0 -> D_in (fun x : R => - f x) (fun x : R => - df x) D x0
D:R -> Prop
f, df:R -> R
x0:R
H:D_in f df D x0
eps:R
H1:eps > 0
x:R
H0:x > 0
H2:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (-1 * df x0) < eps

forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((- f x1 - - f x0) / (x1 - x0)) (- df x0) < eps
D:R -> Prop
f, df:R -> R
x0:R
H:D_in f df D x0
eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H3:D_x D x0 x1 /\ R_dist x1 x0 < x
H2:R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (-1 * df x0) < eps

R_dist ((- f x1 - - f x0) / (x1 - x0)) (- df x0) < eps
D:R -> Prop
f, df:R -> R
x0:R
H:D_in f df D x0
eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H3:D_x D x0 x1 /\ R_dist x1 x0 < x
H2:R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (-1 * df x0) < eps

R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (- df x0) < eps
D:R -> Prop
f, df:R -> R
x0:R
H:D_in f df D x0
eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H3:D_x D x0 x1 /\ R_dist x1 x0 < x
H2:R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (-1 * df x0) < eps

R_dist ((-1 * f x1 - -1 * f x0) / (x1 - x0)) (-1 * df x0) < eps
exact H2. Qed. (*********)

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x - g x) (fun x : R => df x - dg x) D x0

forall (D : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df D x0 -> D_in g dg D x0 -> D_in (fun x : R => f x - g x) (fun x : R => df x - dg x) D x0
unfold Rminus; intros; generalize (Dopp D g dg x0 H0); intro; apply (Dadd D df (fun x:R => - dg x) f (fun x:R => - g x) x0); assumption. Qed. (*********)

forall (n : nat) (D : R -> Prop) (x0 : R), D_in (fun x : R => x ^ n) (fun x : R => INR n * x ^ (n - 1)) D x0

forall (n : nat) (D : R -> Prop) (x0 : R), D_in (fun x : R => x ^ n) (fun x : R => INR n * x ^ (n - 1)) D x0
n:nat
D:R -> Prop
x0:R

D_in (fun x : R => x ^ 0) (fun x : R => INR 0 * x ^ (0 - 1)) D x0
n, n0:nat
H:forall (D0 : R -> Prop) (x1 : R), D_in (fun x : R => x ^ n0) (fun x : R => INR n0 * x ^ (n0 - 1)) D0 x1
D:R -> Prop
x0:R
D_in (fun x : R => x ^ S n0) (fun x : R => INR (S n0) * x ^ (S n0 - 1)) D x0
n, n0:nat
H:forall (D0 : R -> Prop) (x1 : R), D_in (fun x : R => x ^ n0) (fun x : R => INR n0 * x ^ (n0 - 1)) D0 x1
D:R -> Prop
x0:R

D_in (fun x : R => x ^ S n0) (fun x : R => INR (S n0) * x ^ (S n0 - 1)) D x0
n, n0:nat
H:forall (D0 : R -> Prop) (x1 : R), D_in (fun x : R => x ^ n0) (fun x : R => INR n0 * x ^ (n0 - 1)) D0 x1
D:R -> Prop
x0:R

D_in (fun x : R => x ^ S n0) (fun x : R => INR (S n0) * x ^ n0) D x0
n, n0:nat
H:forall (D0 : R -> Prop) (x1 : R), D_in (fun x2 : R => x2 ^ n0) (fun x2 : R => INR n0 * x2 ^ (n0 - 1)) D0 x1
D:R -> Prop
x0, eps:R
H1:eps > 0
x:R
H0:x > 0
H2:forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((x1 * x1 ^ n0 - x0 * x0 ^ n0) / (x1 - x0)) (1 * x0 ^ n0 + x0 * (INR n0 * x0 ^ (n0 - 1))) < eps

forall x1 : R, D_x D x0 x1 /\ R_dist x1 x0 < x -> R_dist ((x1 * x1 ^ n0 - x0 * x0 ^ n0) / (x1 - x0)) (match n0 with | 0%nat => 1 | S _ => INR n0 + 1 end * x0 ^ n0) < eps
n, n0:nat
H:forall (D0 : R -> Prop) (x2 : R), D_in (fun x3 : R => x3 ^ n0) (fun x3 : R => INR n0 * x3 ^ (n0 - 1)) D0 x2
D:R -> Prop
x0, eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H2:R_dist ((x1 ^ S n0 - x0 ^ S n0) / (x1 - x0)) (x0 ^ n0 + x0 ^ S (n0 - 1) * INR n0) < eps
cond:n0 = 0%nat

R_dist ((x1 * x1 ^ n0 - x0 * x0 ^ n0) / (x1 - x0)) (match n0 with | 0%nat => 1 | S _ => INR n0 + 1 end * x0 ^ n0) < eps
n, n0:nat
H:forall (D0 : R -> Prop) (x2 : R), D_in (fun x3 : R => x3 ^ n0) (fun x3 : R => INR n0 * x3 ^ (n0 - 1)) D0 x2
D:R -> Prop
x0, eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H2:R_dist ((x1 ^ S n0 - x0 ^ S n0) / (x1 - x0)) (x0 ^ n0 + x0 ^ S (n0 - 1) * INR n0) < eps
cond:n0 <> 0%nat
R_dist ((x1 * x1 ^ n0 - x0 * x0 ^ n0) / (x1 - x0)) (match n0 with | 0%nat => 1 | S _ => INR n0 + 1 end * x0 ^ n0) < eps
n, n0:nat
H:forall (D0 : R -> Prop) (x2 : R), D_in (fun x3 : R => x3 ^ n0) (fun x3 : R => INR n0 * x3 ^ (n0 - 1)) D0 x2
D:R -> Prop
x0, eps:R
H1:eps > 0
x:R
H0:x > 0
x1:R
H2:R_dist ((x1 ^ S n0 - x0 ^ S n0) / (x1 - x0)) (x0 ^ n0 + x0 ^ S (n0 - 1) * INR n0) < eps
cond:n0 <> 0%nat

R_dist ((x1 * x1 ^ n0 - x0 * x0 ^ n0) / (x1 - x0)) (match n0 with | 0%nat => 1 | S _ => INR n0 + 1 end * x0 ^ n0) < eps
cut (n0 <> 0%nat -> S (n0 - 1) = n0); [ intro | omega ]; rewrite (H3 cond) in H2; rewrite (Rmult_comm (x0 ^ n0) (INR n0)) in H2; rewrite (tech_pow_Rplus x0 n0 n0) in H2; assumption. Qed. (*********)

forall (Df Dg : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df Df x0 -> D_in g dg Dg (f x0) -> D_in (fun x : R => g (f x)) (fun x : R => df x * dg (f x)) (Dgf Df Dg f) x0

forall (Df Dg : R -> Prop) (df dg f g : R -> R) (x0 : R), D_in f df Df x0 -> D_in g dg Dg (f x0) -> D_in (fun x : R => g (f x)) (fun x : R => df x * dg (f x)) (Dgf Df Dg f) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0

limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (x - x0)) (D_x (Dgf Df Dg f) x0) (df x0 * dg (f x0)) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0
limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x2 : R => (g x2 - g (f x0)) * / (x2 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x2 : R => (g (f x2) - g (f x0)) * / (f x2 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H5:x1 > 0
H7:forall x2 : R, Dgf (D_x Df x0) (D_x Dg (f x0)) f x2 /\ R_dist x2 x0 < x1 -> R_dist ((g (f x2) - g (f x0)) * / (f x2 - f x0) * ((f x2 - f x0) * / (x2 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x2 : R, D_x Df x0 x2 /\ R_dist x2 x0 < x -> R_dist ((f x2 - f x0) * / (x2 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps

Rmin x x1 > 0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x2 : R => (g x2 - g (f x0)) * / (x2 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x2 : R => (g (f x2) - g (f x0)) * / (f x2 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H5:x1 > 0
H7:forall x2 : R, Dgf (D_x Df x0) (D_x Dg (f x0)) f x2 /\ R_dist x2 x0 < x1 -> R_dist ((g (f x2) - g (f x0)) * / (f x2 - f x0) * ((f x2 - f x0) * / (x2 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x2 : R, D_x Df x0 x2 /\ R_dist x2 x0 < x -> R_dist ((f x2 - f x0) * / (x2 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps
forall x2 : R, D_x (Dgf Df Dg f) x0 x2 /\ R_dist x2 x0 < Rmin x x1 -> R_dist ((g (f x2) - g (f x0)) * / (x2 - x0)) (df x0 * dg (f x0)) < eps
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0
limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x2 : R => (g x2 - g (f x0)) * / (x2 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x2 : R => (g (f x2) - g (f x0)) * / (f x2 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x2 : R => (f x2 - f x0) * / (x2 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H5:x1 > 0
H7:forall x2 : R, Dgf (D_x Df x0) (D_x Dg (f x0)) f x2 /\ R_dist x2 x0 < x1 -> R_dist ((g (f x2) - g (f x0)) * / (f x2 - f x0) * ((f x2 - f x0) * / (x2 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x2 : R, D_x Df x0 x2 /\ R_dist x2 x0 < x -> R_dist ((f x2 - f x0) * / (x2 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps

forall x2 : R, D_x (Dgf Df Dg f) x0 x2 /\ R_dist x2 x0 < Rmin x x1 -> R_dist ((g (f x2) - g (f x0)) * / (x2 - x0)) (df x0 * dg (f x0)) < eps
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0
limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x3 : R => (g x3 - g (f x0)) * / (x3 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x3 : R => (g (f x3) - g (f x0)) * / (f x3 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H7:forall x3 : R, ((Df x3 /\ x0 <> x3) /\ Dg (f x3) /\ f x0 <> f x3) /\ R_dist x3 x0 < x1 -> R_dist ((g (f x3) - g (f x0)) * / (f x3 - f x0) * ((f x3 - f x0) * / (x3 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x3 : R, (Df x3 /\ x0 <> x3) /\ R_dist x3 x0 < x -> R_dist ((f x3 - f x0) * / (x3 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps
x2:R
H11:(Df x2 /\ Dg (f x2)) /\ x0 <> x2
H5:R_dist x2 x0 < x
H13:R_dist x2 x0 < x1
H12:f x2 = f x0

R_dist ((g (f x2) - g (f x0)) * / (x2 - x0)) (df x0 * dg (f x0)) < eps
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x3 : R => (g x3 - g (f x0)) * / (x3 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x3 : R => (g (f x3) - g (f x0)) * / (f x3 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H7:forall x3 : R, ((Df x3 /\ x0 <> x3) /\ Dg (f x3) /\ f x0 <> f x3) /\ R_dist x3 x0 < x1 -> R_dist ((g (f x3) - g (f x0)) * / (f x3 - f x0) * ((f x3 - f x0) * / (x3 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x3 : R, (Df x3 /\ x0 <> x3) /\ R_dist x3 x0 < x -> R_dist ((f x3 - f x0) * / (x3 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps
x2:R
H11:(Df x2 /\ Dg (f x2)) /\ x0 <> x2
H5:R_dist x2 x0 < x
H13:R_dist x2 x0 < x1
H12:f x2 <> f x0
R_dist ((g (f x2) - g (f x0)) * / (x2 - x0)) (df x0 * dg (f x0)) < eps
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0
limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x3 : R => (g x3 - g (f x0)) * / (x3 - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x3 : R => (g (f x3) - g (f x0)) * / (f x3 - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H6:limit1_in (fun x3 : R => (f x3 - f x0) * / (x3 - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
eps:R
H8:eps > 0
x, x1:R
H7:forall x3 : R, ((Df x3 /\ x0 <> x3) /\ Dg (f x3) /\ f x0 <> f x3) /\ R_dist x3 x0 < x1 -> R_dist ((g (f x3) - g (f x0)) * / (f x3 - f x0) * ((f x3 - f x0) * / (x3 - x0))) (dg (f x0) * df x0) < eps
H9:x > 0
H10:forall x3 : R, (Df x3 /\ x0 <> x3) /\ R_dist x3 x0 < x -> R_dist ((f x3 - f x0) * / (x3 - x0) * dg (f x0)) (df x0 * dg (f x0)) < eps
x2:R
H11:(Df x2 /\ Dg (f x2)) /\ x0 <> x2
H5:R_dist x2 x0 < x
H13:R_dist x2 x0 < x1
H12:f x2 <> f x0

R_dist ((g (f x2) - g (f x0)) * / (x2 - x0)) (df x0 * dg (f x0)) < eps
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0
limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
Df, Dg:R -> Prop
df, dg, f, g:R -> R
x0:R
H:D_in f df Df x0
H0:D_in g dg Dg (f x0)
H1:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (D_x Df x0) (df x0) x0
H2:limit1_in (fun x : R => (g x - g (f x0)) * / (x - f x0)) (D_x Dg (f x0)) (dg (f x0)) (f x0)
H4:limit1_in f (D_x Df x0) (f x0) x0
H3:limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0)) x0
H5:limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0 -> limit1_in (fun x : R => (g (f x) - g (f x0)) * / (f x - f x0) * ((f x - f x0) * / (x - x0))) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (dg (f x0) * df x0) x0

limit1_in (fun x : R => (f x - f x0) * / (x - x0)) (Dgf (D_x Df x0) (D_x Dg (f x0)) f) (df x0) x0
clear H5 H3 H4 H2; unfold limit1_in; unfold limit_in; simpl; unfold limit1_in in H1; unfold limit_in in H1; simpl in H1; intros; elim (H1 eps H2); clear H1; intros; elim H1; clear H1; intros; split with x; split; auto; intros; unfold D_x, Dgf in H4, H3; elim H4; clear H4; intros; elim H4; clear H4; intros; exact (H3 x1 (conj H4 H5)). Qed. (*********)

forall (n : nat) (D : R -> Prop) (x0 : R) (expr dexpr : R -> R), D_in expr dexpr D x0 -> D_in (fun x : R => expr x ^ n) (fun x : R => INR n * expr x ^ (n - 1) * dexpr x) (Dgf D D expr) x0

forall (n : nat) (D : R -> Prop) (x0 : R) (expr dexpr : R -> R), D_in expr dexpr D x0 -> D_in (fun x : R => expr x ^ n) (fun x : R => INR n * expr x ^ (n - 1) * dexpr x) (Dgf D D expr) x0
n:nat
D:R -> Prop
x0:R
expr, dexpr:R -> R
H:D_in expr dexpr D x0
eps:R
H1:eps > 0
x:R
H0:x > 0
H2:forall x2 : R, D_x (Dgf D D expr) x0 x2 /\ R_dist x2 x0 < x -> R_dist ((expr x2 ^ n - expr x0 ^ n) / (x2 - x0)) (dexpr x0 * (INR n * expr x0 ^ (n - 1))) < eps
x1:R
H3:D_x (Dgf D D expr) x0 x1 /\ R_dist x1 x0 < x

R_dist ((expr x1 ^ n - expr x0 ^ n) / (x1 - x0)) (INR n * expr x0 ^ (n - 1) * dexpr x0) < eps
cut (dexpr x0 * (INR n * expr x0 ^ (n - 1)) = INR n * expr x0 ^ (n - 1) * dexpr x0); [ intro Rew; rewrite <- Rew; exact (H2 x1 H3) | ring ]. Qed.