1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
19 (* $Id: IntervalFunct.v,v 1.5 2004/04/08 15:28:06 lcf Exp $ *)
21 include "ftc/PartFunEquality.ma".
27 (*#* * Functions with compact domain
29 In this section we concern ourselves with defining operations on the
30 set of functions from an arbitrary interval [[a,b]] to [IR].
31 Although these are a particular kind of partial function, they have
32 the advantage that, given [a] and [b], they have type [Set] and can
33 thus be quantified over and extracted from existential hypothesis.
34 This will be important when we want to define concepts like
35 differentiability, which involve the existence of an object satisfying
36 some given properties.
38 Throughout this section we will focus on a compact interval and define
39 operators analogous to those we already have for arbitrary partial
42 %\begin{convention}% Let [a,b] be real numbers and denote by [I] the
43 compact interval [[a,b]]. Let [f, g] be setoid functions of
49 cic:/CoRN/ftc/IntervalFunct/Operations/a.var
53 cic:/CoRN/ftc/IntervalFunct/Operations/b.var
57 cic:/CoRN/ftc/IntervalFunct/Operations/Hab.var
62 inline procedural "cic:/CoRN/ftc/IntervalFunct/Operations/I.con" "Operations__" as definition.
67 cic:/CoRN/ftc/IntervalFunct/Operations/f.var
71 cic:/CoRN/ftc/IntervalFunct/Operations/g.var
79 Constant and identity functions are defined.
81 %\begin{convention}% Let [c:IR].
86 cic:/CoRN/ftc/IntervalFunct/Operations/Const/c.var
89 inline procedural "cic:/CoRN/ftc/IntervalFunct/IConst_strext.con" as lemma.
91 inline procedural "cic:/CoRN/ftc/IntervalFunct/IConst.con" as definition.
97 inline procedural "cic:/CoRN/ftc/IntervalFunct/IId_strext.con" as lemma.
99 inline procedural "cic:/CoRN/ftc/IntervalFunct/IId.con" as definition.
102 Next, we define addition, algebraic inverse, subtraction and product of functions.
105 inline procedural "cic:/CoRN/ftc/IntervalFunct/IPlus_strext.con" as lemma.
107 inline procedural "cic:/CoRN/ftc/IntervalFunct/IPlus.con" as definition.
109 inline procedural "cic:/CoRN/ftc/IntervalFunct/IInv_strext.con" as lemma.
111 inline procedural "cic:/CoRN/ftc/IntervalFunct/IInv.con" as definition.
113 inline procedural "cic:/CoRN/ftc/IntervalFunct/IMinus_strext.con" as lemma.
115 inline procedural "cic:/CoRN/ftc/IntervalFunct/IMinus.con" as definition.
117 inline procedural "cic:/CoRN/ftc/IntervalFunct/IMult_strext.con" as lemma.
119 inline procedural "cic:/CoRN/ftc/IntervalFunct/IMult.con" as definition.
126 Exponentiation to a natural power [n] is also useful.
130 cic:/CoRN/ftc/IntervalFunct/Operations/Nth_Power/n.var
133 inline procedural "cic:/CoRN/ftc/IntervalFunct/INth_strext.con" as lemma.
135 inline procedural "cic:/CoRN/ftc/IntervalFunct/INth.con" as definition.
142 If a function is non-zero in all the interval then we can define its multiplicative inverse.
152 cic:/CoRN/ftc/IntervalFunct/Operations/Recip_Div/Hg.var
157 inline procedural "cic:/CoRN/ftc/IntervalFunct/IRecip_strext.con" as lemma.
159 inline procedural "cic:/CoRN/ftc/IntervalFunct/IRecip.con" as definition.
161 inline procedural "cic:/CoRN/ftc/IntervalFunct/IDiv_strext.con" as lemma.
163 inline procedural "cic:/CoRN/ftc/IntervalFunct/IDiv.con" as definition.
170 Absolute value will also be needed at some point.
173 inline procedural "cic:/CoRN/ftc/IntervalFunct/IAbs_strext.con" as lemma.
175 inline procedural "cic:/CoRN/ftc/IntervalFunct/IAbs.con" as definition.
182 The set of these functions form a ring with relation to the operations
183 of sum and multiplication. As they actually form a set, this fact can
184 be proved in Coq for this class of functions; unfortunately, due to a
185 problem with the coercions, we are not able to use it (Coq will not
186 recognize the elements of that ring as functions which can be applied
187 to elements of [[a,b]]), so we merely state this fact here as a
190 Finally, we define composition; for this we need two functions with
193 %\begin{convention}% [a',b'] be real numbers and denote by [I'] the
194 compact interval [[a',b']], and let [g] be a setoid function of type
204 cic:/CoRN/ftc/IntervalFunct/Composition/a.var
208 cic:/CoRN/ftc/IntervalFunct/Composition/b.var
212 cic:/CoRN/ftc/IntervalFunct/Composition/Hab.var
217 inline procedural "cic:/CoRN/ftc/IntervalFunct/Composition/I.con" "Composition__" as definition.
222 cic:/CoRN/ftc/IntervalFunct/Composition/a'.var
226 cic:/CoRN/ftc/IntervalFunct/Composition/b'.var
230 cic:/CoRN/ftc/IntervalFunct/Composition/Hab'.var
235 inline procedural "cic:/CoRN/ftc/IntervalFunct/Composition/I'.con" "Composition__" as definition.
240 cic:/CoRN/ftc/IntervalFunct/Composition/f.var
244 cic:/CoRN/ftc/IntervalFunct/Composition/g.var
248 cic:/CoRN/ftc/IntervalFunct/Composition/Hfg.var
251 inline procedural "cic:/CoRN/ftc/IntervalFunct/IComp_strext.con" as lemma.
253 inline procedural "cic:/CoRN/ftc/IntervalFunct/IComp.con" as definition.
260 Implicit Arguments IConst [a b Hab].
264 Implicit Arguments IId [a b Hab].
268 Implicit Arguments IPlus [a b Hab].
272 Implicit Arguments IInv [a b Hab].
276 Implicit Arguments IMinus [a b Hab].
280 Implicit Arguments IMult [a b Hab].
284 Implicit Arguments INth [a b Hab].
288 Implicit Arguments IRecip [a b Hab].
292 Implicit Arguments IDiv [a b Hab].
296 Implicit Arguments IAbs [a b Hab].
300 Implicit Arguments IComp [a b Hab a' b' Hab'].