]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/CoRN-Procedural/ftc/WeakIVT.mma
Procedural: explicit flavour specification for constants is now working
[helm.git] / helm / software / matita / contribs / CoRN-Procedural / ftc / WeakIVT.mma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "CoRN.ma".
18
19 (* $Id: WeakIVT.v,v 1.9 2004/04/23 10:01:01 lcf Exp $ *)
20
21 (*#* printing ** %\ensuremath\times% #×# *)
22
23 (* begin hide *)
24
25 (* NOTATION
26 Infix "**" := prodT (at level 20).
27 *)
28
29 (* end hide *)
30
31 include "ftc/Continuity.ma".
32
33 (*#* *IVT for Partial Functions
34
35 In general, we cannot prove the classically valid Intermediate Value
36 Theorem for arbitrary partial functions, which states that in any
37 interval [[a,b]], for any value [z] between [f(a)] and [f(b)]
38 there exists $x\in[a,b]$#x∈[a,b]# such that [f(x) [=] z].
39
40 However, as is usually the case, there are some good aproximation results.  We
41 will prove them here.
42 *)
43
44 (* UNEXPORTED
45 Section Lemma1
46 *)
47
48 alias id "a" = "cic:/CoRN/ftc/WeakIVT/Lemma1/a.var".
49
50 alias id "b" = "cic:/CoRN/ftc/WeakIVT/Lemma1/b.var".
51
52 alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/Lemma1/Hab.var".
53
54 (* begin hide *)
55
56 inline procedural "cic:/CoRN/ftc/WeakIVT/Lemma1/I.con" "Lemma1__" as definition.
57
58 (* end hide *)
59
60 alias id "F" = "cic:/CoRN/ftc/WeakIVT/Lemma1/F.var".
61
62 alias id "contF" = "cic:/CoRN/ftc/WeakIVT/Lemma1/contF.var".
63
64 (*#* **First Lemmas
65
66 %\begin{convention}% Let [a, b : IR] and [Hab : a [<=] b] and denote by [I]
67 the interval [[a,b]].  Let [F] be a continuous function on [I].
68 %\end{convention}%
69
70 We begin by proving that, if [f(a) [<] f(b)], then for every [y] in 
71 [[f(a),f(b)]] there is an $x\in[a,b]$#x&isin;[a,b]# such that [f(x)] is close
72 enough to [z].
73 *)
74
75 inline procedural "cic:/CoRN/ftc/WeakIVT/Weak_IVT_ap_lft.con" as lemma.
76
77 (* UNEXPORTED
78 End Lemma1
79 *)
80
81 (* UNEXPORTED
82 Section Lemma2
83 *)
84
85 alias id "a" = "cic:/CoRN/ftc/WeakIVT/Lemma2/a.var".
86
87 alias id "b" = "cic:/CoRN/ftc/WeakIVT/Lemma2/b.var".
88
89 alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/Lemma2/Hab.var".
90
91 (* begin hide *)
92
93 inline procedural "cic:/CoRN/ftc/WeakIVT/Lemma2/I.con" "Lemma2__" as definition.
94
95 (* end hide *)
96
97 alias id "F" = "cic:/CoRN/ftc/WeakIVT/Lemma2/F.var".
98
99 alias id "contF" = "cic:/CoRN/ftc/WeakIVT/Lemma2/contF.var".
100
101 (*#*
102 If [f(b) [<] f(a)], a similar result holds:
103 *)
104
105 inline procedural "cic:/CoRN/ftc/WeakIVT/Weak_IVT_ap_rht.con" as lemma.
106
107 (* UNEXPORTED
108 End Lemma2
109 *)
110
111 (* UNEXPORTED
112 Section IVT
113 *)
114
115 (*#* **The IVT
116
117 We will now assume that [a [<] b] and that [F] is not only
118 continuous, but also strictly increasing in [I].  Under
119 these assumptions, we can build two sequences of values which
120 converge to [x0] such that [f(x0) [=] z].
121 *)
122
123 alias id "a" = "cic:/CoRN/ftc/WeakIVT/IVT/a.var".
124
125 alias id "b" = "cic:/CoRN/ftc/WeakIVT/IVT/b.var".
126
127 alias id "Hab'" = "cic:/CoRN/ftc/WeakIVT/IVT/Hab'.var".
128
129 alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/IVT/Hab.var".
130
131 (* begin hide *)
132
133 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/I.con" "IVT__" as definition.
134
135 (* end hide *)
136
137 alias id "F" = "cic:/CoRN/ftc/WeakIVT/IVT/F.var".
138
139 alias id "contF" = "cic:/CoRN/ftc/WeakIVT/IVT/contF.var".
140
141 (* begin hide *)
142
143 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/incF.con" "IVT__" as definition.
144
145 (* end hide *)
146
147 (* begin show *)
148
149 alias id "incrF" = "cic:/CoRN/ftc/WeakIVT/IVT/incrF.var".
150
151 (* end show *)
152
153 (* begin hide *)
154
155 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/Ha.con" "IVT__" as definition.
156
157 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/Hb.con" "IVT__" as definition.
158
159 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/HFab'.con" "IVT__" as definition.
160
161 (* end hide *)
162
163 (* begin show *)
164
165 alias id "z" = "cic:/CoRN/ftc/WeakIVT/IVT/z.var".
166
167 alias id "Haz" = "cic:/CoRN/ftc/WeakIVT/IVT/Haz.var".
168
169 alias id "Hzb" = "cic:/CoRN/ftc/WeakIVT/IVT/Hzb.var".
170
171 (* end show *)
172
173 (*#* Given any two points [x [<] y] in [[a,b]] such that [x [<=] z [<=] y],
174 we can find [x' [<] y'] such that $|x'-y'|=\frac23|x-y|$#|x'-y'|=2/3|x-y|#
175 and [x' [<=] z [<=] y'].
176 *)
177
178 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_seq_lemma.con" as lemma.
179
180 (* end hide *)
181
182 (*#*
183 We now iterate this construction.
184 *)
185
186 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_aux_seq_type.ind".
187
188 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_iter.con" as definition.
189
190 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_seq.con" as definition.
191
192 (*#*
193 We now define the sequences built from this iteration, starting with [a] and [b].
194 *)
195
196 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq.con" as definition.
197
198 inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq.con" as definition.
199
200 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_I.con" as definition.
201
202 inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_I.con" as definition.
203
204 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_less_b_seq.con" as lemma.
205
206 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_leEq_z.con" as lemma.
207
208 inline procedural "cic:/CoRN/ftc/WeakIVT/z_leEq_b_seq.con" as lemma.
209
210 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_mon.con" as lemma.
211
212 inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_mon.con" as lemma.
213
214 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_dist_n.con" as lemma.
215
216 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_dist.con" as lemma.
217
218 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_Cauchy.con" as lemma.
219
220 inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_Cauchy.con" as lemma.
221
222 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/xa.con" "IVT__" as definition.
223
224 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/xb.con" "IVT__" as definition.
225
226 inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_lim.con" as lemma.
227
228 inline procedural "cic:/CoRN/ftc/WeakIVT/xa_in_interval.con" as lemma.
229
230 inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_I.con" as lemma.
231
232 (* UNEXPORTED
233 End IVT
234 *)
235