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

« back to all changes in this revision

Viewing changes to library/Coq.Reals.Ranalysis3.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.Ranalysis3</title>
 
4
</head>
 
5
 
 
6
<body>
 
7
 
 
8
<h1>Library Coq.Reals.Ranalysis3</h1>
 
9
 
 
10
<code>
 
11
<code class="keyword">Require</code> <code class="keyword">Import</code> Rbase.<br/>
 
12
<code class="keyword">Require</code> <code class="keyword">Import</code> Rfunctions.<br/>
 
13
<code class="keyword">Require</code> <code class="keyword">Import</code> Ranalysis1.<br/>
 
14
<code class="keyword">Require</code> <code class="keyword">Import</code> Ranalysis2. Open <code class="keyword">Local</code> Scope R_scope.<br/>
 
15
 
 
16
<br/>
 
17
<code class="keyword">Theorem</code> <a name="derivable_pt_lim_div"></a>derivable_pt_lim_div :<br/>
 
18
&nbsp;forall (f1 f2:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x l1 l2:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
19
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable_pt_lim">derivable_pt_lim</a> f1 x l1 -&gt;<br/>
 
20
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable_pt_lim">derivable_pt_lim</a> f2 x l2 -&gt;<br/>
 
21
&nbsp;&nbsp;&nbsp;f2 x &lt;&gt; 0 -&gt;<br/>
 
22
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable_pt_lim">derivable_pt_lim</a> (f1 / f2) x ((l1 * f2 x - l2 * f1 x) / <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x)).<br/>
 
23
intros.<br/>
 
24
cut (<a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> f2 x);<br/>
 
25
&nbsp;[ intro | unfold derivable_pt in |- *; apply existT with l2; exact H0 ].<br/>
 
26
assert (H2:= <a href="Coq.Reals.Ranalysis2.html#continuous_neq_0">continuous_neq_0</a> _ _ (<a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X) H1).<br/>
 
27
elim H2; clear H2; intros eps_f2 H2.<br/>
 
28
unfold div_fct in |- *.<br/>
 
29
assert (H3:= <a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X).<br/>
 
30
unfold continuity_pt in H3; unfold continue_in in H3; unfold limit1_in in H3;<br/>
 
31
&nbsp;unfold limit_in in H3; unfold dist in H3.<br/>
 
32
simpl in H3; unfold R_dist in H3.<br/>
 
33
elim (H3 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x) / 2));<br/>
 
34
&nbsp;[ idtac<br/>
 
35
&nbsp;| unfold Rdiv in |- *; change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x) * / 2) in |- *;<br/>
 
36
&nbsp;&nbsp;&nbsp;&nbsp;apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
 
37
&nbsp;&nbsp;&nbsp;&nbsp;[ apply Rabs_pos_lt; assumption | apply Rinv_0_lt_compat; prove_sup0 ] ].<br/>
 
38
clear H3; intros alp_f2 H3.<br/>
 
39
cut<br/>
 
40
&nbsp;(forall x0:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
41
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (x0 - x) &lt; alp_f2 -&gt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x0 - f2 x) &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x) / 2).<br/>
 
42
intro H4.<br/>
 
43
cut (forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (a - x) &lt; alp_f2 -&gt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x) / 2 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 a)).<br/>
 
44
intro H5.<br/>
 
45
cut<br/>
 
46
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
47
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2 -&gt; / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a)) &lt; 2 / <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x)).<br/>
 
48
intro Maj.<br/>
 
49
unfold derivable_pt_lim in |- *; intros.<br/>
 
50
elim (H (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * f2 x / 8)));<br/>
 
51
&nbsp;[ idtac<br/>
 
52
&nbsp;| unfold Rdiv in |- *; change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * f2 x * / 8)) in |- *;<br/>
 
53
&nbsp;&nbsp;&nbsp;&nbsp;apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>; repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
54
&nbsp;&nbsp;&nbsp;&nbsp;[ red in |- *; intro H7; rewrite H7 in H6; elim (Rlt_irrefl _ H6)
 
55
    | assumption
 
56
    | apply Rinv_neq_0_compat; discrR ] ].<br/>
 
57
intros alp_f1d H7.<br/>
 
58
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> (f1 x) 0); intro.<br/>
 
59
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> l1 0); intro.<br/>
 
60
cut (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2 alp_f1d));<br/>
 
61
&nbsp;[ intro<br/>
 
62
&nbsp;| repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>;<br/>
 
63
&nbsp;&nbsp;&nbsp;&nbsp;[ apply (cond_pos eps_f2)
 
64
    | elim H3; intros; assumption
 
65
    | apply (cond_pos alp_f1d) ] ].<br/>
 
66
exists (<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2 alp_f1d)) H10).<br/>
 
67
simpl in |- *; intros.<br/>
 
68
assert (H13:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H12 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
69
assert (H14:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H12 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
70
assert (H15:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H13 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
71
assert (H16:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H13 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
72
assert (H17:= H7 _ H11 H15).<br/>
 
73
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; [ idtac | assumption | assumption | apply H2; apply H14 ].<br/>
 
74
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
75
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
76
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
77
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
78
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
79
unfold Rminus in |- *.<br/>
 
80
rewrite &lt;-<br/>
 
81
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
82
&nbsp;.<br/>
 
83
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
84
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
85
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
86
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
87
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
88
cut<br/>
 
89
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
90
&nbsp;&nbsp;eps / 4).<br/>
 
91
cut<br/>
 
92
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
93
&nbsp;&nbsp;eps / 4).<br/>
 
94
intros.<br/>
 
95
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
96
rewrite H8.<br/>
 
97
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
98
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
99
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
100
rewrite H8.<br/>
 
101
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
102
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
103
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
104
rewrite H9.<br/>
 
105
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
106
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
107
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
108
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
109
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2);<br/>
 
110
&nbsp;try assumption || apply H2.<br/>
 
111
apply H14.<br/>
 
112
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
113
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
114
assert (H10:= <a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X).<br/>
 
115
unfold continuity_pt in H10.<br/>
 
116
unfold continue_in in H10.<br/>
 
117
unfold limit1_in in H10.<br/>
 
118
unfold limit_in in H10.<br/>
 
119
unfold dist in H10.<br/>
 
120
simpl in H10.<br/>
 
121
unfold R_dist in H10.<br/>
 
122
elim (H10 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1)))).<br/>
 
123
clear H10; intros alp_f2t2 H10.<br/>
 
124
cut<br/>
 
125
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
126
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; alp_f2t2 -&gt;<br/>
 
127
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a) - f2 x) &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))).<br/>
 
128
intro H11.<br/>
 
129
cut (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f1d) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2 alp_f2t2)).<br/>
 
130
intro.<br/>
 
131
exists (<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f1d) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2 alp_f2t2)) H12).<br/>
 
132
simpl in |- *.<br/>
 
133
intros.<br/>
 
134
assert (H15:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H14 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
135
assert (H16:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H14 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
136
assert (H17:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
137
assert (H18:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
138
assert (H19:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
139
assert (H20:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
140
clear H14 H15 H16.<br/>
 
141
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; try assumption.<br/>
 
142
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
143
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
144
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
145
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
146
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
147
unfold Rminus in |- *.<br/>
 
148
rewrite &lt;-<br/>
 
149
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
150
&nbsp;.<br/>
 
151
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
152
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
153
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
154
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
155
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
156
cut<br/>
 
157
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
158
&nbsp;&nbsp;eps / 4).<br/>
 
159
cut<br/>
 
160
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
161
&nbsp;&nbsp;eps / 4).<br/>
 
162
intros.<br/>
 
163
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
164
rewrite H8.<br/>
 
165
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
166
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
167
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
168
rewrite H8.<br/>
 
169
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
170
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
171
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
172
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
173
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term2">maj_term2</a> x h eps l1 alp_f2 alp_f2t2 eps_f2 f2); try assumption.<br/>
 
174
apply H2; assumption.<br/>
 
175
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
176
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
177
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2); try assumption.<br/>
 
178
apply H2; assumption.<br/>
 
179
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
180
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
181
apply H2; assumption.<br/>
 
182
repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>.<br/>
 
183
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> eps_f2).<br/>
 
184
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f1d).<br/>
 
185
elim H3; intros; assumption.<br/>
 
186
elim H10; intros; assumption.<br/>
 
187
intros.<br/>
 
188
elim H10; intros.<br/>
 
189
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> a 0); intro.<br/>
 
190
rewrite H14; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>.<br/>
 
191
unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>.<br/>
 
192
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>.<br/>
 
193
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
194
unfold Rdiv, Rsqr in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>.<br/>
 
195
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; try assumption.<br/>
 
196
red in |- *; intro; rewrite H15 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6).<br/>
 
197
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; discrR || assumption.<br/>
 
198
apply H13.<br/>
 
199
split.<br/>
 
200
apply <a href="Coq.Reals.Ranalysis2.html#D_x_no_cond">D_x_no_cond</a>; assumption.<br/>
 
201
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
202
change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))) in |- *.<br/>
 
203
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>; unfold Rdiv, Rsqr in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
 
204
&nbsp;repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>.<br/>
 
205
red in |- *; intro; rewrite H11 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6).<br/>
 
206
assumption. <br/>
 
207
assumption.<br/>
 
208
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
209
&nbsp;[ discrR | discrR | discrR | assumption ].<br/>
 
210
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> l1 0); intro.<br/>
 
211
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> l2 0); intro.<br/>
 
212
elim (H0 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * eps / (8 * f1 x))));<br/>
 
213
&nbsp;[ idtac<br/>
 
214
&nbsp;| apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>; unfold Rdiv, Rsqr in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
 
215
&nbsp;&nbsp;&nbsp;&nbsp;repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
216
&nbsp;&nbsp;&nbsp;&nbsp;[ assumption
 
217
    | assumption
 
218
    | red in |- *; intro; rewrite H11 in H6; elim (Rlt_irrefl _ H6)
 
219
    | apply Rinv_neq_0_compat; repeat apply prod_neq_R0; discrR || assumption ] ].<br/>
 
220
intros alp_f2d H12.<br/>
 
221
cut (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d alp_f2d)).<br/>
 
222
intro.<br/>
 
223
exists (<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d alp_f2d)) H11).<br/>
 
224
simpl in |- *.<br/>
 
225
intros.<br/>
 
226
assert (H15:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H14 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
227
assert (H16:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H14 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
228
assert (H17:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
229
assert (H18:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
230
assert (H19:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
231
assert (H20:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
232
clear H15 H16.<br/>
 
233
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; try assumption.<br/>
 
234
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
235
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
236
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
237
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
238
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
239
unfold Rminus in |- *.<br/>
 
240
rewrite &lt;-<br/>
 
241
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
242
&nbsp;.<br/>
 
243
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
244
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
245
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
246
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
247
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
248
cut<br/>
 
249
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
250
&nbsp;&nbsp;eps / 4).<br/>
 
251
cut<br/>
 
252
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
253
&nbsp;&nbsp;eps / 4).<br/>
 
254
intros.<br/>
 
255
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
256
rewrite H10.<br/>
 
257
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
258
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
259
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
260
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
261
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term3">maj_term3</a> x h eps l2 alp_f2 eps_f2 alp_f2d f1 f2); try assumption.<br/>
 
262
apply H2; assumption.<br/>
 
263
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
264
rewrite H9.<br/>
 
265
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
266
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
267
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
268
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
269
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2); assumption || idtac.<br/>
 
270
apply H2; assumption.<br/>
 
271
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
272
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
273
apply H2; assumption.<br/>
 
274
repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>.<br/>
 
275
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> eps_f2).<br/>
 
276
elim H3; intros; assumption.<br/>
 
277
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f1d).<br/>
 
278
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f2d).<br/>
 
279
elim (H0 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * eps / (8 * f1 x))));<br/>
 
280
&nbsp;[ idtac
 
281
 | apply Rabs_pos_lt; unfold Rsqr, Rdiv in |- *;
 
282
    repeat rewrite Rinv_mult_distr; repeat apply prod_neq_R0;
 
283
    try assumption || discrR ].<br/>
 
284
intros alp_f2d H11.<br/>
 
285
assert (H12:= <a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X).<br/>
 
286
unfold continuity_pt in H12.<br/>
 
287
unfold continue_in in H12.<br/>
 
288
unfold limit1_in in H12.<br/>
 
289
unfold limit_in in H12.<br/>
 
290
unfold dist in H12.<br/>
 
291
simpl in H12.<br/>
 
292
unfold R_dist in H12.<br/>
 
293
elim (H12 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2)))).<br/>
 
294
intros alp_f2c H13.<br/>
 
295
cut (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2d alp_f2c))).<br/>
 
296
intro.<br/>
 
297
exists<br/>
 
298
&nbsp;(<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2d alp_f2c)))<br/>
 
299
&nbsp;&nbsp;&nbsp;&nbsp;H14).<br/>
 
300
simpl in |- *; intros.<br/>
 
301
assert (H17:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
302
assert (H18:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H16 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
303
assert (H19:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
304
assert (H20:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H19 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
305
assert (H21:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H19 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
306
assert (H22:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
307
assert (H23:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
308
assert (H24:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
309
clear H16 H17 H18 H19.<br/>
 
310
cut<br/>
 
311
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
312
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; alp_f2c -&gt;<br/>
 
313
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a) - f2 x) &lt;<br/>
 
314
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2))).<br/>
 
315
intro.<br/>
 
316
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; try assumption.<br/>
 
317
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
318
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
319
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
320
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
321
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
322
unfold Rminus in |- *.<br/>
 
323
rewrite &lt;-<br/>
 
324
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
325
&nbsp;.<br/>
 
326
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
327
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
328
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
329
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
330
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
331
cut<br/>
 
332
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
333
&nbsp;&nbsp;eps / 4).<br/>
 
334
cut<br/>
 
335
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
336
&nbsp;&nbsp;eps / 4).<br/>
 
337
intros.<br/>
 
338
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
339
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
340
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term4">maj_term4</a> x h eps l2 alp_f2 alp_f2c eps_f2 f1 f2); try assumption.<br/>
 
341
apply H2; assumption.<br/>
 
342
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
343
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
344
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term3">maj_term3</a> x h eps l2 alp_f2 eps_f2 alp_f2d f1 f2); try assumption.<br/>
 
345
apply H2; assumption.<br/>
 
346
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
347
rewrite H9.<br/>
 
348
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
349
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
350
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
351
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
352
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2); try assumption.<br/>
 
353
apply H2; assumption.<br/>
 
354
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
355
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
356
apply H2; assumption.<br/>
 
357
intros.<br/>
 
358
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> a 0); intro.<br/>
 
359
rewrite H17; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>.<br/>
 
360
unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>.<br/>
 
361
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
362
unfold Rdiv, Rsqr in |- *.<br/>
 
363
repeat rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try assumption.<br/>
 
364
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; try assumption.<br/>
 
365
red in |- *; intro H18; rewrite H18 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6). <br/>
 
366
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
367
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
368
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
369
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption.<br/>
 
370
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption.<br/>
 
371
discrR.<br/>
 
372
discrR.<br/>
 
373
discrR.<br/>
 
374
discrR.<br/>
 
375
discrR.<br/>
 
376
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
377
elim H13; intros.<br/>
 
378
apply H19.<br/>
 
379
split.<br/>
 
380
apply <a href="Coq.Reals.Ranalysis2.html#D_x_no_cond">D_x_no_cond</a>; assumption.<br/>
 
381
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
382
repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>.<br/>
 
383
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> eps_f2).<br/>
 
384
elim H3; intros; assumption.<br/>
 
385
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f1d).<br/>
 
386
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f2d).<br/>
 
387
elim H13; intros; assumption.<br/>
 
388
change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2))) in |- *.<br/>
 
389
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
390
unfold Rsqr, Rdiv in |- *.<br/>
 
391
repeat rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try assumption || discrR.<br/>
 
392
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; try assumption.<br/>
 
393
red in |- *; intro H13; rewrite H13 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6). <br/>
 
394
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
395
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
396
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
397
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption.<br/>
 
398
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption.<br/>
 
399
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
400
red in |- *; intro H11; rewrite H11 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6). <br/>
 
401
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
402
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
403
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
 
404
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption.<br/>
 
405
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> l2 0); intro.<br/>
 
406
assert (H11:= <a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X).<br/>
 
407
unfold continuity_pt in H11.<br/>
 
408
unfold continue_in in H11.<br/>
 
409
unfold limit1_in in H11.<br/>
 
410
unfold limit_in in H11.<br/>
 
411
unfold dist in H11.<br/>
 
412
simpl in H11.<br/>
 
413
unfold R_dist in H11.<br/>
 
414
elim (H11 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1)))).<br/>
 
415
clear H11; intros alp_f2t2 H11.<br/>
 
416
elim (H0 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * eps / (8 * f1 x)))).<br/>
 
417
intros alp_f2d H12.<br/>
 
418
cut (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2d alp_f2t2))).<br/>
 
419
intro.<br/>
 
420
exists<br/>
 
421
&nbsp;(<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a><br/>
 
422
&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2d alp_f2t2))) H13).<br/>
 
423
simpl in |- *.<br/>
 
424
intros.<br/>
 
425
cut<br/>
 
426
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
427
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; alp_f2t2 -&gt;<br/>
 
428
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a) - f2 x) &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))).<br/>
 
429
intro.<br/>
 
430
assert (H17:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
431
assert (H18:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H15 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
432
assert (H19:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
433
assert (H20:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
434
assert (H21:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
435
assert (H22:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
436
assert (H23:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H21 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
437
assert (H24:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H21 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
438
clear H15 H17 H18 H21.<br/>
 
439
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; try assumption.<br/>
 
440
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
441
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
442
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
443
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
444
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
445
unfold Rminus in |- *.<br/>
 
446
rewrite &lt;-<br/>
 
447
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
448
&nbsp;.<br/>
 
449
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
450
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
451
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
452
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
453
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
454
cut<br/>
 
455
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
456
&nbsp;&nbsp;eps / 4).<br/>
 
457
cut<br/>
 
458
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
459
&nbsp;&nbsp;eps / 4).<br/>
 
460
intros.<br/>
 
461
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
462
rewrite H10.<br/>
 
463
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a> || rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
464
rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
 
465
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ assumption | apply Rinv_0_lt_compat; prove_sup ].<br/>
 
466
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
467
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term3">maj_term3</a> x h eps l2 alp_f2 eps_f2 alp_f2d f1 f2); try assumption.<br/>
 
468
apply H2; assumption.<br/>
 
469
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
470
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
471
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term2">maj_term2</a> x h eps l1 alp_f2 alp_f2t2 eps_f2 f2); try assumption.<br/>
 
472
apply H2; assumption.<br/>
 
473
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
474
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
475
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2); try assumption.<br/>
 
476
apply H2; assumption.<br/>
 
477
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
478
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
479
apply H2; assumption.<br/>
 
480
intros.<br/>
 
481
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> a 0); intro.<br/>
 
482
rewrite H17; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>;<br/>
 
483
&nbsp;rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>.<br/>
 
484
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
485
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try discrR || assumption.<br/>
 
486
unfold Rsqr in |- *.<br/>
 
487
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
488
&nbsp;assumption ||<br/>
 
489
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
490
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
491
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H18; rewrite H18 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
492
elim H11; intros.<br/>
 
493
apply H19.<br/>
 
494
split.<br/>
 
495
apply <a href="Coq.Reals.Ranalysis2.html#D_x_no_cond">D_x_no_cond</a>; assumption.<br/>
 
496
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
497
repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>.<br/>
 
498
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> eps_f2).<br/>
 
499
elim H3; intros; assumption.<br/>
 
500
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f1d). <br/>
 
501
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f2d).<br/>
 
502
elim H11; intros; assumption.<br/>
 
503
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
504
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try discrR || assumption.<br/>
 
505
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
506
&nbsp;assumption ||<br/>
 
507
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
508
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
509
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H12; rewrite H12 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
510
change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))) in |- *.<br/>
 
511
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
512
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try discrR || assumption.<br/>
 
513
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
514
&nbsp;assumption ||<br/>
 
515
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
516
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
517
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H12; rewrite H12 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
518
elim (H0 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * eps / (8 * f1 x)))).<br/>
 
519
intros alp_f2d H11.<br/>
 
520
assert (H12:= <a href="Coq.Reals.Ranalysis1.html#derivable_continuous_pt">derivable_continuous_pt</a> _ _ X).<br/>
 
521
unfold continuity_pt in H12.<br/>
 
522
unfold continue_in in H12.<br/>
 
523
unfold limit1_in in H12.<br/>
 
524
unfold limit_in in H12.<br/>
 
525
unfold dist in H12.<br/>
 
526
simpl in H12.<br/>
 
527
unfold R_dist in H12.<br/>
 
528
elim (H12 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2)))).<br/>
 
529
intros alp_f2c H13.<br/>
 
530
elim (H12 (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1)))).<br/>
 
531
intros alp_f2t2 H14.<br/>
 
532
cut<br/>
 
533
&nbsp;(0 &lt;<br/>
 
534
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d alp_f2d))<br/>
 
535
&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2c alp_f2t2)).<br/>
 
536
intro.<br/>
 
537
exists<br/>
 
538
&nbsp;(<a href="Coq.Reals.RIneq.html#mkposreal">mkposreal</a><br/>
 
539
&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2) (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f1d alp_f2d))<br/>
 
540
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> alp_f2c alp_f2t2)) H15).<br/>
 
541
simpl in |- *.<br/>
 
542
intros.<br/>
 
543
assert (H18:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
544
assert (H19:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H17 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
545
assert (H20:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
546
assert (H21:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H18 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
547
assert (H22:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H19 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
548
assert (H23:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H19 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
549
assert (H24:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H20 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
550
assert (H25:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H20 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
551
assert (H26:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H21 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)).<br/>
 
552
assert (H27:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H21 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)).<br/>
 
553
clear H17 H18 H19 H20 H21.<br/>
 
554
cut<br/>
 
555
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
556
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; alp_f2t2 -&gt;<br/>
 
557
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a) - f2 x) &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))).<br/>
 
558
cut<br/>
 
559
&nbsp;(forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
560
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> a &lt; alp_f2c -&gt;<br/>
 
561
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a) - f2 x) &lt;<br/>
 
562
&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2))).<br/>
 
563
intros.<br/>
 
564
rewrite <a href="Coq.Reals.Ranalysis2.html#formule">formule</a>; try assumption.<br/>
 
565
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
566
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h) * ((f1 (x + h) - f1 x) / h - l1)) +<br/>
 
567
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h)) * (f2 x - f2 (x + h))) +<br/>
 
568
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) - f2 x) / h - l2)) +<br/>
 
569
&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h)) * (f2 (x + h) - f2 x))).<br/>
 
570
unfold Rminus in |- *.<br/>
 
571
rewrite &lt;-<br/>
 
572
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f1 x / (f2 x * f2 (x + h)) * ((f2 (x + h) + - f2 x) / h + - l2)))<br/>
 
573
&nbsp;.<br/>
 
574
apply <a href="Coq.Reals.Ranalysis2.html#Rabs_4">Rabs_4</a>.<br/>
 
575
repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
576
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (eps / 4 + eps / 4 + eps / 4 + eps / 4).<br/>
 
577
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (/ f2 (x + h)) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f1 (x + h) - f1 x) / h - l1) &lt; eps / 4).<br/>
 
578
cut (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x - f2 (x + h)) &lt; eps / 4).<br/>
 
579
cut<br/>
 
580
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f1 x / (f2 x * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> ((f2 (x + h) - f2 x) / h - l2) &lt;<br/>
 
581
&nbsp;&nbsp;eps / 4).<br/>
 
582
cut<br/>
 
583
&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l2 * f1 x / (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 (x + h))) * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + h) - f2 x) &lt;<br/>
 
584
&nbsp;&nbsp;eps / 4).<br/>
 
585
intros.<br/>
 
586
apply <a href="Coq.Reals.Ranalysis2.html#Rlt_4">Rlt_4</a>; assumption.<br/>
 
587
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
588
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term4">maj_term4</a> x h eps l2 alp_f2 alp_f2c eps_f2 f1 f2); try assumption.<br/>
 
589
apply H2; assumption.<br/>
 
590
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
591
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
592
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term3">maj_term3</a> x h eps l2 alp_f2 eps_f2 alp_f2d f1 f2); try assumption.<br/>
 
593
apply H2; assumption.<br/>
 
594
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
595
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
596
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term2">maj_term2</a> x h eps l1 alp_f2 alp_f2t2 eps_f2 f2); try assumption.<br/>
 
597
apply H2; assumption.<br/>
 
598
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
599
rewrite &lt;- <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>.<br/>
 
600
apply (<a href="Coq.Reals.Ranalysis2.html#maj_term1">maj_term1</a> x h eps l1 alp_f2 eps_f2 alp_f1d f1 f2); try assumption.<br/>
 
601
apply H2; assumption.<br/>
 
602
apply <a href="Coq.Reals.Ranalysis2.html#Rmin_2">Rmin_2</a>; assumption.<br/>
 
603
right; symmetry  in |- *; apply <a href="Coq.Reals.Ranalysis2.html#quadruple_var">quadruple_var</a>.<br/>
 
604
apply H2; assumption.<br/>
 
605
intros.<br/>
 
606
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> a 0); intro.<br/>
 
607
rewrite H18; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>;<br/>
 
608
&nbsp;rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
609
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>.<br/>
 
610
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
611
&nbsp;assumption ||<br/>
 
612
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
613
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
614
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H28; rewrite H28 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
615
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
616
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
617
assumption.<br/>
 
618
elim H13; intros.<br/>
 
619
apply H20.<br/>
 
620
split.<br/>
 
621
apply <a href="Coq.Reals.Ranalysis2.html#D_x_no_cond">D_x_no_cond</a>; assumption.<br/>
 
622
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
623
intros.<br/>
 
624
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> a 0); intro.<br/>
 
625
rewrite H18; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>;<br/>
 
626
&nbsp;rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>; apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
627
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>.<br/>
 
628
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
629
&nbsp;assumption ||<br/>
 
630
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
631
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
632
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H28; rewrite H28 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
633
discrR.<br/>
 
634
assumption.<br/>
 
635
elim H14; intros.<br/>
 
636
apply H20.<br/>
 
637
split.<br/>
 
638
unfold D_x, no_cond in |- *; split.<br/>
 
639
trivial.<br/>
 
640
apply <a href="Coq.Reals.RIneq.html#Rminus_not_eq_right">Rminus_not_eq_right</a>.<br/>
 
641
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
642
replace (x + a - x) with a; [ assumption | ring ].<br/>
 
643
repeat apply <a href="Coq.Reals.Ranalysis2.html#Rmin_pos">Rmin_pos</a>.<br/>
 
644
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> eps_f2).<br/>
 
645
elim H3; intros; assumption.<br/>
 
646
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f1d).<br/>
 
647
apply (<a href="Coq.Reals.RIneq.html#cond_pos">cond_pos</a> alp_f2d).<br/>
 
648
elim H13; intros; assumption.<br/>
 
649
elim H14; intros; assumption.<br/>
 
650
change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (eps * <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) / (8 * l1))) in |- *; apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
651
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>; try discrR || assumption.<br/>
 
652
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
653
&nbsp;assumption ||<br/>
 
654
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
655
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
656
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H14; rewrite H14 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
657
change (0 &lt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x) * f2 x * eps / (8 * f1 x * l2))) in |- *;<br/>
 
658
&nbsp;apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
659
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>.<br/>
 
660
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
661
&nbsp;assumption ||<br/>
 
662
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
663
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
664
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H13; rewrite H13 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
665
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
666
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>; [ discrR | assumption ].<br/>
 
667
assumption.<br/>
 
668
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>.<br/>
 
669
unfold Rdiv, Rsqr in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>;<br/>
 
670
&nbsp;[ idtac | discrR | assumption ].<br/>
 
671
repeat apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
 
672
&nbsp;assumption ||<br/>
 
673
&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; assumption) ||<br/>
 
674
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR) ||<br/>
 
675
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(red in |- *; intro H11; rewrite H11 in H6; elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H6)).<br/>
 
676
intros.<br/>
 
677
unfold Rdiv in |- *.<br/>
 
678
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_reg_l">Rmult_lt_reg_l</a> with (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 (x + a))).<br/>
 
679
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>; apply H2.<br/>
 
680
apply <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> with (<a href="Coq.Reals.Rbasic_fun.html#Rmin">Rmin</a> eps_f2 alp_f2).<br/>
 
681
assumption.<br/>
 
682
apply <a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a>.<br/>
 
683
rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>.<br/>
 
684
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_reg_l">Rmult_lt_reg_l</a> with (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x)).<br/>
 
685
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>; assumption.<br/>
 
686
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>.<br/>
 
687
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x))).<br/>
 
688
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>.<br/>
 
689
rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>.<br/>
 
690
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>.<br/>
 
691
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_reg_l">Rmult_lt_reg_l</a> with (/ 2).<br/>
 
692
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; prove_sup0.<br/>
 
693
repeat rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2)).<br/>
 
694
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>.<br/>
 
695
rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>.<br/>
 
696
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>.<br/>
 
697
unfold Rdiv in H5; apply H5.<br/>
 
698
replace (x + a - x) with a.<br/>
 
699
assert (H7:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H6 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_r">Rmin_r</a> _ _)); assumption.<br/>
 
700
ring.<br/>
 
701
discrR.<br/>
 
702
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>; assumption.<br/>
 
703
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>; apply H2.<br/>
 
704
assert (H7:= <a href="Coq.Reals.RIneq.html#Rlt_le_trans">Rlt_le_trans</a> _ _ _ H6 (<a href="Coq.Reals.Rbasic_fun.html#Rmin_l">Rmin_l</a> _ _)); assumption.<br/>
 
705
intros.<br/>
 
706
assert (H6:= H4 a H5).<br/>
 
707
rewrite &lt;- (<a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a> (f2 a - f2 x)) in H6.<br/>
 
708
rewrite <a href="Coq.Reals.RIneq.html#Ropp_minus_distr">Ropp_minus_distr</a> in H6.<br/>
 
709
assert (H7:= <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> _ _ _ (<a href="Coq.Reals.Rbasic_fun.html#Rabs_triang_inv">Rabs_triang_inv</a> _ _) H6).<br/>
 
710
apply <a href="Coq.Reals.RIneq.html#Rplus_lt_reg_r">Rplus_lt_reg_r</a> with (- <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 a) + <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 x) / 2).<br/>
 
711
rewrite <a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a>.<br/>
 
712
rewrite &lt;- <a href="Coq.Reals.RIneq.html#double_var">double_var</a>.<br/>
 
713
do 2 rewrite (<a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a> (- <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (f2 a))).<br/>
 
714
rewrite <a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a>; rewrite <a href="Coq.Reals.RIneq.html#Rplus_opp_l">Rplus_opp_l</a>; rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>.<br/>
 
715
unfold Rminus in H7; assumption.<br/>
 
716
intros.<br/>
 
717
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> x x0); intro.<br/>
 
718
rewrite &lt;- H5; unfold Rminus in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_R0">Rabs_R0</a>;<br/>
 
719
&nbsp;unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
 
720
&nbsp;[ apply Rabs_pos_lt; assumption | apply Rinv_0_lt_compat; prove_sup0 ].<br/>
 
721
elim H3; intros.<br/>
 
722
apply H7.<br/>
 
723
split.<br/>
 
724
unfold D_x, no_cond in |- *; split.<br/>
 
725
trivial.<br/>
 
726
assumption.<br/>
 
727
assumption.<br/>
 
728
<code class="keyword">Qed</code>.<br/>
 
729
 
 
730
<br/>
 
731
<code class="keyword">Lemma</code> <a name="derivable_pt_div"></a>derivable_pt_div :<br/>
 
732
&nbsp;forall (f1 f2:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
733
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> f1 x -&gt;<br/>
 
734
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> f2 x -&gt; f2 x &lt;&gt; 0 -&gt; <a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> (f1 / f2) x.<br/>
 
735
unfold derivable_pt in |- *.<br/>
 
736
intros.<br/>
 
737
elim X; intros.<br/>
 
738
elim X0; intros.<br/>
 
739
apply <a href="Coq.Init.Specif.html#existT">existT</a> with ((x0 * f2 x - x1 * f1 x) / <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x)).<br/>
 
740
apply <a href="Coq.Reals.Ranalysis3.html#derivable_pt_lim_div">derivable_pt_lim_div</a>; assumption.<br/>
 
741
<code class="keyword">Qed</code>.<br/>
 
742
 
 
743
<br/>
 
744
<code class="keyword">Lemma</code> <a name="derivable_div"></a>derivable_div :<br/>
 
745
&nbsp;forall f1 f2:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
746
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable">derivable</a> f1 -&gt;<br/>
 
747
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derivable">derivable</a> f2 -&gt; (forall x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, f2 x &lt;&gt; 0) -&gt; <a href="Coq.Reals.Ranalysis1.html#derivable">derivable</a> (f1 / f2).<br/>
 
748
unfold derivable in |- *; intros.<br/>
 
749
apply (<a href="Coq.Reals.Ranalysis3.html#derivable_pt_div">derivable_pt_div</a> _ _ _ (X x) (X0 x) (H x)).<br/>
 
750
<code class="keyword">Qed</code>.<br/>
 
751
 
 
752
<br/>
 
753
<code class="keyword">Lemma</code> <a name="derive_pt_div"></a>derive_pt_div :<br/>
 
754
&nbsp;forall (f1 f2:<a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) (pr1:<a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> f1 x) <br/>
 
755
&nbsp;&nbsp;&nbsp;(pr2:<a href="Coq.Reals.Ranalysis1.html#derivable_pt">derivable_pt</a> f2 x) (na:f2 x &lt;&gt; 0),<br/>
 
756
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Ranalysis1.html#derive_pt">derive_pt</a> (f1 / f2) x (<a href="Coq.Reals.Ranalysis3.html#derivable_pt_div">derivable_pt_div</a> _ _ _ pr1 pr2 na) =<br/>
 
757
&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Ranalysis1.html#derive_pt">derive_pt</a> f1 x pr1 * f2 x - <a href="Coq.Reals.Ranalysis1.html#derive_pt">derive_pt</a> f2 x pr2 * f1 x) / <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (f2 x).<br/>
 
758
intros.<br/>
 
759
assert (H:= <a href="Coq.Reals.Ranalysis1.html#derivable_derive">derivable_derive</a> f1 x pr1).<br/>
 
760
assert (H0:= <a href="Coq.Reals.Ranalysis1.html#derivable_derive">derivable_derive</a> f2 x pr2).<br/>
 
761
assert<br/>
 
762
&nbsp;(H1:= <a href="Coq.Reals.Ranalysis1.html#derivable_derive">derivable_derive</a> (f1 / f2)%F x (<a href="Coq.Reals.Ranalysis3.html#derivable_pt_div">derivable_pt_div</a> _ _ _ pr1 pr2 na)).<br/>
 
763
elim H; clear H; intros l1 H.<br/>
 
764
elim H0; clear H0; intros l2 H0.<br/>
 
765
elim H1; clear H1; intros l H1.<br/>
 
766
rewrite H; rewrite H0; apply <a href="Coq.Reals.Ranalysis1.html#derive_pt_eq_0">derive_pt_eq_0</a>.<br/>
 
767
assert (H3:= <a href="Coq.Init.Specif.html#projT2">projT2</a> pr1).<br/>
 
768
unfold derive_pt in H; rewrite H in H3.<br/>
 
769
assert (H4:= <a href="Coq.Init.Specif.html#projT2">projT2</a> pr2).<br/>
 
770
unfold derive_pt in H0; rewrite H0 in H4.<br/>
 
771
apply <a href="Coq.Reals.Ranalysis3.html#derivable_pt_lim_div">derivable_pt_lim_div</a>; assumption.<br/>
 
772
<code class="keyword">Qed</code>.</code>
 
773
<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>
 
774
</body>
 
775
</html>
 
 
b'\\ No newline at end of file'