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/PartFunEquality".
19 (* $Id: PartFunEquality.v,v 1.8 2004/04/23 10:00:59 lcf Exp $ *)
21 (*#* printing Feq %\ensuremath{\approx}% #≈# *)
35 (*#* *Equality of Partial Functions
39 In some contexts (namely when quantifying over partial functions) we
40 need to refer explicitly to the subsetoid of elements satisfying a
41 given predicate rather than to the predicate itself. The following
42 definition makes this possible.
45 inline cic:/CoRN/ftc/PartFunEquality/subset.con.
48 The core of our work will revolve around the following fundamental
49 notion: two functions are equal in a given domain (predicate) iff they
50 coincide on every point of that domain#. #%\footnote{%Notice that,
51 according to our definition of partial function, it is equivalent to
52 prove the equality for every proof or for a specific proof. Typically
53 it is easier to consider a generic case%.}%. This file is concerned
54 with proving the main properties of this equality relation.
57 inline cic:/CoRN/ftc/PartFunEquality/Feq.con.
60 Notice that, because the quantification over the proofs is universal,
61 we must require explicitly that the predicate be included in the
62 domain of each function; otherwise the basic properties of equality
63 (like, for example, transitivity) would fail to hold#. #%\footnote{%To
64 see this it is enough to realize that the empty function would be
65 equal to every other function in every domain.%}.% The way to
66 circumvent this would be to quantify existentially over the proofs;
67 this, however, would have two major disadvantages: first, proofs of
68 equality would become very cumbersome and clumsy; secondly (and most
69 important), we often need to prove the inclusions from an equality
70 hypothesis, and this definition allows us to do it in a very easy way.
71 Also, the pointwise equality is much nicer to use from this definition
72 than in an existentially quantified one.
80 Section Equality_Results.
83 (*#* **Properties of Inclusion
85 We will now prove the main properties of the equality relation.
87 %\begin{convention}% Let [I,R:IR->CProp] and [F,G:PartIR], and denote
88 by [P] and [Q], respectively, the domains of [F] and [G].
92 inline cic:/CoRN/ftc/PartFunEquality/I.var.
94 inline cic:/CoRN/ftc/PartFunEquality/F.var.
96 inline cic:/CoRN/ftc/PartFunEquality/G.var.
100 inline cic:/CoRN/ftc/PartFunEquality/P.con.
102 inline cic:/CoRN/ftc/PartFunEquality/Q.con.
106 inline cic:/CoRN/ftc/PartFunEquality/R.var.
109 We start with two lemmas which make it much easier to prove and use
113 inline cic:/CoRN/ftc/PartFunEquality/eq_imp_Feq.con.
115 inline cic:/CoRN/ftc/PartFunEquality/Feq_imp_eq.con.
117 inline cic:/CoRN/ftc/PartFunEquality/included_IR.con.
120 End Equality_Results.
124 Hint Resolve included_IR : included.
132 If two function coincide on a given subset then they coincide in any smaller subset.
135 inline cic:/CoRN/ftc/PartFunEquality/included_Feq.con.
142 Section Away_from_Zero.
149 (*#* **Away from Zero
151 Before we prove our main results about the equality we have to do some
152 work on division. A function is said to be bounded away from zero in
153 a set if there exists a positive lower bound for the set of absolute
154 values of its image of that set.
156 %\begin{convention}% Let [I : IR->CProp], [F : PartIR] and denote by [P]
161 inline cic:/CoRN/ftc/PartFunEquality/I.var.
163 inline cic:/CoRN/ftc/PartFunEquality/F.var.
167 inline cic:/CoRN/ftc/PartFunEquality/P.con.
171 inline cic:/CoRN/ftc/PartFunEquality/bnd_away_zero.con.
174 If [F] is bounded away from zero in [I] then [F] is necessarily apart from zero in [I]; also this means that [I] is included in the domain of [{1/}F].
179 inline cic:/CoRN/ftc/PartFunEquality/Hf.var.
183 inline cic:/CoRN/ftc/PartFunEquality/bnd_imp_ap_zero.con.
185 inline cic:/CoRN/ftc/PartFunEquality/bnd_imp_inc_recip.con.
187 inline cic:/CoRN/ftc/PartFunEquality/bnd_imp_inc_div.con.
194 Boundedness away from zero is preserved through restriction of the set.
196 %\begin{convention}% Let [F] be a partial function and [P, Q] be predicates.
200 inline cic:/CoRN/ftc/PartFunEquality/F.var.
202 inline cic:/CoRN/ftc/PartFunEquality/P.var.
204 inline cic:/CoRN/ftc/PartFunEquality/Q.var.
206 inline cic:/CoRN/ftc/PartFunEquality/included_imp_bnd.con.
208 inline cic:/CoRN/ftc/PartFunEquality/FRestr_bnd.con.
211 A function is said to be bounded away from zero everywhere if it is bounded away from zero in every compact subinterval of its domain; a similar definition is made for arbitrary sets, which will be necessary for future work.
214 inline cic:/CoRN/ftc/PartFunEquality/bnd_away_zero_everywhere.con.
216 inline cic:/CoRN/ftc/PartFunEquality/bnd_away_zero_in_P.con.
219 An immediate consequence:
222 inline cic:/CoRN/ftc/PartFunEquality/bnd_in_P_imp_ap_zero.con.
224 inline cic:/CoRN/ftc/PartFunEquality/FRestr_bnd'.con.
231 Hint Resolve bnd_imp_inc_recip bnd_imp_inc_div: included.
235 Hint Immediate bnd_in_P_imp_ap_zero: included.
238 (*#* ** The [FEQ] tactic
239 This tactic splits a goal of the form [Feq I F G] into the three subgoals
240 [included I (Dom F)], [included I (Dom G)] and [forall x, F x [=] G x]
241 and applies [Included] to the first two and [rational] to the third.
247 Ltac FEQ := apply eq_imp_Feq;
248 [ Included | Included | intros; try (simpl in |- *; rational) ].
254 Section More_on_Equality.
257 (*#* **Properties of Equality
259 We are now finally able to prove the main properties of the equality relation. We begin by showing it to be an equivalence relation.
261 %\begin{convention}% Let [I] be a predicate and [F, F', G, G', H] be
266 inline cic:/CoRN/ftc/PartFunEquality/I.var.
269 Section Feq_Equivalence.
272 inline cic:/CoRN/ftc/PartFunEquality/F.var.
274 inline cic:/CoRN/ftc/PartFunEquality/G.var.
276 inline cic:/CoRN/ftc/PartFunEquality/H.var.
278 inline cic:/CoRN/ftc/PartFunEquality/Feq_reflexive.con.
280 inline cic:/CoRN/ftc/PartFunEquality/Feq_symmetric.con.
282 inline cic:/CoRN/ftc/PartFunEquality/Feq_transitive.con.
293 Also it is preserved through application of functional constructors and restriction.
296 inline cic:/CoRN/ftc/PartFunEquality/F.var.
298 inline cic:/CoRN/ftc/PartFunEquality/F'.var.
300 inline cic:/CoRN/ftc/PartFunEquality/G.var.
302 inline cic:/CoRN/ftc/PartFunEquality/G'.var.
304 inline cic:/CoRN/ftc/PartFunEquality/Feq_plus.con.
306 inline cic:/CoRN/ftc/PartFunEquality/Feq_inv.con.
308 inline cic:/CoRN/ftc/PartFunEquality/Feq_minus.con.
310 inline cic:/CoRN/ftc/PartFunEquality/Feq_mult.con.
312 inline cic:/CoRN/ftc/PartFunEquality/Feq_nth.con.
314 inline cic:/CoRN/ftc/PartFunEquality/Feq_recip.con.
316 inline cic:/CoRN/ftc/PartFunEquality/Feq_recip'.con.
318 inline cic:/CoRN/ftc/PartFunEquality/Feq_div.con.
320 inline cic:/CoRN/ftc/PartFunEquality/Feq_div'.con.
323 Notice that in the case of division we only need to require boundedness away from zero for one of the functions (as they are equal); thus the two last lemmas are stated in two different ways, as according to the context one or the other condition may be easier to prove.
325 The restriction of a function is well defined.
328 inline cic:/CoRN/ftc/PartFunEquality/FRestr_wd.con.
331 The image of a set is extensional.
334 inline cic:/CoRN/ftc/PartFunEquality/fun_image_wd.con.
341 End More_on_Equality.
350 We finish this group of lemmas with characterization results for the
351 power function (similar to those already proved for arbitrary rings).
352 The characterization is done at first pointwise and later using the
355 %\begin{convention}% Let [F] be a partial function with domain [P] and
356 [Q] be a predicate on the real numbers assumed to be included in [P].
360 inline cic:/CoRN/ftc/PartFunEquality/F.var.
364 inline cic:/CoRN/ftc/PartFunEquality/P.con.
368 inline cic:/CoRN/ftc/PartFunEquality/Q.var.
370 inline cic:/CoRN/ftc/PartFunEquality/H.var.
372 inline cic:/CoRN/ftc/PartFunEquality/Hf.var.
374 inline cic:/CoRN/ftc/PartFunEquality/FNth_zero.con.
376 inline cic:/CoRN/ftc/PartFunEquality/n.var.
378 inline cic:/CoRN/ftc/PartFunEquality/H'.var.
380 inline cic:/CoRN/ftc/PartFunEquality/FNth_mult.con.
387 Section Strong_Nth_Power.
391 %\begin{convention}% Let [a,b] be real numbers such that [I := [a,b]]
392 is included in the domain of [F].
396 inline cic:/CoRN/ftc/PartFunEquality/a.var.
398 inline cic:/CoRN/ftc/PartFunEquality/b.var.
400 inline cic:/CoRN/ftc/PartFunEquality/Hab.var.
404 inline cic:/CoRN/ftc/PartFunEquality/I.con.
408 inline cic:/CoRN/ftc/PartFunEquality/F.var.
410 inline cic:/CoRN/ftc/PartFunEquality/incF.var.
412 inline cic:/CoRN/ftc/PartFunEquality/FNth_zero'.con.
414 inline cic:/CoRN/ftc/PartFunEquality/FNth_mult'.con.
417 End Strong_Nth_Power.