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

« back to all changes in this revision

Viewing changes to library/Coq.Reals.SeqSeries.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.SeqSeries</title>
 
4
</head>
 
5
 
 
6
<body>
 
7
 
 
8
<h1>Library Coq.Reals.SeqSeries</h1>
 
9
 
 
10
<code>
 
11
&nbsp;<br/>
 
12
<code class="keyword">Require</code> <code class="keyword">Import</code> Rbase.<br/>
 
13
<code class="keyword">Require</code> <code class="keyword">Import</code> Rfunctions.<br/>
 
14
<code class="keyword">Require</code> <code class="keyword">Import</code> Max.<br/>
 
15
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Rseries.html">Rseries</a>.<br/>
 
16
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.SeqProp.html">SeqProp</a>.<br/>
 
17
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Rcomplete.html">Rcomplete</a>.<br/>
 
18
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.PartSum.html">PartSum</a>.<br/>
 
19
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.AltSeries.html">AltSeries</a>.<br/>
 
20
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Binomial.html">Binomial</a>.<br/>
 
21
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Rsigma.html">Rsigma</a>.<br/>
 
22
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Rprod.html">Rprod</a>.<br/>
 
23
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Cauchy_prod.html">Cauchy_prod</a>.<br/>
 
24
<code class="keyword">Require</code> <code class="keyword">Export</code> <a href="Coq.Reals.Alembert.html">Alembert</a>.<br/>
 
25
Open <code class="keyword">Local</code> Scope R_scope.<br/>
 
26
 
 
27
<br/>
 
28
<code class="keyword">Lemma</code> <a name="sum_maj1"></a>sum_maj1 :<br/>
 
29
&nbsp;forall (fn:<a href="Coq.Init.Datatypes.html#nat">nat</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (An:<a href="Coq.Init.Datatypes.html#nat">nat</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (x l1 l2:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) <br/>
 
30
&nbsp;&nbsp;&nbsp;(N:<a href="Coq.Init.Datatypes.html#nat">nat</a>),<br/>
 
31
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.PartSum.html#SP">SP</a> fn n x) l1 -&gt;<br/>
 
32
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n) l2 -&gt;<br/>
 
33
&nbsp;&nbsp;&nbsp;(forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (fn n x) &lt;= An n) -&gt;<br/>
 
34
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (l1 - <a href="Coq.Reals.PartSum.html#SP">SP</a> fn N x) &lt;= l2 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N.<br/>
 
35
intros;<br/>
 
36
&nbsp;cut<br/>
 
37
&nbsp;&nbsp;(<a href="Coq.Init.Specif.html#sigT">sigT</a><br/>
 
38
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun l:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt;<br/>
 
39
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> <a href="Coq.NArith.BinNat.html#N">N</a> + l)%nat x) n) l)).<br/>
 
40
intro;<br/>
 
41
&nbsp;cut<br/>
 
42
&nbsp;&nbsp;(<a href="Coq.Init.Specif.html#sigT">sigT</a><br/>
 
43
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun l:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt;<br/>
 
44
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n) l)).<br/>
 
45
intro; elim X; intros l1N H2.<br/>
 
46
elim X0; intros l2N H3.<br/>
 
47
cut (l1 - <a href="Coq.Reals.PartSum.html#SP">SP</a> fn N x = l1N).<br/>
 
48
intro; cut (l2 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N = l2N).<br/>
 
49
intro; rewrite H4; rewrite H5.<br/>
 
50
apply <a href="Coq.Reals.PartSum.html#sum_cv_maj">sum_cv_maj</a> with<br/>
 
51
&nbsp;(fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) (fun (l:<a href="Coq.Init.Datatypes.html#nat">nat</a>) (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) x.<br/>
 
52
unfold SP in |- *; apply H2.<br/>
 
53
apply H3.<br/>
 
54
intros; apply H1.<br/>
 
55
symmetry  in |- *; eapply <a href="Coq.Reals.SeqProp.html#UL_sequence">UL_sequence</a>.<br/>
 
56
apply H3.<br/>
 
57
unfold Un_cv in H0; unfold Un_cv in |- *; intros; elim (H0 eps H5);<br/>
 
58
&nbsp;intros N0 H6.<br/>
 
59
unfold R_dist in H6; exists N0; intros.<br/>
 
60
unfold R_dist in |- *;<br/>
 
61
&nbsp;replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n - (l2 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N))<br/>
 
62
&nbsp;&nbsp;with (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N + <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n - l2);<br/>
 
63
&nbsp;[ idtac | ring ].<br/>
 
64
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N + <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n) with<br/>
 
65
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
66
apply H6; unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with n.<br/>
 
67
apply H7.<br/>
 
68
apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (N + n)%nat.<br/>
 
69
apply <a href="Coq.Arith.Plus.html#le_plus_r">le_plus_r</a>.<br/>
 
70
apply <a href="Coq.Arith.Le.html#le_n_Sn">le_n_Sn</a>.<br/>
 
71
cut (0 &lt;= N)%nat.<br/>
 
72
cut (N &lt; <a href="Coq.Init.Datatypes.html#S">S</a> (N + n))%nat.<br/>
 
73
intros; assert (H10:= <a href="Coq.Reals.Rsigma.html#sigma_split">sigma_split</a> An H9 H8).<br/>
 
74
unfold sigma in H10.<br/>
 
75
do 2 rewrite &lt;- <a href="Coq.Arith.Minus.html#minus_n_O">minus_n_O</a> in H10.<br/>
 
76
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))) with<br/>
 
77
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (0 + k)%nat) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
78
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N) with (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (0 + k)%nat) N).<br/>
 
79
cut ((<a href="Coq.Init.Datatypes.html#S">S</a> (N + n) - <a href="Coq.Init.Datatypes.html#S">S</a> N)%nat = n).<br/>
 
80
intro; rewrite H11 in H10.<br/>
 
81
apply H10.<br/>
 
82
apply <a href="Coq.Reals.RIneq.html#INR_eq">INR_eq</a>; rewrite <a href="Coq.Reals.RIneq.html#minus_INR">minus_INR</a>.<br/>
 
83
do 2 rewrite <a href="Coq.Reals.RIneq.html#S_INR">S_INR</a>; rewrite <a href="Coq.Reals.RIneq.html#plus_INR">plus_INR</a>; ring.<br/>
 
84
apply <a href="Coq.Arith.Le.html#le_n_S">le_n_S</a>; apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
85
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
86
reflexivity.<br/>
 
87
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
88
reflexivity.<br/>
 
89
apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>; apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
90
apply <a href="Coq.Arith.Le.html#le_O_n">le_O_n</a>.<br/>
 
91
symmetry  in |- *; eapply <a href="Coq.Reals.SeqProp.html#UL_sequence">UL_sequence</a>.<br/>
 
92
apply H2.<br/>
 
93
unfold Un_cv in H; unfold Un_cv in |- *; intros.<br/>
 
94
elim (H eps H4); intros N0 H5.<br/>
 
95
unfold R_dist in H5; exists N0; intros.<br/>
 
96
unfold R_dist, SP in |- *;<br/>
 
97
&nbsp;replace<br/>
 
98
&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n -<br/>
 
99
&nbsp;&nbsp;&nbsp;(l1 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N)) with<br/>
 
100
&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N +<br/>
 
101
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n - l1); <br/>
 
102
&nbsp;[ idtac | ring ].<br/>
 
103
replace<br/>
 
104
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N +<br/>
 
105
&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n) with<br/>
 
106
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
107
unfold SP in H5; apply H5; unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with n.<br/>
 
108
apply H6.<br/>
 
109
apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (N + n)%nat.<br/>
 
110
apply <a href="Coq.Arith.Plus.html#le_plus_r">le_plus_r</a>.<br/>
 
111
apply <a href="Coq.Arith.Le.html#le_n_Sn">le_n_Sn</a>.<br/>
 
112
cut (0 &lt;= N)%nat.<br/>
 
113
cut (N &lt; <a href="Coq.Init.Datatypes.html#S">S</a> (N + n))%nat.<br/>
 
114
intros; assert (H9:= <a href="Coq.Reals.Rsigma.html#sigma_split">sigma_split</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) H8 H7).<br/>
 
115
unfold sigma in H9.<br/>
 
116
do 2 rewrite &lt;- <a href="Coq.Arith.Minus.html#minus_n_O">minus_n_O</a> in H9.<br/>
 
117
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))) with<br/>
 
118
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (0 + k)%nat x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
119
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N) with<br/>
 
120
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (0 + k)%nat x) N).<br/>
 
121
cut ((<a href="Coq.Init.Datatypes.html#S">S</a> (N + n) - <a href="Coq.Init.Datatypes.html#S">S</a> N)%nat = n).<br/>
 
122
intro; rewrite H10 in H9.<br/>
 
123
apply H9.<br/>
 
124
apply <a href="Coq.Reals.RIneq.html#INR_eq">INR_eq</a>; rewrite <a href="Coq.Reals.RIneq.html#minus_INR">minus_INR</a>.<br/>
 
125
do 2 rewrite <a href="Coq.Reals.RIneq.html#S_INR">S_INR</a>; rewrite <a href="Coq.Reals.RIneq.html#plus_INR">plus_INR</a>; ring.<br/>
 
126
apply <a href="Coq.Arith.Le.html#le_n_S">le_n_S</a>; apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
127
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
128
reflexivity.<br/>
 
129
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
130
reflexivity.<br/>
 
131
apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>.<br/>
 
132
apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
133
apply <a href="Coq.Arith.Le.html#le_O_n">le_O_n</a>.<br/>
 
134
apply <a href="Coq.Init.Specif.html#existT">existT</a> with (l2 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N).<br/>
 
135
unfold Un_cv in H0; unfold Un_cv in |- *; intros.<br/>
 
136
elim (H0 eps H2); intros N0 H3.<br/>
 
137
unfold R_dist in H3; exists N0; intros.<br/>
 
138
unfold R_dist in |- *;<br/>
 
139
&nbsp;replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n - (l2 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N))<br/>
 
140
&nbsp;&nbsp;with (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N + <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n - l2);<br/>
 
141
&nbsp;[ idtac | ring ].<br/>
 
142
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N + <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat) n) with<br/>
 
143
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
144
apply H3; unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with n.<br/>
 
145
apply H4.<br/>
 
146
apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (N + n)%nat.<br/>
 
147
apply <a href="Coq.Arith.Plus.html#le_plus_r">le_plus_r</a>.<br/>
 
148
apply <a href="Coq.Arith.Le.html#le_n_Sn">le_n_Sn</a>.<br/>
 
149
cut (0 &lt;= N)%nat.<br/>
 
150
cut (N &lt; <a href="Coq.Init.Datatypes.html#S">S</a> (N + n))%nat.<br/>
 
151
intros; assert (H7:= <a href="Coq.Reals.Rsigma.html#sigma_split">sigma_split</a> An H6 H5).<br/>
 
152
unfold sigma in H7.<br/>
 
153
do 2 rewrite &lt;- <a href="Coq.Arith.Minus.html#minus_n_O">minus_n_O</a> in H7.<br/>
 
154
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))) with<br/>
 
155
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (0 + k)%nat) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
156
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N) with (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (0 + k)%nat) N).<br/>
 
157
cut ((<a href="Coq.Init.Datatypes.html#S">S</a> (N + n) - <a href="Coq.Init.Datatypes.html#S">S</a> N)%nat = n).<br/>
 
158
intro; rewrite H8 in H7.<br/>
 
159
apply H7.<br/>
 
160
apply <a href="Coq.Reals.RIneq.html#INR_eq">INR_eq</a>; rewrite <a href="Coq.Reals.RIneq.html#minus_INR">minus_INR</a>.<br/>
 
161
do 2 rewrite <a href="Coq.Reals.RIneq.html#S_INR">S_INR</a>; rewrite <a href="Coq.Reals.RIneq.html#plus_INR">plus_INR</a>; ring.<br/>
 
162
apply <a href="Coq.Arith.Le.html#le_n_S">le_n_S</a>; apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
163
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
164
reflexivity.<br/>
 
165
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
166
reflexivity.<br/>
 
167
apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>.<br/>
 
168
apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
169
apply <a href="Coq.Arith.Le.html#le_O_n">le_O_n</a>.<br/>
 
170
apply <a href="Coq.Init.Specif.html#existT">existT</a> with (l1 - <a href="Coq.Reals.PartSum.html#SP">SP</a> fn N x).<br/>
 
171
unfold Un_cv in H; unfold Un_cv in |- *; intros.<br/>
 
172
elim (H eps H2); intros N0 H3.<br/>
 
173
unfold R_dist in H3; exists N0; intros.<br/>
 
174
unfold R_dist, SP in |- *.<br/>
 
175
replace<br/>
 
176
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n -<br/>
 
177
&nbsp;&nbsp;(l1 - <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N)) with<br/>
 
178
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N +<br/>
 
179
&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n - l1); <br/>
 
180
&nbsp;[ idtac | ring ].<br/>
 
181
replace<br/>
 
182
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N +<br/>
 
183
&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun l:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (<a href="Coq.Init.Datatypes.html#S">S</a> N + l)%nat x) n) with<br/>
 
184
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
185
unfold SP in H3; apply H3.<br/>
 
186
unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with n.<br/>
 
187
apply H4.<br/>
 
188
apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (N + n)%nat.<br/>
 
189
apply <a href="Coq.Arith.Plus.html#le_plus_r">le_plus_r</a>.<br/>
 
190
apply <a href="Coq.Arith.Le.html#le_n_Sn">le_n_Sn</a>.<br/>
 
191
cut (0 &lt;= N)%nat.<br/>
 
192
cut (N &lt; <a href="Coq.Init.Datatypes.html#S">S</a> (N + n))%nat.<br/>
 
193
intros; assert (H7:= <a href="Coq.Reals.Rsigma.html#sigma_split">sigma_split</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) H6 H5).<br/>
 
194
unfold sigma in H7.<br/>
 
195
do 2 rewrite &lt;- <a href="Coq.Arith.Minus.html#minus_n_O">minus_n_O</a> in H7.<br/>
 
196
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))) with<br/>
 
197
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (0 + k)%nat x) (<a href="Coq.Init.Datatypes.html#S">S</a> (N + n))).<br/>
 
198
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn k x) N) with<br/>
 
199
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; fn (0 + k)%nat x) N).<br/>
 
200
cut ((<a href="Coq.Init.Datatypes.html#S">S</a> (N + n) - <a href="Coq.Init.Datatypes.html#S">S</a> N)%nat = n).<br/>
 
201
intro; rewrite H8 in H7.<br/>
 
202
apply H7.<br/>
 
203
apply <a href="Coq.Reals.RIneq.html#INR_eq">INR_eq</a>; rewrite <a href="Coq.Reals.RIneq.html#minus_INR">minus_INR</a>.<br/>
 
204
do 2 rewrite <a href="Coq.Reals.RIneq.html#S_INR">S_INR</a>; rewrite <a href="Coq.Reals.RIneq.html#plus_INR">plus_INR</a>; ring.<br/>
 
205
apply <a href="Coq.Arith.Le.html#le_n_S">le_n_S</a>; apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
206
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
207
reflexivity.<br/>
 
208
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros.<br/>
 
209
reflexivity.<br/>
 
210
apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>.<br/>
 
211
apply <a href="Coq.Arith.Plus.html#le_plus_l">le_plus_l</a>.<br/>
 
212
apply <a href="Coq.Arith.Le.html#le_O_n">le_O_n</a>.<br/>
 
213
<code class="keyword">Qed</code>.<br/>
 
214
 
 
215
<br/>
 
216
<code class="keyword">Lemma</code> <a name="Rseries_CV_comp"></a>Rseries_CV_comp :<br/>
 
217
&nbsp;forall An Bn:<a href="Coq.Init.Datatypes.html#nat">nat</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>,<br/>
 
218
&nbsp;&nbsp;&nbsp;(forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, 0 &lt;= An n &lt;= Bn n) -&gt;<br/>
 
219
&nbsp;&nbsp;&nbsp;<a href="Coq.Init.Specif.html#sigT">sigT</a> (fun l:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun N:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn N) l) -&gt;<br/>
 
220
&nbsp;&nbsp;&nbsp;<a href="Coq.Init.Specif.html#sigT">sigT</a> (fun l:<a href="Coq.Reals.Rdefinitions.html#R">R</a> =&gt; <a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun N:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An N) l).<br/>
 
221
intros; apply <a href="Coq.Reals.PartSum.html#cv_cauchy_2">cv_cauchy_2</a>.<br/>
 
222
assert (H0:= <a href="Coq.Reals.PartSum.html#cv_cauchy_1">cv_cauchy_1</a> _ X).<br/>
 
223
unfold Cauchy_crit_series in |- *; unfold Cauchy_crit in |- *.<br/>
 
224
intros; elim (H0 eps H1); intros.<br/>
 
225
exists x; intros.<br/>
 
226
cut<br/>
 
227
&nbsp;(<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n) (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An m) &lt;=<br/>
 
228
&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn n) (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn m)).<br/>
 
229
intro; apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with (<a href="Coq.Reals.Rfunctions.html#R_dist">R_dist</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn n) (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn m)).<br/>
 
230
assumption.<br/>
 
231
apply H2; assumption.<br/>
 
232
assert (H5:= <a href="Coq.Arith.Compare_dec.html#lt_eq_lt_dec">lt_eq_lt_dec</a> n m).<br/>
 
233
elim H5; intro.<br/>
 
234
elim a; intro.<br/>
 
235
rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> An n m); [ idtac | assumption ].<br/>
 
236
rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> Bn n m); [ idtac | assumption ].<br/>
 
237
unfold R_dist in |- *; unfold Rminus in |- *; do 2 rewrite <a href="Coq.Reals.RIneq.html#Ropp_plus_distr">Ropp_plus_distr</a>;<br/>
 
238
&nbsp;do 2 rewrite &lt;- <a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a>; do 2 rewrite <a href="Coq.Reals.Raxioms.html#Rplus_opp_r">Rplus_opp_r</a>;<br/>
 
239
&nbsp;do 2 rewrite <a href="Coq.Reals.Raxioms.html#Rplus_0_l">Rplus_0_l</a>; do 2 rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_Ropp">Rabs_Ropp</a>; repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_right">Rabs_right</a>.<br/>
 
240
apply <a href="Coq.Reals.PartSum.html#sum_Rle">sum_Rle</a>; intros.<br/>
 
241
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> n + n0)%nat); intros.<br/>
 
242
apply H8.<br/>
 
243
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; apply <a href="Coq.Reals.PartSum.html#cond_pos_sum">cond_pos_sum</a>; intro.<br/>
 
244
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> n + n0)%nat); intros.<br/>
 
245
apply <a href="Coq.Reals.RIneq.html#Rle_trans">Rle_trans</a> with (An (<a href="Coq.Init.Datatypes.html#S">S</a> n + n0)%nat); assumption.<br/>
 
246
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; apply <a href="Coq.Reals.PartSum.html#cond_pos_sum">cond_pos_sum</a>; intro.<br/>
 
247
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> n + n0)%nat); intros; assumption.<br/>
 
248
rewrite b; unfold R_dist in |- *; unfold Rminus in |- *;<br/>
 
249
&nbsp;do 2 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>; right; <br/>
 
250
&nbsp;reflexivity.<br/>
 
251
rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> An m n); [ idtac | assumption ].<br/>
 
252
rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> Bn m n); [ idtac | assumption ].<br/>
 
253
unfold R_dist in |- *; unfold Rminus in |- *; do 2 rewrite <a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a>;<br/>
 
254
&nbsp;rewrite (<a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An m)); rewrite (<a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn m));<br/>
 
255
&nbsp;do 2 rewrite <a href="Coq.Reals.Raxioms.html#Rplus_assoc">Rplus_assoc</a>; do 2 rewrite <a href="Coq.Reals.RIneq.html#Rplus_opp_l">Rplus_opp_l</a>; <br/>
 
256
&nbsp;do 2 rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; repeat rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_right">Rabs_right</a>.<br/>
 
257
apply <a href="Coq.Reals.PartSum.html#sum_Rle">sum_Rle</a>; intros.<br/>
 
258
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> m + n0)%nat); intros; apply H8.<br/>
 
259
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; apply <a href="Coq.Reals.PartSum.html#cond_pos_sum">cond_pos_sum</a>; intro.<br/>
 
260
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> m + n0)%nat); intros.<br/>
 
261
apply <a href="Coq.Reals.RIneq.html#Rle_trans">Rle_trans</a> with (An (<a href="Coq.Init.Datatypes.html#S">S</a> m + n0)%nat); assumption.<br/>
 
262
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>.<br/>
 
263
apply <a href="Coq.Reals.PartSum.html#cond_pos_sum">cond_pos_sum</a>; intro.<br/>
 
264
elim (H (<a href="Coq.Init.Datatypes.html#S">S</a> m + n0)%nat); intros; assumption.<br/>
 
265
<code class="keyword">Qed</code>.<br/>
 
266
 
 
267
<br/>
 
268
<code class="keyword">Lemma</code> <a name="Cesaro"></a>Cesaro :<br/>
 
269
&nbsp;forall (An Bn:<a href="Coq.Init.Datatypes.html#nat">nat</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (l:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
270
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> Bn l -&gt;<br/>
 
271
&nbsp;&nbsp;&nbsp;(forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, 0 &lt; An n) -&gt;<br/>
 
272
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.SeqProp.html#cv_infty">cv_infty</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n) -&gt;<br/>
 
273
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * Bn k) n / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)<br/>
 
274
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.<br/>
 
275
<code class="keyword">Proof</code> with trivial.<br/>
 
276
unfold Un_cv in |- *; intros; assert (H3 : forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, 0 &lt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
277
intro; apply <a href="Coq.Reals.PartSum.html#tech1">tech1</a>...<br/>
 
278
assert (H4 : forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n &lt;&gt; 0)...<br/>
 
279
intro; red in |- *; intro; assert (H5:= H3 n); rewrite H4 in H5;<br/>
 
280
&nbsp;elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> _ H5)...<br/>
 
281
assert (H5:= <a href="Coq.Reals.SeqProp.html#cv_infty_cv_R0">cv_infty_cv_R0</a> _ H4 H1); assert (H6 : 0 &lt; eps / 2)...<br/>
 
282
unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>...<br/>
 
283
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; prove_sup...<br/>
 
284
elim (H _ H6); clear H; intros N1 H;<br/>
 
285
&nbsp;set (C:= <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * (Bn k - l)) N1));<br/>
 
286
&nbsp;assert<br/>
 
287
&nbsp;&nbsp;(H7 :<br/>
 
288
&nbsp;&nbsp;&nbsp;&nbsp;exists N : <a href="Coq.Init.Datatypes.html#nat">nat</a>,<br/>
 
289
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, (N &lt;= n)%nat -&gt; C / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n &lt; eps / 2))...<br/>
 
290
case (<a href="Coq.Reals.RIneq.html#Req_dec">Req_dec</a> C 0); intro...<br/>
 
291
exists 0%nat; intros...<br/>
 
292
rewrite H7; unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>...<br/>
 
293
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; prove_sup...<br/>
 
294
assert (H8 : 0 &lt; eps / (2 * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> C))...<br/>
 
295
unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>...<br/>
 
296
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>...<br/>
 
297
prove_sup...<br/>
 
298
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos_lt">Rabs_pos_lt</a>...<br/>
 
299
elim (H5 _ H8); intros; exists x; intros; assert (H11:= H9 _ H10);<br/>
 
300
&nbsp;unfold R_dist in H11; unfold Rminus in H11; rewrite <a href="Coq.Reals.RIneq.html#Ropp_0">Ropp_0</a> in H11;<br/>
 
301
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a> in H11...<br/>
 
302
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with (<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (C / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n))...<br/>
 
303
apply <a href="Coq.Reals.Rbasic_fun.html#RRle_abs">RRle_abs</a>...<br/>
 
304
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>; 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> C)...<br/>
 
305
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/>
 
306
rewrite &lt;- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
 
307
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; replace (/ <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> C * (eps * / 2)) with (eps / (2 * <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> C))...<br/>
 
308
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>...<br/>
 
309
ring...<br/>
 
310
discrR...<br/>
 
311
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>...<br/>
 
312
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_no_R0">Rabs_no_R0</a>...<br/>
 
313
elim H7; clear H7; intros N2 H7; set (N:= <a href="Coq.Arith.Max.html#max">max</a> N1 N2); exists (<a href="Coq.Init.Datatypes.html#S">S</a> N); intros;<br/>
 
314
&nbsp;unfold R_dist in |- *;<br/>
 
315
&nbsp;replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * Bn k) n / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n - l) with<br/>
 
316
&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * (Bn k - l)) n / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
317
assert (H9 : (N1 &lt; n)%nat)...<br/>
 
318
apply <a href="Coq.Arith.Lt.html#lt_le_trans">lt_le_trans</a> with (<a href="Coq.Init.Datatypes.html#S">S</a> N)...<br/>
 
319
apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>; unfold N in |- *; apply <a href="Coq.Arith.Max.html#le_max_l">le_max_l</a>...<br/>
 
320
rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * (Bn k - l)) _ _ H9); unfold Rdiv in |- *;<br/>
 
321
&nbsp;rewrite <a href="Coq.Reals.RIneq.html#Rmult_plus_distr_r">Rmult_plus_distr_r</a>;<br/>
 
322
&nbsp;apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
323
&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * (Bn k - l)) N1 / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n) +<br/>
 
324
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a><br/>
 
325
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat * (Bn (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat - l))<br/>
 
326
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(n - <a href="Coq.Init.Datatypes.html#S">S</a> N1) / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n))...<br/>
 
327
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_triang">Rabs_triang</a>...<br/>
 
328
rewrite (<a href="Coq.Reals.RIneq.html#double_var">double_var</a> eps); apply <a href="Coq.Reals.RIneq.html#Rplus_lt_compat">Rplus_lt_compat</a>...<br/>
 
329
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>; fold C in |- *; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_right">Rabs_right</a>...<br/>
 
330
apply (H7 n); apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (<a href="Coq.Init.Datatypes.html#S">S</a> N)...<br/>
 
331
apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with N; [ unfold N in |- *; apply le_max_r | apply le_n_Sn ]...<br/>
 
332
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; left; apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>...<br/>
 
333
 
 
334
<br/>
 
335
unfold R_dist in H; unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>;<br/>
 
336
&nbsp;rewrite (<a href="Coq.Reals.Rbasic_fun.html#Rabs_right">Rabs_right</a> (/ <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n))...<br/>
 
337
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
338
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a> (An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat * (Bn (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat - l)))<br/>
 
339
&nbsp;&nbsp;&nbsp;&nbsp;(n - <a href="Coq.Init.Datatypes.html#S">S</a> N1) * / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
340
do 2 rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)); apply <a href="Coq.Reals.RIneq.html#Rmult_le_compat_l">Rmult_le_compat_l</a>...<br/>
 
341
left; apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>...<br/>
 
342
apply<br/>
 
343
&nbsp;(<a href="Coq.Reals.PartSum.html#Rsum_abs">Rsum_abs</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat * (Bn (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat - l))<br/>
 
344
&nbsp;&nbsp;&nbsp;&nbsp;(n - <a href="Coq.Init.Datatypes.html#S">S</a> N1))...<br/>
 
345
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
346
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat * (eps / 2)) (n - <a href="Coq.Init.Datatypes.html#S">S</a> N1) *<br/>
 
347
&nbsp;&nbsp;/ <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
348
do 2 rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)); apply <a href="Coq.Reals.RIneq.html#Rmult_le_compat_l">Rmult_le_compat_l</a>...<br/>
 
349
left; apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>...<br/>
 
350
apply <a href="Coq.Reals.PartSum.html#sum_Rle">sum_Rle</a>; intros; rewrite <a href="Coq.Reals.Rbasic_fun.html#Rabs_mult">Rabs_mult</a>;<br/>
 
351
&nbsp;pattern (An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + n0)%nat) at 2 in |- *;<br/>
 
352
&nbsp;rewrite &lt;- (<a href="Coq.Reals.Rbasic_fun.html#Rabs_right">Rabs_right</a> (An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + n0)%nat))...<br/>
 
353
apply <a href="Coq.Reals.RIneq.html#Rmult_le_compat_l">Rmult_le_compat_l</a>...<br/>
 
354
apply <a href="Coq.Reals.Rbasic_fun.html#Rabs_pos">Rabs_pos</a>...<br/>
 
355
left; apply H; unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_trans">le_trans</a> with (<a href="Coq.Init.Datatypes.html#S">S</a> N1);<br/>
 
356
&nbsp;[ apply le_n_Sn | apply le_plus_l ]...<br/>
 
357
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; left...<br/>
 
358
rewrite &lt;- (<a href="Coq.Reals.PartSum.html#scal_sum">scal_sum</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat) (n - <a href="Coq.Init.Datatypes.html#S">S</a> N1) (eps / 2));<br/>
 
359
&nbsp;unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; apply <a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a>...<br/>
 
360
pattern (/ 2) at 2 in |- *; rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; apply <a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a>...<br/>
 
361
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; prove_sup...<br/>
 
362
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a>; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_reg_l">Rmult_lt_reg_l</a> with (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
363
rewrite &lt;- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
 
364
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; rewrite (<a href="Coq.Reals.PartSum.html#tech2">tech2</a> An N1 n)...<br/>
 
365
rewrite <a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a>;<br/>
 
366
&nbsp;pattern (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun i:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An (<a href="Coq.Init.Datatypes.html#S">S</a> N1 + i)%nat) (n - <a href="Coq.Init.Datatypes.html#S">S</a> N1)) at 1 in |- *;<br/>
 
367
&nbsp;rewrite &lt;- <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; apply <a href="Coq.Reals.Raxioms.html#Rplus_lt_compat_l">Rplus_lt_compat_l</a>...<br/>
 
368
apply <a href="Coq.Reals.RIneq.html#Rle_ge">Rle_ge</a>; left; apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>...<br/>
 
369
replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * (Bn k - l)) n) with<br/>
 
370
&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * Bn k) n +<br/>
 
371
&nbsp;&nbsp;<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * - l) n)...<br/>
 
372
rewrite &lt;- (<a href="Coq.Reals.PartSum.html#scal_sum">scal_sum</a> An n (- l)); field...<br/>
 
373
rewrite &lt;- <a href="Coq.Reals.PartSum.html#plus_sum">plus_sum</a>; apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros; ring...<br/>
 
374
<code class="keyword">Qed</code>.<br/>
 
375
 
 
376
<br/>
 
377
<code class="keyword">Lemma</code> <a name="Cesaro_1"></a>Cesaro_1 :<br/>
 
378
&nbsp;forall (An:<a href="Coq.Init.Datatypes.html#nat">nat</a> -&gt; <a href="Coq.Reals.Rdefinitions.html#R">R</a>) (l:<a href="Coq.Reals.Rdefinitions.html#R">R</a>),<br/>
 
379
&nbsp;&nbsp;&nbsp;<a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> An l -&gt; <a href="Coq.Reals.Rseries.html#Un_cv">Un_cv</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Peano.html#pred">pred</a> n) / <a href="Coq.Reals.Raxioms.html#INR">INR</a> n) l.<br/>
 
380
<code class="keyword">Proof</code> with trivial.<br/>
 
381
intros Bn l H; set (An:= fun _:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; 1)...<br/>
 
382
assert (H0 : forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, 0 &lt; An n)...<br/>
 
383
intro; unfold An in |- *; apply <a href="Coq.Reals.RIneq.html#Rlt_0_1">Rlt_0_1</a>...<br/>
 
384
assert (H1 : forall n:<a href="Coq.Init.Datatypes.html#nat">nat</a>, 0 &lt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n)...<br/>
 
385
intro; apply <a href="Coq.Reals.PartSum.html#tech1">tech1</a>...<br/>
 
386
assert (H2 : <a href="Coq.Reals.SeqProp.html#cv_infty">cv_infty</a> (fun n:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An n))...<br/>
 
387
unfold cv_infty in |- *; intro; case (<a href="Coq.Reals.RIneq.html#Rle_dec">Rle_dec</a> M 0); intro...<br/>
 
388
exists 0%nat; intros; apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with 0...<br/>
 
389
assert (H2 : 0 &lt; M)...<br/>
 
390
auto with real...<br/>
 
391
clear n; set (m:= <a href="Coq.Reals.Rdefinitions.html#up">up</a> M); elim (<a href="Coq.Reals.Raxioms.html#archimed">archimed</a> M); intros;<br/>
 
392
&nbsp;assert (H5 : (0 &lt;= m)%Z)...<br/>
 
393
apply <a href="Coq.Reals.RIneq.html#le_IZR">le_IZR</a>; unfold m in |- *; simpl in |- *; left; apply <a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> with M...<br/>
 
394
elim (<a href="Coq.Reals.RIneq.html#IZN">IZN</a> _ H5); intros; exists x; intros; unfold An in |- *; rewrite <a href="Coq.Reals.PartSum.html#sum_cte">sum_cte</a>;<br/>
 
395
&nbsp;rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; apply <a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> with (<a href="Coq.Reals.Raxioms.html#IZR">IZR</a> (<a href="Coq.Reals.Rdefinitions.html#up">up</a> M))...<br/>
 
396
apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with (<a href="Coq.Reals.Raxioms.html#INR">INR</a> x)...<br/>
 
397
rewrite <a href="Coq.Reals.RIneq.html#INR_IZR_INZ">INR_IZR_INZ</a>; fold m in |- *; rewrite &lt;- H6; right...<br/>
 
398
apply <a href="Coq.Reals.RIneq.html#lt_INR">lt_INR</a>; apply <a href="Coq.Arith.Lt.html#le_lt_n_Sm">le_lt_n_Sm</a>...<br/>
 
399
assert (H3:= <a href="Coq.Reals.SeqSeries.html#Cesaro">Cesaro</a> _ _ _ H H0 H2)...<br/>
 
400
unfold Un_cv in |- *; unfold Un_cv in H3; intros; elim (H3 _ H4); intros;<br/>
 
401
&nbsp;exists (<a href="Coq.Init.Datatypes.html#S">S</a> x); intros; unfold R_dist in |- *; unfold R_dist in H5;<br/>
 
402
&nbsp;apply <a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> with<br/>
 
403
&nbsp;&nbsp;(<a href="Coq.Reals.Rbasic_fun.html#Rabs">Rabs</a><br/>
 
404
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * Bn k) (<a href="Coq.Init.Peano.html#pred">pred</a> n) / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Peano.html#pred">pred</a> n) - l))...<br/>
 
405
right;<br/>
 
406
&nbsp;replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn (<a href="Coq.Init.Peano.html#pred">pred</a> n) / <a href="Coq.Reals.Raxioms.html#INR">INR</a> n - l) with<br/>
 
407
&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; An k * Bn k) (<a href="Coq.Init.Peano.html#pred">pred</a> n) / <a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> An (<a href="Coq.Init.Peano.html#pred">pred</a> n) - l)...<br/>
 
408
unfold Rminus in |- *; do 2 rewrite &lt;- (<a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a> (- l));<br/>
 
409
&nbsp;apply <a href="Coq.Reals.RIneq.html#Rplus_eq_compat_l">Rplus_eq_compat_l</a>...<br/>
 
410
unfold An in |- *;<br/>
 
411
&nbsp;replace (<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> (fun k:<a href="Coq.Init.Datatypes.html#nat">nat</a> =&gt; 1 * Bn k) (<a href="Coq.Init.Peano.html#pred">pred</a> n)) with<br/>
 
412
&nbsp;&nbsp;(<a href="Coq.Reals.Rfunctions.html#sum_f_R0">sum_f_R0</a> Bn (<a href="Coq.Init.Peano.html#pred">pred</a> n))...<br/>
 
413
rewrite <a href="Coq.Reals.PartSum.html#sum_cte">sum_cte</a>; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; replace (<a href="Coq.Init.Datatypes.html#S">S</a> (<a href="Coq.Init.Peano.html#pred">pred</a> n)) with n...<br/>
 
414
apply <a href="Coq.Arith.Lt.html#S_pred">S_pred</a> with 0%nat; apply <a href="Coq.Arith.Lt.html#lt_le_trans">lt_le_trans</a> with (<a href="Coq.Init.Datatypes.html#S">S</a> x)...<br/>
 
415
apply <a href="Coq.Arith.Lt.html#lt_O_Sn">lt_O_Sn</a>...<br/>
 
416
apply <a href="Coq.Reals.PartSum.html#sum_eq">sum_eq</a>; intros; ring...<br/>
 
417
apply H5; unfold ge in |- *; apply <a href="Coq.Arith.Le.html#le_S_n">le_S_n</a>; replace (<a href="Coq.Init.Datatypes.html#S">S</a> (<a href="Coq.Init.Peano.html#pred">pred</a> n)) with n...<br/>
 
418
apply <a href="Coq.Arith.Lt.html#S_pred">S_pred</a> with 0%nat; apply <a href="Coq.Arith.Lt.html#lt_le_trans">lt_le_trans</a> with (<a href="Coq.Init.Datatypes.html#S">S</a> x)...<br/>
 
419
apply <a href="Coq.Arith.Lt.html#lt_O_Sn">lt_O_Sn</a>...<br/>
 
420
<code class="keyword">Qed</code>.<br/>
 
421
</code>
 
422
<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>
 
423
</body>
 
424
</html>
 
 
b'\\ No newline at end of file'