Spaces:
Sleeping
Sleeping
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; On the terms 'vacuous' and 'vacuously true' | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; can you explain why (+) has the value 0? | |
;;; well, there are no arguments, and the sum of zero numbers is 0 | |
;; similarly, can you explain why (and) has the value #t? | |
;;; well -- given (and arg1 arg2 ... argk), and returns true if every one of | |
;;; arg1, arg2, ... , argk is true. For (and) -- ie, and applied to no arguments -- the set {arg1, arg2, ..., argk} | |
;;; is empty -- it follows then that every one of these arguments is true. | |
;;; one says then that (and) is vacuously true | |
;;; we will encounter this over and over again in the coming weeks -- you want | |
;;; to review universal quantifiers: "for every arg in the empty set {}, (f arg) is | |
;;; true whenever (f arg) computes a Boolean value". Intuitively, | |
;;; ask yourself "how could it be false?" Well, there would | |
;;; need to be an argument in the empty set for which the value(f arg) is false. But of course | |
;;; there are no arguments in the empty set. | |
;;; I like to refer to this as the 'green elephant argument'. The corresponding | |
;;; claim is this: "every green elephant in my office just now is wearing purple | |
;;; boots." This is a true statement, for the simple fact that there are no | |
;;; green elephants in my office at this time -- so -- vacuously -- every one of them is | |
;;; wearing purple boots! | |
;;; Another use of the phrase "vacuously true" arises when talking about | |
;;; propositions -- recall the definition of P ==> Q | |
;;; P Q P ==> Q | |
;;; --- --- --------- | |
;;; T T T | |
;;; T F F | |
;;; F T T | |
;;; F F T | |
;;; The last two lines are described by saying that when the antecedent P | |
;;; is false, then the implication P ==> Q is vacuously true. | |
;;; What about (or)? (or arg1 arg2 ... argk) is #t exactly when at least | |
;;; one of arg1, arg2, ..., argk is true. So -- if none are true, then | |
;;; the or evaluates to false. | |
;;; So the relevant question is: how many args in {} are true? | |
;;; Clearly, the answer is 0. So (or) _must_ evaluate to false. | |