[TIL] 与西瓜为伴的六月

06/21

Vacuous truth 虚真论断

[].allSatisfy { $0 > 0 }   // 1
[].allSatisfy { $0 <= 0 }  // 2

请回答,上面两个表达式的值是什么? 结果是,它们的值都是 true,不得不承认,这多少有一些违背人的直觉。

在 swift forums 上也有人对此表示了疑惑: https://forums.swift.org/t/unexpected-behaviour-of-allsatisfy/20136

Everything is true of the elements of the empty set.

事实上,其中蕴含了经典的逻辑悖论:实质蕴含悖论。如果转换为中文,就是一种“如果...那么...”的关系。例如:

  • (维基百科中记载的经典案例)如果房间里没有手机,那么所有手机都是关机状态。
  • (不可能发生的事情)如果回到十年前,那么我要好好学习。

如果 p 那么 q 被称为 pq 的蕴含式,记作 p → q。其真值表如下:

pqp → q
TTT
TFF
FTT
FFT

综上,当集合为空(p == false)时,无论 q 是什么条件它们的蕴含式都一定为真,这也就是需真论断。蕴含式的正确并不意味着生活中一些关系的合理性,将它当作一种既定的逻辑就可以。


06/xx

做了自己认为应当有人去做的事情,深入学习了今年 WWDC 的 Accessibility 专题,并写了以下两篇文章: