这里的核心问题其实在这一句话上:
“如果 p,那么 q"可表为“p→q”
问题是绝大多数情况下不可。
实际上如果要强调不同的 conditional(条件句),我甚至一般不用
,而是用
表达 material implication(实质蕴含),而把
留给更为麻烦的那个玩意儿。
而 material implication 嘛,为了避免各种和蕴含相关的问题,我不会选择用「如果……那么……」这种容易引起误解的翻译,而更喜欢直接简单直白的「(非……) 或者 ……」,这里的括号不是省略,而单纯就是括号。至于为什么要加括号,后面你会懂的。
按照题目中的例子就是这样:如果我们 用 p 表达「明天下雨」,用 q 表达「我在家看书」,那么
就是「(并非 明天下雨),或者,我在家看书」。
至于「(并非 明天下雨),或者,我在家看书」是否等于「如果明天下雨,那么我在家看书」,这是自然语言的问题。显然,你能感觉到哪里不对。后面再说。
当然,有嗯哼会说括号不是自然语言的一部分。那就这样说:「以下两件事情至少有一个成立:第一种可能:……为假;第二种可能:……为真」。然后就会有嗯哼说,「事情」「可能」「至少」「一个」没有定义。诶嘿。
表面上,我们有一些从 日常语言 到 命题逻辑语言 的自然翻译:
「小明喜欢苹果和梨」翻译为「小明喜欢苹果,并且,小明喜欢梨」。
或者说, S v (P 和 Q) = (S v P)
(S v Q) ,其中
是「并且」的意思。(生草的点在于,这个 v 是指动词,但是它写出来就真的很像分配律啊,S 是主语,PQ 随便选的两个字母,不是蟛蜞。)
于是,这个「和」被翻译成了命题逻辑意义上的「并且」。(当然还有一些额外的 操作,比如说把「小明喜欢」复制多了一份。)然后我们只需要把两个原子命题分别记作
,得到
。万事大吉。
但是,只要稍微加一个嵌套,就能体现出自然语言和逻辑语言之间的隔阂:
- 老张不喜欢苹果和香蕉
- 老张不喜欢苹果或香蕉
这两句话有时候是一个意思。从逻辑的角度上来说,这是不可思议的事情,但是从语言使用的角度来说倒是很好理解,因为断言的本性是确定的。所以我们会倾向于忽略那种使其传达了一个不确定信息的解读。也就是说,我们会直接理解成「(1) 老张不喜欢苹果 并且 (2) 老张不喜欢香蕉」这样一句传达了两个确定信息的语句,而这一般等价于「老张不喜欢 苹果 或者 香蕉 中的任何一种」。当然这个「苹果或者香蕉」中的「或者」在某种意义上已经不是一个命题运算了,它更像是集合的并运算。[1]当然了,你也可以不考虑这种 overload 的情况,转而认为这里的「不」统治的是下面这个语句:「老张喜欢苹果,或者,老张喜欢香蕉」——你把这个以「或者」为连接词的语句整体给否定了。
说简单一点,就是
。
那么我们大概会如何表达「老张不喜欢苹果或老张不喜欢香蕉」的情况?我不知道,瞎猜一下:
- 老张可能不喜欢苹果,[停顿] 或者香蕉?
- 老张不喜欢苹果,但也有可能是不喜欢香蕉,不过一定是两者之中至少有一个,我记不清楚了。
——这些说辞归根结底是因为我们希望提供一个准确的信息给对方,降低自己的责任,而降低到最后,我们甚至会加一个 catch-all 选项,比如说 otherwise——这就导致,从逻辑上说,这句话完全是 0 信息的废话了(老张可能不喜欢苹果,[停顿] 或者香蕉?[再停顿] 或者是其它什么东西),但是真的是 0 信息的废话吗?如果你真的给了苹果,那事后那个人会不会说「我早告诉过你老张可能讨厌苹果了你怎么还上苹果」?但是光从逻辑的观点看,「苹果」「香蕉」「其它」构成了一个穷尽的划分,因此只要我们认为一个人可能讨厌某些东西是必然成立的,那么一个人「讨厌苹果 或者 讨厌香蕉 或者 讨厌其它什么」就是一个空洞自然成立的描述。也就是说,逻辑永真式在日常语言中是可以包含信息的。当然,你也可以说这根本就不是逻辑永真式。但是总而言之就是这个意思。
而实际上,确定地表达「老张不喜欢苹果或老张不喜欢香蕉」是很滑稽也很罕见的情况。如果我们确实是记不清楚了,那么你怎么可能言之凿凿地说就是两者中必定有一个?这是一款开放选项的冒险类游戏,背锅侠将会在没有提供所有信息的情况下背上锅。
类似的不吻合也出现在「或」的多种用法中,日常语言中的或有些时候是不支持「共存」的,比如说,你支持谁?你中午想吃什么?开会地点选哪里?谁接单?谁中标?——虽然这些问题看上去都是一个 A 或 B 或 C 的情况,但是实际上我们知道一般来说这意味着只有一个。而哪怕有两个或者多个,那实际上也应该单独列一条出来,比如说:「你要叉烧还是排骨?还是双拼?」——如果「叉烧还是排骨」中的「还是」表达了经典命题逻辑中的「或」,那么「双拼」就是废话,但是我们知道有些店不支持双拼。而且实际上,「双拼」和「一份叉烧加上一份排骨」是不同的东西。而这个不同也恰好是我们发展线性逻辑的动机:
- 我有一块钱,我可以卖一个苹果
- 我有一块钱,我可以卖一个桃子
- 我有一块钱
- 因此,我可以卖一个苹果和一个桃子。
你看,我们对于「和」的分析,哪怕不涉及嵌套,似乎都是错的,如果它仅仅是一个逻辑且,它不会有任何违和的感觉。当然,这里会有人认为「可以」是那个导致错误的嵌套词,那么「想要」呢?更进一步,日常语言中的「或者」甚至也不会提供不可接受的选项:
「我想要一个苹果或者一个香蕉」
给了香蕉。
「你他妈傻逼吗?我想要一个苹果 或者一个香蕉,我没说我想要香蕉,我想要的是苹果!」
——奇怪吗?太奇怪了。所以你看这个「或者」其实是什么?是集合上的 并。它在这里的工作形式似乎更像是逻辑「且」一些。(当然,这说到底和「一个」的形式化有关,它的工作机制看上去像是在一个集合中随便挑选一个对象,但是不管这种强迫接受香蕉是不是来源于语用,这会导致这个结果看上去像是一个全称量化:既然你要一个苹果或者香蕉,那么对于任意的 x,只要 x 属于 苹果或者香蕉 这个并集,那么它都是可以的,你看,「对于任意的」凭空出现。另见后文中的驴!)
这意味着什么?这意味着自然语言和命题逻辑之间没有简单的对应关系。表面语法在一些情况下是有用的,另一些情况下则没有用。
我们无法把自然语言简单地、组合式地翻译过去。很多括号我们不知道要加在哪里,很多形式化的思路是错误的。
至于否定,其实一样困难,看看下述语句对:
- 我有两个孩子
- 我没有两个孩子
以及
- 当今法国国王是秃头
- 当今法国国王不是秃头
你可以将其直接理解为
和
的关系,但是绝大多数情况下并非如此这般。
另一个关于否定的问题就是过于强烈,很多时候否定比「并非如此这般:」表达了更加强烈的内容,可能是情感,可能是语义。比如说,「我不喜欢他」往往表达了超过「并非:我喜欢他」的含义。当然,最简单的例子还是 SEP 和 SAP 并不是单纯的二分,而 SIP 和 SOP 也不是矛盾。
这些问题当然不仅仅停留在命题的层面上,如果我们拆开句子结构,引入谓词,那么会遇到更多问题。不如说,上述空名问题实际上就出在「法国国王」这个空名上。
已知当今法国国王不存在,考虑下述三个句子:
- 当今法国国王参加了这次晚宴。
- 当今法国国王没有参加这次晚宴。
- 这次晚宴上没有当今法国国王。
这三句话里面,前两句很奇怪,因为我们在谈论一个不存在的对象,它们表面上是逻辑矛盾,但是实际上都是 not even wrong。而第三句话从某些翻译上来说和第二句应该是等价的,但是因为「主题」(subject)这个虚无缥缈的玩意儿变了,于是语感上来说就没有那么病了。(当然这里的语感本身就是一种可以扯皮的东西,你可以认为这个地方的主题根本不是「晚宴」)
但是一般来说,第二句和第三句拥有相同的逻辑形式,如果用
表示 x 出席了 y,那么三句话的翻译之中,按理说都是因为包含了一个空名 x 而导致整句失败,但是实际上似乎这不足以捕捉上面那种微妙的语感区别。
而另一个有名的困难则是代词的解释困难。
如果我们把 「ta」理解成 x,那么「有一个中国人在巴黎生活。ta 喜欢红酒。」
似乎应该翻译成:
中国人(
)
这种翻译方式(把「一个 X」翻译成特定的存在结构,然后用 x 去指称)在处理一些别的语句的时候就会出现问题。(实际上,前面已经有问题了,注意句号的断开导致实际上的直观翻译是
中国人,
,第一个存在量词仅仅管到
的左侧,而右侧的 「喜欢红酒 (x)」 中的 x 是不受约束的)
比如说,驴!
每个有一头驴的农夫都打它。
你无法用「存在」去捕获这个「驴」,而实际上一个合乎我们想要表达含义的翻译具有形式:
对于任意的农民 x,对于任意的驴 y,((并非:x 拥有 y),或者, x 打 y)。
——炸了。
当然,或许有一些逻辑系统会试图照常翻译,但是用一些别的语义来处理
或者
然后解决这个问题。但是这个时候那个系统中的
和经典逻辑中的
就不是一个东西了。
更进一步,还有完全一样的词在不同语境下解读不同的问题:
- 猫坐在垫子上,因为它很冷。
- 猫坐在垫子上,因为它很暖和。
前一句和后一句中的「它」似乎应该统一翻译,但是实际上我们会根据语境分别理解。哪怕我们采用了动态谓词逻辑(Dynamic Predicate Logic),允许 x 在不受约束的情况下出现在单独的语句中,并且根据特定的规则指向前面的某个对象,这也无法解释这里的情况。
并不是说逻辑没有用,而是说,如果数学模型建错了,数字算得儿再对也没有用。驾~
回到条件句的问题上。
最简单的条件句看上去是实质蕴含,但是实际上是形如「所有 S 都是 P」形式的「对于任意的 x,如果 x 是 S,那么 x 是 P」,或者说,按照我的翻译「对于任意的 x,((并非 x 是 S),或者 x 是 P)」。
它之所以简单,是因为它不涉及可能世界,或者说,这里的可能性都能用简单的文恩图解决。
比如说,「如果 x 是正方形,那么 x 是四边形」并不会引发那种傻逼的问题,如:如果 x 不是正方形怎么办?如果 x 已经是四边形了那又怎么办?对比下述两种不同情境下的「反驳」:
- 「如果明天不下雨,我们就上体育课。」——但是老师,天气预报已经说了明天下雨了,你说这个耍猴儿呢?
- 「如果明天下雨,我们就在课室里上语文。」——难道明天不下雨你就不上语文了吗?楽。
在思考简单的数学问题的时候,因为它们不涉及现实空间的变化,所以我们脑子里简单清晰地画出了两个圆,比如,一个对应正方形,一个对应四边形,前者落于后者中,所以这个条件句是真的。——这是外延的角度。
而另一方面,从内涵的角度上来说,我们可以想象一些同时是狗牌和钩子的玩意儿,比如说,正方形 这个钩子上直接或者间接地挂着诸如 四条边、四个等边、四个等角、四个直角、菱形、平行四边形、四边形、几何图形、多边形 ……这样的狗牌,而 四边形这个钩子就比较不幸了,上面只有 四条边、几何图形、多边形 这些狗牌。并且实际上正方形在某种意义上,之所以挂着 四条边、几何图形、多边形 这些狗牌就是借助 四边形这个 即是钩子同时也是狗牌的玩意儿 挂起来的。
从这个意义上来说,我们可以说 正方形
四边形(取 包含 的意思)。基于狗牌。
当然,我也不知道 super set 的符号被用来干这件事是不是有这方面的考量,但是问题不大。而如果一个人采用的是外延的思维,那么用 subset 来表达实质蕴含也不是不行,反正自己不要把自己绕晕就行了。
而从外延视角来说,两个圆 A 和 B 的差就构成了
的反例。也就是说,
的部分就是使得「如果 x 是 A,那么 x 是 B」不成立的部分,比如说「如果 x 是菱形,那么 x 是正方形」的反例就是那些不是正方形的菱形,也即
中的元素。
这种玩意儿构成了某种「典范」。这个 典范条件句 有两个特征:
第一个特征是拥有一个 x 去联系前后句,
第二个特征是这个陈述非常素。不涉及对于世界的变动,而只涉及分类和标签。
违背第一个条件的情况下,我们会陷入不相干的困境,而这也是发展 相干逻辑 的动机。
比如说,哪怕依旧是片面孤立静止的数学问题,我们也其实不太喜欢下面这个条件句:
如果所有圆都是四边形,那么所有三角形都是四边形。
因为一个「所有 S 都是 P」本质上就是在说「对于任意的 x,如果 x 是 A,那么 x 是 B」——而前后两句的 x 是无关的,后一句的 x 可以变成另一个变量 y。而命题逻辑会告诉我们,这句话是真的,因为「所有圆形都是四边形」不成立。嘿嘿。
而这也就是 命题逻辑条件句 在教学过程中的各种失败的源头。因为命题逻辑连接的对象往往是原子语句,而不是公式(当然,公式也不是随便都行,比如说如果 x=3 那么 y>z 在不给额外条件的情况下就是 bullshit),命题逻辑条件句中,当我们在举例的时候,前后件封闭的、无关联的句子,因此在某种意义上是前后不相干的,而相干性可能只能通过别的东西提供。
比如说,会有人想用一个别的线索串联起来这些事情,甚至我们已经用了这样的线索。
请注意「我在家看书」这句话,如果直接读,它的含义就是 我现在家看书。
而实际上,所谓的「如果明天下雨,那么(明天)我在家看书」已经更改了命题。
而背后的那个 x 是什么呢?我不知道,简单一点可能是:「对于任意一天 x,如果 x 是下雨天,那么 我在 x 那天 在家看书」。
至于你非要说这句话是不是真的,那就回到了开头:你需要寻找一个雨天,我那天没在家看书。这种寻找反例的思维模式其实是一个很直白的工作模式。但是其实它已经更接近语义后承了。
命题逻辑中的条件句缺乏一个串联前后件的 x,天生就显得是不相干的。甚至,哪怕是那些做相干逻辑的人,只要他们在做的时候依旧停留在命题的层面上,那我依旧不会特别满意这些工作。但是懂的都懂。
至于第二个问题,也就是「可能世界变动」。最简单的例子就是反事实条件句。
比如说核弹悖论:
- 如果苏联的核弹都消失了,那么美国会对苏联发动核战争。
- 如果全世界的核弹都消失了,那么苏联的核弹也都消失了。
- 因此,如果全世界的核弹都消失了,那么美国会对苏联发动核战争。
这里说粗鄙一点就是「世界」变了,而所谓的「世界」变了具体是个什么意思呢?当然我们不在思考一个固定的世界的意思。
这就和数学里面你搞不同的几何系统一个意思。
世界变动会直接导致相同的语句在两个世界中取值不同。比如说,美国拥有核弹 这个语句在 1 和 2, 3 中的真假不同。1 虽然没有明说,但是我们都知道它得有「美国拥有核弹」才能成立。但是 2 和 3 中 「美国拥有核弹」为假。那么「美国拥有核弹」这个命题放在现在来说是不是真的呢?是真的,在我们这个世界是真的。——所以它在 1 中也是真的?严格来说还需要考虑一下时间轴,但是姑且不需要考虑变动的可能性。
那么为什么「美国拥有核弹」在 2、3 中是假的呢?因为我们假设了「全世界的核弹都消失」,这抹除了「美国拥有核弹」的事实。
这也就是世界变动造成的问题。
当然,这里的「世界」不是一个世界,而是所有那些满足我们描述的世界构成的集合,不过这都是细节问题。
说白了,这就像是函数的 default value 一样,你不给,不做 initialization,就会有一个自己的值。你 initialize 一下,就被你 initialized 了。
另一个问题是关于世界变动对于「不成立的前件」的影响。
比如说,在常规数学中,让我们考虑,比如说,正 17 面体,我们说,所有正十七面体都有十八个面。或者说,「对于任意的 x,如果 x 是正十七面体,那么 x 有十八个面」——这是对的,因为你找不到一个反例,也即,一个 (并非拥有十八个面) 的 正十七面体。因为根本就没他娘的正十七面体!
但是,在核弹问题中,其实我们已经做了两次跳转了:首先已经没有苏联了,但是我们依旧能假设苏联存在,其次,苏联存在的时候是有核武器的(至少对于我们关心的那个时间节点),但是我们假设没有。而这并不会受到前述的「根本就没他娘的正十七面体」性质的陈述的影响。
这也就是最开头那个「老张不喜欢苹果和香蕉」的问题:我们默认了我们想要谈论的东西是确定并且有意义的,然后我们会自觉顺着它去想问题。我们有脑补的方向,就像是 CPU 有 branch predictor [2]一样。
不过,话又说回来了,考虑到数学也不是铁板一块,我们完全可以说,在二维空间中,一个正十七面体就是一个正十七边形,而显然正十七边形是十七边不是十八边,因此如何如何。——这也是一种反驳的思路,但是接不接受就另说了。