悖论

库里悖论——一句话就能证明任何主张

库里悖论——一句话就能证明任何主张

大家好,我是 Senko。 本文将解读“库里悖论”。

准备“若这句话为真,则圣诞老人真实存在”这样一句话。仅凭这点材料,就能在形式上导出“圣诞老人真实存在”这个结论。而且结论部分换成什么都行。与说谎者悖论不同,它完全不用否定——这正是这个问题可怕的地方。

图解

一句话证明圣诞老人存在

先准备下面这句话,把它叫作 C。

C:若这句话为真,则圣诞老人真实存在。

乍看之下,它像是什么也没主张的空话,只是带了个条件,并没有说圣诞老人存在。

只是,这句话里所指的“这句话”,说的是 C 自己。也就是说,C 的内容是“若 C 为真,则圣诞老人存在”。

它是谈论自身的句子,意义要定下来得先绕一圈。我们来追一追从这里能推出什么。

把证明追一遍

一步一步来。

先假设 C 为真。

C 为真,就意味着 C 的内容成立。而 C 的内容是“若 C 为真,则圣诞老人存在”。

眼下按假设 C 是真的,这个条件句的前件因此被满足,于是得出结论:圣诞老人真实存在。

到这里所证明的是“假设 C 为真,则圣诞老人存在”。

机关的核心就在这里。刚刚证明的这段内容,与C 自己所说的完全相同。也就是说我们已经证明了 C 的内容,那么 C 就是真的。不带假设,C 的真理到手了。

最后一手。C 是真的,而 C 说的是“若 C 为真,则圣诞老人存在”。前件既已满足,结论就出来了。

圣诞老人真实存在。证毕。

一次否定也没用

奇怪的是,这套推理看上去哪里都没有勉强。

用到的只有两条:条件句的前件成立则后件也成立;以及由假设推出的东西可以改写成条件句。两条都是逻辑学最基本的工具。

而值得注意的是,否定这个概念一次也没出现过。

说谎者悖论是“这句话是假的”这种形状,否定在其中起着本质作用。正因如此,才有人想出“承认既非真也非假的第三个值就好”之类的对策。

这一招对库里悖论行不通。既然没有否定,那么怎么摆弄否定的处理方式都解决不了问题。

更严重的是,结论部分可以换成任何东西。“1 等于 2”也好,“我长生不老”也好,都能用完全相同的步骤证出来。一个体系若能证明一切主张,那它就彻底没有意义了。

发现者哈斯凯尔·库里

在1942年的论文里指出这个悖论的,是美国逻辑学家哈斯凯尔·库里。

他当时正在做“显示某些形式体系含有矛盾”的研究,在此过程中把这个结构提取了出来。几乎相同的内容,数学家马丁·勒布也独立处理过,因此它有时也被叫作勒布悖论。

顺带一提,库里这个名字学过编程的人也许很熟悉。把函数改造成一次接一个参数的柯里化技法,以及函数式语言 Haskell 的名字,都是取自他。

该舍掉哪条规则

既然出了矛盾,就必须舍掉某处前提。候选主要有三个。

其一是禁止自指的方针:给语言分层,让句子指不到自己。这与塔斯基在定义真理时所走的路是同一个想法。

其二是限制真值谓词的用法:能在“C 是真的”与“C 的内容”之间自由来回,正是矛盾的材料,那就给这种来回加上条件。

而第三个,对逻辑学家来说是最刺激的选项:舍掉收缩规则。

所谓收缩规则,是指出现“若 A 则若 A 则 B”这种形状时,可以把它并成“若 A 则 B”。在上面的证明里,C 被用了两次,正是这条规则在起作用。

“同一个前提用多少次都跟用一次一样”,这条看着实在理所当然的规则,其实也能造出不承认它的逻辑体系。线性逻辑与相干逻辑就是这样,它们把前提当作资源来点数。库里悖论,正是这类子结构逻辑被认真研究的一大动因。

把前提当资源来点数的逻辑

舍掉收缩规则这个选择,起初看着离谱,后来却从完全另一个方向获得了支持。

各体系的处理差别

逻辑体系收缩规则前提的处理库里的矛盾
古典逻辑承认可以反复取用会发生
直觉主义逻辑承认可以反复取用会发生
线性逻辑不承认用一次就被消耗不发生
相干逻辑加以限制与结论无关就不能用不发生

1987年让-伊夫·吉拉尔提出的线性逻辑,把前提当作资源而非信息来处理。

想想自动售货机就很好懂。有一枚硬币就能买一瓶饮料,可不能拿同一枚硬币买两瓶,因为硬币用掉就没了。

古典逻辑把前提当成可以随意复制的信息,所以表达不了这条再自然不过的约束。

一路影响到今天的语言设计

这个想法如今已被写进编程语言的设计里。

  • “线性类型”:用类型约束值只能用一次,防止资源被重复使用
  • “Rust 的所有权”:某个值的主人始终只有一个,交出去的一方就用不了了
  • “并发的安全性”:在编译期保证同一份资源不会被多方同时碰到

文件关掉之后又去写入这类错误之所以能在设计阶段掐掉,靠的正是这套想法。

为了拦住圣诞老人而提议删掉的一条规则,四十年后成了内存安全的工具——这个走向实在不好预料。

集合论里也会出同样的事

这个结构不止于语言的话题。

朴素集合论认为,只要写下条件,满足该条件者的全体就构成一个集合。那么就来考虑满足“若以自身为元素,则圣诞老人存在”这个条件者的集合。

于是在考察这个集合是否包含自身的过程中,完全相同的推理就启动了,圣诞老人的存在被导了出来。

这与罗素悖论并列,成了显示朴素造集合之法很危险的例子。我知道这个问题时,对真凶竟是那条理所当然到根本没被当作怀疑对象的规则这个走向,着实吃了一惊。

为何说它比说谎者更麻烦

最后把这个问题对逻辑学家而言为何严重,整理一下。

  • “不用否定”:增加真值之类围着否定打转的对策统统失效
  • “结论可以随便挑”:任何主张都能证明,体系彻底失去意义
  • “用到的规则很少”:只靠条件句的处理就成立,几乎没有可削的部分
  • “直觉主义逻辑里也会出”:舍掉排中律也躲不掉

第三条尤其难办。若是说谎者悖论,还能用“承认既非真也非假的值”这一手;可库里这边压根就没在谈真假,那条退路打一开始就不存在。

剩下的选项只有三个:禁止自指、限制真值谓词、舍掉收缩规则。选哪个都要失去点什么。

它逼着人去动逻辑学工具箱里最不容易被怀疑的那条规则——就这一点而言,这一句话的破坏力实在突出。

与自指有关的悖论

一想谈论自身,意义就定不下来——下面是与此相关的悖论。

结语

本文解读了“库里悖论”。

不用否定,仅凭一句话就能证明一切主张。它的射程比说谎者悖论更广,而且把讨论一路推到了让人去怀疑“同一前提用几次都一样”这条规则的地步。

越是觉得无从怀疑的东西,其实越是一次都没被检查过。想到逻辑学的地基上也有这样的地方,就觉得这个问题相当有味道。

想返回悖论列表的读者请点击下方链接。

我们下一篇文章见。

世界经典悖论大全——哲学、数学、物理、经济学著名悖论完全解读zh.senkohome.com/paradox-list/