~ubuntu-branches/ubuntu/hardy/coq-doc/hardy

« back to all changes in this revision

Viewing changes to library/Coq.Reals.Rderiv.html

  • Committer: Bazaar Package Importer
  • Author(s): Samuel Mimram
  • Date: 2004-09-18 13:28:22 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040918132822-ees5mb8qmzd6a0fw
Tags: 8.0pl1.0-1
* Added the Coq faq, moved the tutorial to the root directory and added
  doc-base files for both, closes: #272204.
* Set dh_compat to level 4.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html xmlns="http://www.w3.org/1999/xhtml">
 
2
<head>
 
3
<meta http-equiv="Content-Type" content="text/html; charset="><link rel="stylesheet" href="style.css" type="text/css"><title>Coq.Reals.Rderiv</title>
 
4
</head>
 
5
 
 
6
<body>
 
7
 
 
8
<h1>Library Coq.Reals.Rderiv</h1>
 
9
 
 
10
<code>
 
11
</code>
 
12
 
 
13
<table width="100%"><tr class="doc"><td>
 
14
    Definition of the derivative,continuity          
 
15
</td></tr></table>
 
16
<code>
 
17
<code class="keyword">Require</code> <code class="keyword">Import</code> Rbase.<br/>
 
18
<code class="keyword">Require</code> <code class="keyword">Import</code> Rfunctions.<br/>
 
19
<code class="keyword">Require</code> <code class="keyword">Import</code> Rlimit.<br/>
 
20
<code class="keyword">Require</code> <code class="keyword">Import</code> Fourier.<br/>
 
21
<code class="keyword">Require</code> <code class="keyword">Import</code> Classical_Prop.<br/>
 
22
<code class="keyword">Require</code> <code class="keyword">Import</code> Classical_Pred_Type.<br/>
 
23
<code class="keyword">Require</code> <code class="keyword">Import</code> Omega. Open <code class="keyword">Local</code> Scope R_scope.<br/>
 
24
 
 
25
<br/>
 
26
<code class="keyword">Definition</code> <a name="D_x"></a>D_x (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (y x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : Prop := D x /\ y &lt;&gt; x.<br/>
 
27
 
 
28
<br/>
 
29
<code class="keyword">Definition</code> <a name="continue_in"></a>continue_in (f:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : Prop :=<br/>
 
30
&nbsp;&nbsp;<a href="Coq.Reals.Rlimit.html#limit1_in">limit1_in</a> f (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (f x0) x0.<br/>
 
31
 
 
32
<br/>
 
33
<code class="keyword">Definition</code> <a name="D_in"></a>D_in (f d:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : Prop :=<br/>
 
34
&nbsp;&nbsp;<a href="Coq.Reals.Rlimit.html#limit1_in">limit1_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) / (x - x0)) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (d x0) x0.<br/>
 
35
 
 
36
<br/>
 
37
<code class="keyword">Lemma</code> <a name="cont_deriv"></a>cont_deriv :<br/>
 
38
&nbsp;forall (f d:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
39
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f d D x0 -&gt; <a href="Coq.Reals.Rderiv.html#continue_in">continue_in</a> f D x0.<br/>
 
40
unfold continue_in in |- *; unfold D_in in |- *; unfold limit1_in in |- *;<br/>
 
41
&nbsp;unfold limit_in in |- *; unfold Rdiv in |- *; simpl in |- *; <br/>
 
42
&nbsp;intros; elim (H eps H0); clear H; intros; elim H; <br/>
 
43
&nbsp;clear H; intros; elim (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> (d x0) 0); intro.<br/>
 
44
split with (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> 1 x); split.<br/>
 
45
elim (<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> 1 x 0); intros a b; apply (b (<a href="Coq.Init.Logic.html#conj">conj</a> <a href="Coq.Reals.RIneq.html#Rlt_0_1">Rlt_0_1</a> H)).<br/>
 
46
intros; elim H3; clear H3; intros;<br/>
 
47
&nbsp;generalize (let (H1, H2) := <a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> 1 x (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0) in H1);<br/>
 
48
&nbsp;unfold Rgt in |- *; intro; elim (H5 H4); clear H5; <br/>
 
49
&nbsp;intros; generalize (H1 x1 (<a href="Coq.Init.Logic.html#conj">conj</a> H3 H6)); clear H1; <br/>
 
50
&nbsp;intro; unfold D_x in H3; elim H3; intros.<br/>
 
51
rewrite H2 in H1; unfold R_dist in |- *; unfold R_dist in H1;<br/>
 
52
&nbsp;cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0) &lt; eps * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0)).<br/>
 
53
intro; unfold R_dist in H5;<br/>
 
54
&nbsp;generalize (<a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a> eps (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0)) 1 H0 H5);<br/>
 
55
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; intro; apply <a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> with (r2:= eps * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0));<br/>
 
56
&nbsp;assumption.<br/>
 
57
rewrite (<a href="Coq.Reals.RIneq.html#Rminus_0_r">Rminus_0_r</a> ((f x1 - f x0) * / (x1 - x0))) in H1;<br/>
 
58
&nbsp;rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a> in H1; cut (x1 - x0 &lt;&gt; 0).<br/>
 
59
intro; rewrite (<a href="Coq.Reals.Rbasic_fun.html#Rabs_Rinv">Rabs_Rinv</a> (x1 - x0) H9) in H1;<br/>
 
60
&nbsp;generalize<br/>
 
61
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0)) (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0) * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0))<br/>
 
62
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eps (<a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a> (x1 - x0) H9) H1); intro; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> in H10;<br/>
 
63
&nbsp;rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> in H10; rewrite <a href="Coq.Reals.Raxioms.html#Rinv_l">Rinv_l</a> in H10.<br/>
 
64
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a> in H10; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a>; assumption.<br/>
 
65
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>; auto.<br/>
 
66
apply <a href="Coq.Reals.RIneq.html#Rminus_eq_contra">Rminus_eq_contra</a>; auto.<br/>
 
67
&nbsp;split with (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (/ 2) x) (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (2 * d x0))); split.<br/>
 
68
cut (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (/ 2) x &gt; 0).<br/>
 
69
cut (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (2 * d x0) &gt; 0).<br/>
 
70
intros; elim (<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (/ 2) x) (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (2 * d x0)) 0);<br/>
 
71
&nbsp;intros a b; apply (b (<a href="Coq.Init.Logic.html#conj">conj</a> H4 H3)).<br/>
 
72
apply <a href="Coq.Reals.RIneq.html#Rmult_gt_0_compat">Rmult_gt_0_compat</a>; auto.<br/>
 
73
unfold Rgt in |- *; apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>;<br/>
 
74
&nbsp;apply <a href="Coq.Reals.RIneq.html#Rmult_integral_contrapositive">Rmult_integral_contrapositive</a>; split.<br/>
 
75
discrR.<br/>
 
76
assumption.<br/>
 
77
elim (<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> (/ 2) x 0); intros a b; cut (0 &lt; 2).<br/>
 
78
intro; generalize (<a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a> 2 H3); intro; fold (/ 2 &gt; 0) in H4;<br/>
 
79
&nbsp;apply (b (<a href="Coq.Init.Logic.html#conj">conj</a> H4 H)).<br/>
 
80
fourier.<br/>
 
81
intros; elim H3; clear H3; intros;<br/>
 
82
&nbsp;generalize<br/>
 
83
&nbsp;&nbsp;(let (H1, H2) :=<br/>
 
84
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (/ 2) x) (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (2 * d x0)) (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0) in<br/>
 
85
&nbsp;&nbsp;&nbsp;H1); unfold Rgt in |- *; intro; elim (H5 H4); clear H5; <br/>
 
86
&nbsp;intros; generalize (let (H1, H2) := <a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> (/ 2) x (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0) in H1);<br/>
 
87
&nbsp;unfold Rgt in |- *; intro; elim (H7 H5); clear H7; <br/>
 
88
&nbsp;intros; clear H4 H5; generalize (H1 x1 (<a href="Coq.Init.Logic.html#conj">conj</a> H3 H8)); <br/>
 
89
&nbsp;clear H1; intro; unfold D_x in H3; elim H3; intros;<br/>
 
90
&nbsp;generalize (<a href="Coq.Init.Logic.html#sym_not_eq">sym_not_eq</a> H5); clear H5; intro H5;<br/>
 
91
&nbsp;generalize (<a href="Coq.Reals.RIneq.html#Rminus_eq_contra">Rminus_eq_contra</a> x1 x0 H5); intro; generalize H1;<br/>
 
92
&nbsp;pattern (d x0) at 1 in |- *;<br/>
 
93
&nbsp;rewrite &lt;- (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (d x0) in H2);<br/>
 
94
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rinv_l">Rinv_l</a> (x1 - x0) H9); unfold R_dist in |- *;<br/>
 
95
&nbsp;unfold Rminus at 1 in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (f x1 - f x0) (/ (x1 - x0)));<br/>
 
96
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ (x1 - x0) * (x1 - x0)) (d x0));<br/>
 
97
&nbsp;rewrite &lt;- (<a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a> (d x0) (/ (x1 - x0) * (x1 - x0)));<br/>
 
98
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (- d x0) (/ (x1 - x0) * (x1 - x0)));<br/>
 
99
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (/ (x1 - x0)) (x1 - x0) (- d x0));<br/>
 
100
&nbsp;rewrite &lt;-<br/>
 
101
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_plus_distr_l">Rmult_plus_distr_l</a> (/ (x1 - x0)) (f x1 - f x0) ((x1 - x0) * - d x0))<br/>
 
102
&nbsp;&nbsp;; rewrite (<a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a> (/ (x1 - x0)) (f x1 - f x0 + (x1 - x0) * - d x0));<br/>
 
103
&nbsp;clear H1; intro;<br/>
 
104
&nbsp;generalize<br/>
 
105
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0))<br/>
 
106
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ (x1 - x0)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0 + (x1 - x0) * - d x0)) eps<br/>
 
107
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a> (x1 - x0) H9) H1);<br/>
 
108
&nbsp;rewrite &lt;-<br/>
 
109
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0)) (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ (x1 - x0)))<br/>
 
110
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0 + (x1 - x0) * - d x0)));<br/>
 
111
&nbsp;rewrite (<a href="Coq.Reals.Rbasic_fun.html#Rabs_Rinv">Rabs_Rinv</a> (x1 - x0) H9);<br/>
 
112
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rinv_r">Rinv_r</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0)) (<a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a> (x1 - x0) H9));<br/>
 
113
&nbsp;rewrite<br/>
 
114
&nbsp;&nbsp;(let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0 + (x1 - x0) * - d x0)) in H2)<br/>
 
115
&nbsp;&nbsp;; generalize (<a href="Coq.Reals.Rbasic_fun.html#Rabs_triang_inv">Rabs_triang_inv</a> (f x1 - f x0) ((x1 - x0) * d x0)); <br/>
 
116
&nbsp;intro; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (x1 - x0) (- d x0));<br/>
 
117
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a> (d x0) (x1 - x0));<br/>
 
118
&nbsp;fold (f x1 - f x0 - d x0 * (x1 - x0)) in |- *;<br/>
 
119
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (x1 - x0) (d x0)) in H10; clear H1; <br/>
 
120
&nbsp;intro;<br/>
 
121
&nbsp;generalize<br/>
 
122
&nbsp;&nbsp;(<a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0) - <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0)))<br/>
 
123
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0 - d x0 * (x1 - x0))) (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0) * eps) H10 H1);<br/>
 
124
&nbsp;clear H1; intro;<br/>
 
125
&nbsp;generalize<br/>
 
126
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rplus_lt_compat_l">Rplus_lt_compat_l</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0)))<br/>
 
127
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0) - <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0))) (<br/>
 
128
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0) * eps) H1); unfold Rminus at 2 in |- *;<br/>
 
129
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0)) (- <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0))));<br/>
 
130
&nbsp;rewrite &lt;-<br/>
 
131
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0))) (- <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0)))<br/>
 
132
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0))); rewrite (<a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0))));<br/>
 
133
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rplus_ne">Rplus_ne</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0)) in H2); <br/>
 
134
&nbsp;clear H1; intro; cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0)) + <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0) * eps &lt; eps).<br/>
 
135
intro;<br/>
 
136
&nbsp;apply<br/>
 
137
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f x1 - f x0))<br/>
 
138
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0)) + <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0) * eps) eps H1 H11). <br/>
 
139
clear H1 H5 H3 H10; generalize (<a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a> (d x0) H2); intro;<br/>
 
140
&nbsp;unfold Rgt in H0;<br/>
 
141
&nbsp;generalize (<a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a> eps (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0) (/ 2) H0 H7); <br/>
 
142
&nbsp;clear H7; intro;<br/>
 
143
&nbsp;generalize<br/>
 
144
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0) (<br/>
 
145
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (2 * d x0)) H1 H6); clear H6; intro;<br/>
 
146
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> eps (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x1 x0)) in H3; unfold R_dist in H3, H5;<br/>
 
147
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a> (d x0) (x1 - x0)) in H5;<br/>
 
148
&nbsp;rewrite (<a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a> 2 (d x0)) in H5; cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2 &lt;&gt; 0).<br/>
 
149
intro; fold (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0) &gt; 0) in H1;<br/>
 
150
&nbsp;rewrite<br/>
 
151
&nbsp;&nbsp;(<a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2) (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) H6<br/>
 
152
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.RIneq.html#Rlt_dichotomy_converse">Rlt_dichotomy_converse</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) 0 (<a href="Coq.Init.Logic.html#or_intror">or_intror</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0) &lt; 0) H1)))<br/>
 
153
&nbsp;&nbsp;&nbsp;in H5;<br/>
 
154
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) (eps * (/ <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2 * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)))) in H5;<br/>
 
155
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> eps (/ <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2) (/ <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0))) in H5;<br/>
 
156
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2) (/ <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0))) in H5;<br/>
 
157
&nbsp;rewrite<br/>
 
158
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rinv_l">Rinv_l</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0))<br/>
 
159
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.RIneq.html#Rlt_dichotomy_converse">Rlt_dichotomy_converse</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0)) 0 (<a href="Coq.Init.Logic.html#or_intror">or_intror</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0) &lt; 0) H1)))<br/>
 
160
&nbsp;&nbsp;&nbsp;in H5; rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (eps * / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2) in H1) in H5;<br/>
 
161
&nbsp;cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> 2 = 2).<br/>
 
162
intro; rewrite H7 in H5;<br/>
 
163
&nbsp;generalize<br/>
 
164
&nbsp;&nbsp;(<a href="Coq.Reals.RIneq.html#Rplus_lt_compat">Rplus_lt_compat</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (d x0 * (x1 - x0))) (eps * / 2)<br/>
 
165
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x1 - x0) * eps) (eps * / 2) H5 H3); intro; <br/>
 
166
&nbsp;rewrite <a href="Coq.Reals.Rlimit.html#eps2">eps2</a> in H10; assumption.<br/>
 
167
unfold Rabs in |- *; case (<a href="Coq.Reals.Rbasic_fun.html#Rcase_abs">Rcase_abs</a> 2); auto.<br/>
 
168
&nbsp;intro; cut (0 &lt; 2).<br/>
 
169
intro; generalize (<a href="Coq.Reals.Raxioms.html#Rlt_asym">Rlt_asym</a> 0 2 H7); intro; elimtype <a href="Coq.Init.Logic.html#False">False</a>; auto.<br/>
 
170
fourier.<br/>
 
171
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>.<br/>
 
172
discrR.<br/>
 
173
<code class="keyword">Qed</code>.<br/>
 
174
 
 
175
<br/>
 
176
<code class="keyword">Lemma</code> <a name="Dconst"></a>Dconst :<br/>
 
177
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (y x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>), <a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; y) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; 0) D x0.<br/>
 
178
unfold D_in in |- *; intros; unfold limit1_in in |- *;<br/>
 
179
&nbsp;unfold limit_in in |- *; unfold Rdiv in |- *; intros; <br/>
 
180
&nbsp;simpl in |- *; split with eps; split; auto.<br/>
 
181
intros; rewrite (<a href="Coq.Reals.RIneq.html#Rminus_diag_eq">Rminus_diag_eq</a> y y (<a href="Coq.Init.Logic.html#refl_equal">refl_equal</a> y)); rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>;<br/>
 
182
&nbsp;unfold R_dist in |- *; rewrite (<a href="Coq.Reals.RIneq.html#Rminus_diag_eq">Rminus_diag_eq</a> 0 0 (<a href="Coq.Init.Logic.html#refl_equal">refl_equal</a> 0));<br/>
 
183
&nbsp;unfold Rabs in |- *; case (<a href="Coq.Reals.Rbasic_fun.html#Rcase_abs">Rcase_abs</a> 0); intro.<br/>
 
184
absurd (0 &lt; 0); auto.<br/>
 
185
red in |- *; intro; apply (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> 0 H1).<br/>
 
186
unfold Rgt in H0; assumption.<br/>
 
187
<code class="keyword">Qed</code>.<br/>
 
188
 
 
189
<br/>
 
190
<code class="keyword">Lemma</code> <a name="Dx"></a>Dx :<br/>
 
191
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>), <a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; 1) D x0.<br/>
 
192
unfold D_in in |- *; unfold Rdiv in |- *; intros; unfold limit1_in in |- *;<br/>
 
193
&nbsp;unfold limit_in in |- *; intros; simpl in |- *; split with eps; <br/>
 
194
&nbsp;split; auto.<br/>
 
195
intros; elim H0; clear H0; intros; unfold D_x in H0; elim H0; intros;<br/>
 
196
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rinv_r">Rinv_r</a> (x - x0) (<a href="Coq.Reals.RIneq.html#Rminus_eq_contra">Rminus_eq_contra</a> x x0 (<a href="Coq.Init.Logic.html#sym_not_eq">sym_not_eq</a> H3)));<br/>
 
197
&nbsp;unfold R_dist in |- *; rewrite (<a href="Coq.Reals.RIneq.html#Rminus_diag_eq">Rminus_diag_eq</a> 1 1 (<a href="Coq.Init.Logic.html#refl_equal">refl_equal</a> 1));<br/>
 
198
&nbsp;unfold Rabs in |- *; case (<a href="Coq.Reals.Rbasic_fun.html#Rcase_abs">Rcase_abs</a> 0); intro.<br/>
 
199
absurd (0 &lt; 0); auto.<br/>
 
200
red in |- *; intro; apply (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> 0 r).<br/>
 
201
unfold Rgt in H; assumption.<br/>
 
202
<code class="keyword">Qed</code>. <br/>
 
203
 
 
204
<br/>
 
205
<code class="keyword">Lemma</code> <a name="Dadd"></a>Dadd :<br/>
 
206
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (df dg f g:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
207
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df D x0 -&gt;<br/>
 
208
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> g dg D x0 -&gt;<br/>
 
209
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; f x + g x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; df x + dg x) D x0.<br/>
 
210
unfold D_in in |- *; intros;<br/>
 
211
&nbsp;generalize<br/>
 
212
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_plus">limit_plus</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0))<br/>
 
213
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (g x - g x0) * / (x - x0)) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (<br/>
 
214
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df x0) (dg x0) x0 H H0); clear H H0; unfold limit1_in in |- *;<br/>
 
215
&nbsp;unfold limit_in in |- *; simpl in |- *; intros; elim (H eps H0); <br/>
 
216
&nbsp;clear H; intros; elim H; clear H; intros; split with x; <br/>
 
217
&nbsp;split; auto; intros; generalize (H1 x1 H2); clear H1; <br/>
 
218
&nbsp;intro; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (f x1 - f x0) (/ (x1 - x0))) in H1;<br/>
 
219
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (g x1 - g x0) (/ (x1 - x0))) in H1;<br/>
 
220
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_plus_distr_l">Rmult_plus_distr_l</a> (/ (x1 - x0)) (f x1 - f x0) (g x1 - g x0))<br/>
 
221
&nbsp;&nbsp;&nbsp;in H1;<br/>
 
222
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ (x1 - x0)) (f x1 - f x0 + (g x1 - g x0))) in H1;<br/>
 
223
&nbsp;cut (f x1 - f x0 + (g x1 - g x0) = f x1 + g x1 - (f x0 + g x0)).<br/>
 
224
intro; rewrite H3 in H1; assumption.<br/>
 
225
ring.<br/>
 
226
<code class="keyword">Qed</code>.<br/>
 
227
 
 
228
<br/>
 
229
<code class="keyword">Lemma</code> <a name="Dmult"></a>Dmult :<br/>
 
230
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (df dg f g:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
231
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df D x0 -&gt;<br/>
 
232
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> g dg D x0 -&gt;<br/>
 
233
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; f x * g x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; df x * g x + f x * dg x) D x0.<br/>
 
234
intros; unfold D_in in |- *; generalize H H0; intros; unfold D_in in H, H0;<br/>
 
235
&nbsp;generalize (<a href="Coq.Reals.Rderiv.html#cont_deriv">cont_deriv</a> f df D x0 H1); unfold continue_in in |- *; <br/>
 
236
&nbsp;intro;<br/>
 
237
&nbsp;generalize<br/>
 
238
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_mul">limit_mul</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (g x - g x0) * / (x - x0)) (<br/>
 
239
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; f x) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (dg x0) (f x0) x0 H0 H3); <br/>
 
240
&nbsp;intro; cut (<a href="Coq.Reals.Rlimit.html#limit1_in">limit1_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; g x0) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (g x0) x0).<br/>
 
241
intro;<br/>
 
242
&nbsp;generalize<br/>
 
243
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_mul">limit_mul</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0)) (<br/>
 
244
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun _:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; g x0) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (df x0) (g x0) x0 H H5);<br/>
 
245
&nbsp;clear H H0 H1 H2 H3 H5; intro;<br/>
 
246
&nbsp;generalize<br/>
 
247
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_plus">limit_plus</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0) * g x0)<br/>
 
248
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (g x - g x0) * / (x - x0) * f x) (<br/>
 
249
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> D x0) (df x0 * g x0) (dg x0 * f x0) x0 H H4); <br/>
 
250
&nbsp;clear H4 H; intro; unfold limit1_in in H; unfold limit_in in H; <br/>
 
251
&nbsp;simpl in H; unfold limit1_in in |- *; unfold limit_in in |- *; <br/>
 
252
&nbsp;simpl in |- *; intros; elim (H eps H0); clear H; intros; <br/>
 
253
&nbsp;elim H; clear H; intros; split with x; split; auto; <br/>
 
254
&nbsp;intros; generalize (H1 x1 H2); clear H1; intro;<br/>
 
255
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (f x1 - f x0) (/ (x1 - x0))) in H1;<br/>
 
256
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (g x1 - g x0) (/ (x1 - x0))) in H1;<br/>
 
257
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (/ (x1 - x0)) (f x1 - f x0) (g x0)) in H1;<br/>
 
258
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (/ (x1 - x0)) (g x1 - g x0) (f x1)) in H1;<br/>
 
259
&nbsp;rewrite &lt;-<br/>
 
260
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_plus_distr_l">Rmult_plus_distr_l</a> (/ (x1 - x0)) ((f x1 - f x0) * g x0)<br/>
 
261
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((g x1 - g x0) * f x1)) in H1;<br/>
 
262
&nbsp;rewrite<br/>
 
263
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ (x1 - x0)) ((f x1 - f x0) * g x0 + (g x1 - g x0) * f x1))<br/>
 
264
&nbsp;&nbsp;&nbsp;in H1; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (dg x0) (f x0)) in H1;<br/>
 
265
&nbsp;cut<br/>
 
266
&nbsp;&nbsp;((f x1 - f x0) * g x0 + (g x1 - g x0) * f x1 = f x1 * g x1 - f x0 * g x0).<br/>
 
267
intro; rewrite H3 in H1; assumption.<br/>
 
268
ring.<br/>
 
269
unfold limit1_in in |- *; unfold limit_in in |- *; simpl in |- *; intros;<br/>
 
270
&nbsp;split with eps; split; auto; intros; elim (<a href="Coq.Reals.Rfunctions.html#R_dist_refl">R_dist_refl</a> (g x0) (g x0));<br/>
 
271
&nbsp;intros a b; rewrite (b (<a href="Coq.Init.Logic.html#refl_equal">refl_equal</a> (g x0))); unfold Rgt in H; <br/>
 
272
&nbsp;assumption.<br/>
 
273
<code class="keyword">Qed</code>.<br/>
 
274
 
 
275
<br/>
 
276
<code class="keyword">Lemma</code> <a name="Dmult_const"></a>Dmult_const :<br/>
 
277
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (f df:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0 a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
278
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df D x0 -&gt; <a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; a * f x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; a * df x) D x0.<br/>
 
279
intros;<br/>
 
280
&nbsp;generalize (<a href="Coq.Reals.Rderiv.html#Dmult">Dmult</a> D (fun _:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; 0) df (fun _:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; a) f x0 (<a href="Coq.Reals.Rderiv.html#Dconst">Dconst</a> D a x0) H);<br/>
 
281
&nbsp;unfold D_in in |- *; intros; rewrite (<a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a> (f x0)) in H0;<br/>
 
282
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rplus_ne">Rplus_ne</a> (a * df x0) in H2) in H0; <br/>
 
283
&nbsp;assumption.<br/>
 
284
<code class="keyword">Qed</code>.<br/>
 
285
 
 
286
<br/>
 
287
<code class="keyword">Lemma</code> <a name="Dopp"></a>Dopp :<br/>
 
288
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (f df:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
289
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df D x0 -&gt; <a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; - f x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; - df x) D x0.<br/>
 
290
intros; generalize (<a href="Coq.Reals.Rderiv.html#Dmult_const">Dmult_const</a> D f df x0 (-1) H); unfold D_in in |- *;<br/>
 
291
&nbsp;unfold limit1_in in |- *; unfold limit_in in |- *; <br/>
 
292
&nbsp;intros; generalize (H0 eps H1); clear H0; intro; elim H0; <br/>
 
293
&nbsp;clear H0; intros; elim H0; clear H0; simpl in |- *; <br/>
 
294
&nbsp;intros; split with x; split; auto.<br/>
 
295
intros; generalize (H2 x1 H3); clear H2; intro;<br/>
 
296
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a> in H2;<br/>
 
297
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a> in H2;<br/>
 
298
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a> in H2;<br/>
 
299
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (f x1) in H2) in H2;<br/>
 
300
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (f x0) in H2) in H2;<br/>
 
301
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (df x0) in H2) in H2; <br/>
 
302
&nbsp;assumption.<br/>
 
303
<code class="keyword">Qed</code>.<br/>
 
304
 
 
305
<br/>
 
306
<code class="keyword">Lemma</code> <a name="Dminus"></a>Dminus :<br/>
 
307
&nbsp;forall (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (df dg f g:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
308
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df D x0 -&gt;<br/>
 
309
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> g dg D x0 -&gt;<br/>
 
310
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; f x - g x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; df x - dg x) D x0.<br/>
 
311
unfold Rminus in |- *; intros; generalize (<a href="Coq.Reals.Rderiv.html#Dopp">Dopp</a> D g dg x0 H0); intro;<br/>
 
312
&nbsp;apply (<a href="Coq.Reals.Rderiv.html#Dadd">Dadd</a> D df (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; - dg x) f (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; - g x) x0); <br/>
 
313
&nbsp;assumption. <br/>
 
314
<code class="keyword">Qed</code>.<br/>
 
315
 
 
316
<br/>
 
317
<code class="keyword">Lemma</code> <a name="Dx_pow_n"></a>Dx_pow_n :<br/>
 
318
&nbsp;forall (n:<a href="Coq.Init.Datatypes.html#nat">nat</a>) (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
319
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; x ^ n) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Raxioms.html#INR">INR</a> n * x ^ (n - 1)) D x0.<br/>
 
320
simple induction n; intros.<br/>
 
321
simpl in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>; apply <a href="Coq.Reals.Rderiv.html#Dconst">Dconst</a>.<br/>
 
322
intros; cut (n0 = (<a href="Coq.Init.Datatypes.html#S">S</a> n0 - 1)%nat);<br/>
 
323
&nbsp;[ intro a; rewrite &lt;- a; clear a | simpl in |- *; apply minus_n_O ].<br/>
 
324
generalize<br/>
 
325
&nbsp;(<a href="Coq.Reals.Rderiv.html#Dmult">Dmult</a> D (fun _:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; 1) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Raxioms.html#INR">INR</a> n0 * x ^ (n0 - 1)) (<br/>
 
326
&nbsp;&nbsp;&nbsp;&nbsp;fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; x) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; x ^ n0) x0 (<a href="Coq.Reals.Rderiv.html#Dx">Dx</a> D x0) (<br/>
 
327
&nbsp;&nbsp;&nbsp;&nbsp;H D x0)); unfold D_in in |- *; unfold limit1_in in |- *;<br/>
 
328
&nbsp;unfold limit_in in |- *; simpl in |- *; intros; elim (H0 eps H1); <br/>
 
329
&nbsp;clear H0; intros; elim H0; clear H0; intros; split with x; <br/>
 
330
&nbsp;split; auto.<br/>
 
331
intros; generalize (H2 x1 H3); clear H2 H3; intro;<br/>
 
332
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (x0 ^ n0) in H2) in H2;<br/>
 
333
&nbsp;rewrite (<a href="Coq.Reals.Rfunctions.html#tech_pow_Rmult">tech_pow_Rmult</a> x1 n0) in H2; rewrite (<a href="Coq.Reals.Rfunctions.html#tech_pow_Rmult">tech_pow_Rmult</a> x0 n0) in H2;<br/>
 
334
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (<a href="Coq.Reals.Raxioms.html#INR">INR</a> n0) (x0 ^ (n0 - 1))) in H2;<br/>
 
335
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> x0 (x0 ^ (n0 - 1)) (<a href="Coq.Reals.Raxioms.html#INR">INR</a> n0)) in H2;<br/>
 
336
&nbsp;rewrite (<a href="Coq.Reals.Rfunctions.html#tech_pow_Rmult">tech_pow_Rmult</a> x0 (n0 - 1)) in H2; elim (<a href="Coq.Logic.Classical_Prop.html#classic">classic</a> (n0 = 0%nat));<br/>
 
337
&nbsp;intro cond.<br/>
 
338
rewrite cond in H2; rewrite cond; simpl in H2; simpl in |- *;<br/>
 
339
&nbsp;cut (1 + x0 * 1 * 0 = 1 * 1);<br/>
 
340
&nbsp;[ intro A; rewrite A in H2; assumption | ring ].<br/>
 
341
cut (n0 &lt;&gt; 0%nat -&gt; <a href="Coq.Init.Datatypes.html#S">S</a> (n0 - 1) = n0); [ intro | omega ];<br/>
 
342
&nbsp;rewrite (H3 cond) in H2; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (x0 ^ n0) (<a href="Coq.Reals.Raxioms.html#INR">INR</a> n0)) in H2;<br/>
 
343
&nbsp;rewrite (<a href="Coq.Reals.Rfunctions.html#tech_pow_Rplus">tech_pow_Rplus</a> x0 n0 n0) in H2; assumption.<br/>
 
344
<code class="keyword">Qed</code>.<br/>
 
345
 
 
346
<br/>
 
347
<code class="keyword">Lemma</code> <a name="Dcomp"></a>Dcomp :<br/>
 
348
&nbsp;forall (Df Dg:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (df dg f g:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
349
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> f df Df x0 -&gt;<br/>
 
350
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> g dg Dg (f x0) -&gt;<br/>
 
351
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; g (f x)) (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; df x * dg (f x)) (<a href="Coq.Reals.Rlimit.html#Dgf">Dgf</a> Df Dg f) x0.<br/>
 
352
intros Df Dg df dg f g x0 H H0; generalize H H0; unfold D_in in |- *;<br/>
 
353
&nbsp;unfold Rdiv in |- *; intros;<br/>
 
354
&nbsp;generalize<br/>
 
355
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_comp">limit_comp</a> f (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (g x - g (f x0)) * / (x - f x0)) (<br/>
 
356
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Df x0) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Dg (f x0)) (f x0) (dg (f x0)) x0); <br/>
 
357
&nbsp;intro; generalize (<a href="Coq.Reals.Rderiv.html#cont_deriv">cont_deriv</a> f df Df x0 H); intro; <br/>
 
358
&nbsp;unfold continue_in in H4; generalize (H3 H4 H2); clear H3; <br/>
 
359
&nbsp;intro;<br/>
 
360
&nbsp;generalize<br/>
 
361
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_mul">limit_mul</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (g (f x) - g (f x0)) * / (f x - f x0))<br/>
 
362
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0))<br/>
 
363
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#Dgf">Dgf</a> (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Df x0) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Dg (f x0)) f) (dg (f x0)) (<br/>
 
364
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df x0) x0 H3); intro;<br/>
 
365
&nbsp;cut<br/>
 
366
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit1_in">limit1_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0))<br/>
 
367
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#Dgf">Dgf</a> (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Df x0) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Dg (f x0)) f) (df x0) x0).<br/>
 
368
intro; generalize (H5 H6); clear H5; intro;<br/>
 
369
&nbsp;generalize<br/>
 
370
&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_mul">limit_mul</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; (f x - f x0) * / (x - x0)) (<br/>
 
371
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; dg (f x0)) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Df x0) (df x0) (dg (f x0)) x0 H1<br/>
 
372
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rlimit.html#limit_free">limit_free</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; dg (f x0)) (<a href="Coq.Reals.Rderiv.html#D_x">D_x</a> Df x0) x0 x0)); <br/>
 
373
&nbsp;intro; unfold limit1_in in |- *; unfold limit_in in |- *; <br/>
 
374
&nbsp;simpl in |- *; unfold limit1_in in H5, H7; unfold limit_in in H5, H7;<br/>
 
375
&nbsp;simpl in H5, H7; intros; elim (H5 eps H8); elim (H7 eps H8); <br/>
 
376
&nbsp;clear H5 H7; intros; elim H5; elim H7; clear H5 H7; <br/>
 
377
&nbsp;intros; split with (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> x x1); split.<br/>
 
378
elim (<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> x x1 0); intros a b; apply (b (<a href="Coq.Init.Logic.html#conj">conj</a> H9 H5)); clear a b.<br/>
 
379
intros; elim H11; clear H11; intros; elim (<a href="Coq.Reals.Rbasic_fun.html#Rmin_Rgt">Rmin_Rgt</a> x x1 (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x2 x0));<br/>
 
380
&nbsp;intros a b; clear b; unfold Rgt in a; elim (a H12); <br/>
 
381
&nbsp;clear H5 a; intros; unfold D_x, Dgf in H11, H7, H10; <br/>
 
382
&nbsp;clear H12; elim (<a href="Coq.Logic.Classical_Prop.html#classic">classic</a> (f x2 = f x0)); intro.<br/>
 
383
elim H11; clear H11; intros; elim H11; clear H11; intros;<br/>
 
384
&nbsp;generalize (H10 x2 (<a href="Coq.Init.Logic.html#conj">conj</a> (<a href="Coq.Init.Logic.html#conj">conj</a> H11 H14) H5)); intro;<br/>
 
385
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rminus_diag_eq">Rminus_diag_eq</a> (f x2) (f x0) H12) in H16;<br/>
 
386
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a> (/ (x2 - x0))) in H16;<br/>
 
387
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a> (dg (f x0))) in H16; rewrite H12;<br/>
 
388
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rminus_diag_eq">Rminus_diag_eq</a> (g (f x0)) (g (f x0)) (<a href="Coq.Init.Logic.html#refl_equal">refl_equal</a> (g (f x0))));<br/>
 
389
&nbsp;rewrite (<a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a> (/ (x2 - x0))); assumption.<br/>
 
390
clear H10 H5; elim H11; clear H11; intros; elim H5; clear H5; intros;<br/>
 
391
&nbsp;cut<br/>
 
392
&nbsp;&nbsp;(((Df x2 /\ x0 &lt;&gt; x2) /\ Dg (f x2) /\ f x0 &lt;&gt; f x2) /\ <a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> x2 x0 &lt; x1);<br/>
 
393
&nbsp;auto; intro; generalize (H7 x2 H14); intro;<br/>
 
394
&nbsp;generalize (<a href="Coq.Reals.RIneq.html#Rminus_eq_contra">Rminus_eq_contra</a> (f x2) (f x0) H12); intro;<br/>
 
395
&nbsp;rewrite<br/>
 
396
&nbsp;&nbsp;(<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (g (f x2) - g (f x0)) (/ (f x2 - f x0))<br/>
 
397
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((f x2 - f x0) * / (x2 - x0))) in H15;<br/>
 
398
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a> (/ (f x2 - f x0)) (f x2 - f x0) (/ (x2 - x0)))<br/>
 
399
&nbsp;&nbsp;&nbsp;in H15; rewrite (<a href="Coq.Reals.Raxioms.html#Rinv_l">Rinv_l</a> (f x2 - f x0) H16) in H15;<br/>
 
400
&nbsp;rewrite (let (H1, H2) := <a href="Coq.Reals.RIneq.html#Rmult_ne">Rmult_ne</a> (/ (x2 - x0)) in H2) in H15;<br/>
 
401
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (df x0) (dg (f x0))); assumption.<br/>
 
402
clear H5 H3 H4 H2; unfold limit1_in in |- *; unfold limit_in in |- *;<br/>
 
403
&nbsp;simpl in |- *; unfold limit1_in in H1; unfold limit_in in H1; <br/>
 
404
&nbsp;simpl in H1; intros; elim (H1 eps H2); clear H1; intros; <br/>
 
405
&nbsp;elim H1; clear H1; intros; split with x; split; auto; <br/>
 
406
&nbsp;intros; unfold D_x, Dgf in H4, H3; elim H4; clear H4; <br/>
 
407
&nbsp;intros; elim H4; clear H4; intros; exact (H3 x1 (<a href="Coq.Init.Logic.html#conj">conj</a> H4 H5)).<br/>
 
408
<code class="keyword">Qed</code>.   <br/>
 
409
 
 
410
<br/>
 
411
<code class="keyword">Lemma</code> <a name="D_pow_n"></a>D_pow_n :<br/>
 
412
&nbsp;forall (n:<a href="Coq.Init.Datatypes.html#nat">nat</a>) (D:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; Prop) (x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) (expr dexpr:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
413
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> expr dexpr D x0 -&gt;<br/>
 
414
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rderiv.html#D_in">D_in</a> (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; expr x ^ n)<br/>
 
415
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Raxioms.html#INR">INR</a> n * expr x ^ (n - 1) * dexpr x) (<br/>
 
416
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rlimit.html#Dgf">Dgf</a> D D expr) x0.<br/>
 
417
intros n D x0 expr dexpr H;<br/>
 
418
&nbsp;generalize<br/>
 
419
&nbsp;&nbsp;(<a href="Coq.Reals.Rderiv.html#Dcomp">Dcomp</a> D D dexpr (fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Raxioms.html#INR">INR</a> n * x ^ (n - 1)) expr (<br/>
 
420
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun x:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; x ^ n) x0 H (<a href="Coq.Reals.Rderiv.html#Dx_pow_n">Dx_pow_n</a> n D (expr x0))); <br/>
 
421
&nbsp;intro; unfold D_in in |- *; unfold limit1_in in |- *;<br/>
 
422
&nbsp;unfold limit_in in |- *; simpl in |- *; intros; unfold D_in in H0;<br/>
 
423
&nbsp;unfold limit1_in in H0; unfold limit_in in H0; simpl in H0; <br/>
 
424
&nbsp;elim (H0 eps H1); clear H0; intros; elim H0; clear H0; <br/>
 
425
&nbsp;intros; split with x; split; intros; auto.<br/>
 
426
cut<br/>
 
427
&nbsp;(dexpr x0 * (<a href="Coq.Reals.Raxioms.html#INR">INR</a> n * expr x0 ^ (n - 1)) =<br/>
 
428
&nbsp;&nbsp;<a href="Coq.Reals.Raxioms.html#INR">INR</a> n * expr x0 ^ (n - 1) * dexpr x0);<br/>
 
429
&nbsp;[ intro Rew; rewrite &lt;- Rew; exact (H2 x1 H3) | ring ].<br/>
 
430
<code class="keyword">Qed</code>.<br/>
 
431
</code>
 
432
<hr/><a href="index.html">Index</a><hr/><font size="-1">This page has been generated by <a href="http://www.lri.fr/~filliatr/coqdoc/">coqdoc</a></font>
 
433
</body>
 
434
</html>
 
 
b'\\ No newline at end of file'