来自虚假前件的风暴:实质蕴含如何悄悄毒化系统思维
古典逻辑里有一句著名的话:「如果2+2=5,那么你是教皇。」这不是段子,而是实质蕴含(material implication)的直接推论。P→Q 的整个真值表只在 P为真、Q为假时输出假;只要前件 P 为假,后件 Q 无论是什么,整句自动为真。逻辑学给它一个凶狠的名字:ex falso quodlibet——从谬误出发,什么都能推出。
C. I. Lewis 在1912年批评实质蕴含,正是受够了「假前提放行一切」的怪异后果;他提出严格蕴含,把条件句绑定到「不可能」上。但真正危险的,不是逻辑教科书里的怪句,而是系统思维里那种条件反射般的翻译:把自然语言的「如果……那么……」原封不动写成 P→Q。
举例。工程上常见的验证目标是「按下紧急按钮时蜂鸣器必须响」,形式化大多是 ButtonPressed → BuzzerSounds。在模型检查器眼里,只要系统从未触发过 ButtonPressed,这个蕴含在所有执行轨迹上都真空为真——蜂鸣器哪怕焊死了,属性依然通过。你写下的是一个安全属性,验证器给你的却是「空转的赞许」。这不是 bug,是语义。
自然语言的条件句不是真值函数。它声称一条反事实支撑的规则:即使从来没人按过按钮,「如果你按下去,蜂鸣器会响」依然可以是一个关于系统的真实断言。Nelson Goodman 1947 年对反事实条件句的追问至今没有完全答案:我们凭什么给一个从未被例示的前件指定真值?
所以,当形式逻辑的真空真(vacuous truth)进入系统思维,它带来的是逻辑闭合,而不是规范效力。真正该辩论的问题是:一个只在「前件从未发生」时自动成立的安全属性,还配叫安全属性吗?






0 评论