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 *********************)
17 set "baseuri" "cic:/matita/CoRN-Decl/ftc/IntervalFunct".
21 (* $Id: IntervalFunct.v,v 1.5 2004/04/08 15:28:06 lcf Exp $ *)
23 include "ftc/PartFunEquality.ma".
29 (*#* * Functions with compact domain
31 In this section we concern ourselves with defining operations on the
32 set of functions from an arbitrary interval [[a,b]] to [IR].
33 Although these are a particular kind of partial function, they have
34 the advantage that, given [a] and [b], they have type [Set] and can
35 thus be quantified over and extracted from existential hypothesis.
36 This will be important when we want to define concepts like
37 differentiability, which involve the existence of an object satisfying
38 some given properties.
40 Throughout this section we will focus on a compact interval and define
41 operators analogous to those we already have for arbitrary partial
44 %\begin{convention}% Let [a,b] be real numbers and denote by [I] the
45 compact interval [[a,b]]. Let [f, g] be setoid functions of
50 alias id "a" = "cic:/CoRN/ftc/IntervalFunct/Operations/a.var".
52 alias id "b" = "cic:/CoRN/ftc/IntervalFunct/Operations/b.var".
54 alias id "Hab" = "cic:/CoRN/ftc/IntervalFunct/Operations/Hab.var".
58 inline "cic:/CoRN/ftc/IntervalFunct/Operations/I.con" "Operations__".
62 alias id "f" = "cic:/CoRN/ftc/IntervalFunct/Operations/f.var".
64 alias id "g" = "cic:/CoRN/ftc/IntervalFunct/Operations/g.var".
71 Constant and identity functions are defined.
73 %\begin{convention}% Let [c:IR].
77 alias id "c" = "cic:/CoRN/ftc/IntervalFunct/Operations/Const/c.var".
79 inline "cic:/CoRN/ftc/IntervalFunct/IConst_strext.con".
81 inline "cic:/CoRN/ftc/IntervalFunct/IConst.con".
87 inline "cic:/CoRN/ftc/IntervalFunct/IId_strext.con".
89 inline "cic:/CoRN/ftc/IntervalFunct/IId.con".
92 Next, we define addition, algebraic inverse, subtraction and product of functions.
95 inline "cic:/CoRN/ftc/IntervalFunct/IPlus_strext.con".
97 inline "cic:/CoRN/ftc/IntervalFunct/IPlus.con".
99 inline "cic:/CoRN/ftc/IntervalFunct/IInv_strext.con".
101 inline "cic:/CoRN/ftc/IntervalFunct/IInv.con".
103 inline "cic:/CoRN/ftc/IntervalFunct/IMinus_strext.con".
105 inline "cic:/CoRN/ftc/IntervalFunct/IMinus.con".
107 inline "cic:/CoRN/ftc/IntervalFunct/IMult_strext.con".
109 inline "cic:/CoRN/ftc/IntervalFunct/IMult.con".
116 Exponentiation to a natural power [n] is also useful.
119 alias id "n" = "cic:/CoRN/ftc/IntervalFunct/Operations/Nth_Power/n.var".
121 inline "cic:/CoRN/ftc/IntervalFunct/INth_strext.con".
123 inline "cic:/CoRN/ftc/IntervalFunct/INth.con".
130 If a function is non-zero in all the interval then we can define its multiplicative inverse.
139 alias id "Hg" = "cic:/CoRN/ftc/IntervalFunct/Operations/Recip_Div/Hg.var".
143 inline "cic:/CoRN/ftc/IntervalFunct/IRecip_strext.con".
145 inline "cic:/CoRN/ftc/IntervalFunct/IRecip.con".
147 inline "cic:/CoRN/ftc/IntervalFunct/IDiv_strext.con".
149 inline "cic:/CoRN/ftc/IntervalFunct/IDiv.con".
156 Absolute value will also be needed at some point.
159 inline "cic:/CoRN/ftc/IntervalFunct/IAbs_strext.con".
161 inline "cic:/CoRN/ftc/IntervalFunct/IAbs.con".
168 The set of these functions form a ring with relation to the operations
169 of sum and multiplication. As they actually form a set, this fact can
170 be proved in Coq for this class of functions; unfortunately, due to a
171 problem with the coercions, we are not able to use it (Coq will not
172 recognize the elements of that ring as functions which can be applied
173 to elements of [[a,b]]), so we merely state this fact here as a
176 Finally, we define composition; for this we need two functions with
179 %\begin{convention}% [a',b'] be real numbers and denote by [I'] the
180 compact interval [[a',b']], and let [g] be a setoid function of type
189 alias id "a" = "cic:/CoRN/ftc/IntervalFunct/Composition/a.var".
191 alias id "b" = "cic:/CoRN/ftc/IntervalFunct/Composition/b.var".
193 alias id "Hab" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hab.var".
197 inline "cic:/CoRN/ftc/IntervalFunct/Composition/I.con" "Composition__".
201 alias id "a'" = "cic:/CoRN/ftc/IntervalFunct/Composition/a'.var".
203 alias id "b'" = "cic:/CoRN/ftc/IntervalFunct/Composition/b'.var".
205 alias id "Hab'" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hab'.var".
209 inline "cic:/CoRN/ftc/IntervalFunct/Composition/I'.con" "Composition__".
213 alias id "f" = "cic:/CoRN/ftc/IntervalFunct/Composition/f.var".
215 alias id "g" = "cic:/CoRN/ftc/IntervalFunct/Composition/g.var".
217 alias id "Hfg" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hfg.var".
219 inline "cic:/CoRN/ftc/IntervalFunct/IComp_strext.con".
221 inline "cic:/CoRN/ftc/IntervalFunct/IComp.con".
228 Implicit Arguments IConst [a b Hab].
232 Implicit Arguments IId [a b Hab].
236 Implicit Arguments IPlus [a b Hab].
240 Implicit Arguments IInv [a b Hab].
244 Implicit Arguments IMinus [a b Hab].
248 Implicit Arguments IMult [a b Hab].
252 Implicit Arguments INth [a b Hab].
256 Implicit Arguments IRecip [a b Hab].
260 Implicit Arguments IDiv [a b Hab].
264 Implicit Arguments IAbs [a b Hab].
268 Implicit Arguments IComp [a b Hab a' b' Hab'].