It’s possible that both definitions will turn into applications of Hilbert choice applied to equivalent predicates.
If inf1 s = @x. P x, and inf2 s = @x. Q x, but it happens that !x. P x <=> Q x, then it is indeed the case that inf1 = inf2, even on arguments where you’d prefer them not to be defined. Equally though, it’s quite reasonable to imagine that they weren’t defined so conveniently, and you will just have s has-a-lower-bound ==> (inf1 s = inf2 s) In this situation, I might prove the above, and then replace all the occurrences of one with the other under the expectation that the theorems about the one that is replaced are just as true of the other. Michael From: "Chun Tian (binghe)" <binghe.l...@gmail.com> Date: Thursday, 21 February 2019 at 20:52 To: hol-info <hol-info@lists.sourceforge.net> Subject: [Hol-info] The equivalence of two definitions of "inf" (infimum) of real sets? Hi, (this is another (strange) question about undefined values in total functions) currently there’re two definitions of “inf” (infimum) for real sets in HOL4, one is at “src/real/realScript.sml”: [inf_def] Definition ⊢ ∀p. inf p = -sup (λr. p (-r)) The other is at “src/probability/iterateScript.sml”, ported from HOL Light: [inf] Definition ⊢ ∀s. inf s = @a. (∀x. x ∈ s ⇒ a ≤ x) ∧ ∀b. (∀x. x ∈ s ⇒ b ≤ x) ⇒ b ≤ a I believe they’re both correct definitions, as the related theorems derived from them all make senses. However, if I load “iterateTheory”, or “real_topologyTheory” which in turn uses “iterateTheory”, than all theorems about the “inf” defined at “realTheory” would be invalid, as they’re not for the latest “inf”. Thus my goal is to merge the two definitions of “inf” and have a precise union of all theorems about them. Usually this kind of definition merging is done by changing the later definition (in iterateTheory) into an equivalent theorem, i.e. to prove that |- ∀s. inf s = @a. (∀x. x ∈ s ⇒ a ≤ x) ∧ ∀b. (∀x. x ∈ s ⇒ b ≤ x) ⇒ b ≤ a given the definition: inf p = -sup (λr. p (-r)) But I *feel* this is impossible, because “inf” of real set is not defined on all real sets. If I temporarily use ``inf’`` as the alternative definition of “inf” in iterateTheory, the above equivalent theorem becomes: |- ∀s. inf s = inf’ s but for s = {}, or any real sets without a lower bound, either “inf s” or “inf’ s” is not defined, should above theorem still be proved? If not, then I have to re-prove all “inf” theorems in iterateTheory using lemmas from realTheory. This is more difficult. Regards, Chun Tian P. S. in extrealTheory, “sup” and “inf” are really total functions, thus much easier to work with, e.g. I can prove things like: (in at least one of my Math book, it said “inf {} = PosInf” must be specially defined, but this is actually not needed) [sup_empty] Theorem ⊢ sup ∅ = NegInf [inf_empty] Theorem ⊢ inf ∅ = PosInf [inf_univ] Theorem ⊢ inf 𝕌(:extreal) = NegInf [sup_univ] Theorem ⊢ sup 𝕌(:extreal) = PosInf
_______________________________________________ hol-info mailing list hol-info@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hol-info