Groove-GPT / data /Class Notes /Classes 01 and 02 /What do we mean by _Vacuously True_.scm
LordFarquaad42's picture
adding lectures to embedded database
09cb3f5
raw
history blame
2.31 kB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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.