命题逻辑的第一个难点就是蕴涵词的解释。尽管逻辑教材提供了大量解释,但是很少有人提供一个更直接的理解方式。这里,我尝试从单调推理的角度直接推理出蕴涵词的真值表。
问题
本文假设读者具备基本的命题逻辑知识(知道命题演算的定义和基本性质),在此基础上进一步讨论以下问题:
或者说,
为什么蕴涵词 \(\rightarrow\) 的标准解释是:
p q p→q 0 0 1 0 1 1 1 0 0 1 1 1
非形式地做个比喻,
为什么:如果猫会飞,那么猪会飞?
(当然,非形式的讨论总是存在弱点,很快我们就会看到这弱点在哪里。)
由于讨论的是命题逻辑,所以本文不区分「真」与「可证」两个概念。
一些常见解释及其弱点
转换为等价命题
把 \(p \rightarrow q\) 等价为 \(\lnot p \lor q\) 之类的命题,或者等价为「“如果 p 则 q”找不到反例」。
这种方法有助于记忆真值表,但对理解定义没有任何帮助。
集合论解释
对熟悉集合论的读者来说,最自然的想法可能是这样的:
对每个原子 \(p\) ,当 \(p\) 为真时,存在一个集合 \(P\) ,其中的元素 \(x \in P\) 都可以使得 \(p\) 为真。
如果 \(p \rightarrow q\) ,也就是说 \(P\) 是 \(Q\) 的子集。
那么自然地,
如果 \(p\) 为假,那么其对应的集合 \(P=\emptyset\) ,而空集是任何集合的子集!
不难发现这个解释有重大缺陷:
- 敏锐的读者将注意到,我们已经脱离了命题逻辑(零阶逻辑),而进入了一阶逻辑。一阶逻辑和零阶逻辑有很大不同(比如,存在一个判定过程判定命题逻辑的语句是否可证)。我们不希望在解释零阶逻辑时引入一阶逻辑的概念。
- 命题与集合间的关系并不显然。很难说到底是“空集是任何集合的子集”导致了“假蕴涵任何命题”,还是“假蕴涵任何命题”导致了“空集是任何集合的子集”。
与接下来的两个更“直接”的解释相比,这种解释看上去好像技术含量很高,但反而对理解毫无助益。
命题逻辑公理模式
命题逻辑有公理模式
\(p \rightarrow (q \rightarrow p)\)
又称肯定前件律。逻辑的可靠性要求对任何命题 \(p\) 和 \(q\) 该公理模式都为真,枚举真值表,只有两个解:平凡解和蕴涵词的标准解释。换句话说,这个公理唯一确定了蕴涵词的非平凡解释。
同样,不难发现这种解释的缺点:
- 很难说到底是「蕴涵词的标准解释」导致了这个公理模式的设置,还是反过来。
- 就算这个公理模式在逻辑上更先,那为什么要设计这样的公理模式?
尽管有这样的缺点,但是我们沿着第二点这条路走下去,终将会发现本文提出的答案。
「若-则」解释
蕴涵 \(p \rightarrow q\) 最自然的「翻译」是:如果 p,那么 q。
面对这样的命题,
如果 0=1,那么猪会飞。
必须承认这个「如果-那么」命题本身没问题,因为根本找不出让条件成立的情况!而条件不可能成立,后果自然也不可能成立。所以这个命题表达了一个合理的推理。
如果你愿意超越人类(指不做人了),那么可能这是一个足够好的解释了。正常人类的语感仍然会让你觉得很奇怪。这也难怪,因为正常人类的语言从来不直接对应于「蕴涵」!硬要说的话,更像「推理规则」。对人类来说,一句有意义的「若-则」一定是前提条件在一定条件下可能成立的,或者就算不成立,也让人感到是有成立的希望的。
对比这两个说法:
- 如果能取得好成绩,那么【如果好好学习,那么能取得好成绩】。
- 如果有定理 \(P \rightarrow Q\),也有定理 \(P\),那么有定理 \(Q\)。
你觉得日常语言的「若-则」更像前者还是后者呢?(提示:正常人应该选择后者。)
当然,自然语言的「若-则」用途更广。它甚至可以表达这种例子:
如果我早几年买房子,现在负担也不会这么重。
这是一种完全合理的表达。
正是这种「若-则」解释让我们发现了蕴涵和日常语言在「前提不可能成立」时的不同。因此,这样的解释其实什么都没有解释,只是强行让我们修正我们对母语的语感罢了。但它也构成了一条重要线索,将在后文帮助我们走向最终的答案。
拼凑的碎片
Agenda:
- 命题逻辑是一种人造物(共识),设计它时我们是有目的和预期的;
- 我们对命题逻辑的期望导致了命题逻辑应该是单调的;
- 单调性导出了肯定前件律;
- 肯定前件律唯一确定了蕴涵词的非平凡解释(前文已述)。
对命题逻辑的预期
数理逻辑肇始于莱布尼茨的“妄想”:用数学把握人类思维,从而通过运算就可以确定任意命题的真与假。而我们对数学家的本性有足够的了解:他们特别喜欢简单的结构,尤为讨厌过多的公设。命题逻辑就是这样的简单系统,也就是取消了量化的一阶逻辑。而一阶逻辑可以用于描述一大批数学了。毕竟在描述人类全部思想之前,数学家“率先”担心起了自己的推理会不会出问题,或者说,数学家之间交换证明看上去好像达成了共识,那实际上有没有达成共识呢?推理过程是不是有致命的缺陷,导致所有数学家都犯错了呢?
数学家想到,既然证明和命题都是用语言文字写下的,那不妨设计一种更简单的语言,从而研究这种语言上的推理会不会出错。元系统中的操作应该尽可能少。
- 目标:仅使用一些特定符号及其演算,把握真理的一部分结构。
- 可靠性:通过符号演算得到的结论,不论如何解释,总是真的。3
- 完全性:所有真理都可以被这种演算确认。
不妨暂时认同我们设计出的语言具有这些性质,再讨论结果。
到这里,我们应该已经可以设计出 \(\land \quad \lor\) 等符号了。
- 如果有 \(p\) 和 \(q\) 那么有 \(p \land q\)。
- 如果有 \(p \land q\) 那么有 \(p\) 也有 \(q\)。
- 如果有 \(p\) 那么对任何命题 \(q\) 有 \(p \lor q\)。
- ……
(再次提醒,这里的「若-则」是元语言描述的推理规则而非系统内的蕴涵。)
单调逻辑
要在数学中获得应用,一个基本条件是,已经推出的、经过确认的结论,将永远是真的。对数学来说,这是非常自然的结论,否则随着我们添加条件,结论反而会越来越少!在自然语言中,这种例子比比皆是。比如:
我总是下课后跑去操场玩。
但是假设我们添加一个前提:
我昨天没做作业,下课后老师叫我到办公室补作业。
第一句话就失效了。4
而数学无论在什么时候都必须一致。比如有这样一个集合 \(S\) 满足 \(\forall x \in S, x > 100\),这个 \(S\) 就已经固定下来了。
从单调逻辑的要求,可以直接导出这样的结果:
(肯定后件律-非形式陈述)在 p 成立的前提下,任何命题 q 作为前提,总是有 p。
(这个结论无法表达成推理规则,因为它并不生成新的命题。)
如何把这个性质表达到形式语言中呢?如果不能表达这个性质,这个语言实际上就没有抓住我们感兴趣的「推理」的性质。
蕴涵也是命题
通过将推理从解释中解放出来,我们就可以更直接地把握了推理本身。但是,到目前为止,这个系统内部还无法进行推理。因为它无法描述命题的依赖关系。为此我们以「前提-结论」的直觉引入蕴涵:
- 引入逻辑联结词 \(\rightarrow\),构造形如 \(p \rightarrow q\) 的命题。
- 假言推理(Modus Pones):如果有 \(p \rightarrow q\) 和 \(p\),那么有 \(q\)。
做这样的操作之后,我们的系统内部就可以表达「前提-结论」了。还有一个重要结果是,许多推理规则全部可以降格成系统内的命题。事实上,命题逻辑只需要 MP 一个推理规则就够了。我们把肯定后件律的非形式陈述翻译出来:
「命题 q 作为前提有 p」 表达为 \(q \rightarrow p\)
「在 p 的前提下,命题 q 为前提有 p」 表达为 \(p \rightarrow (q \rightarrow p)\)
于是,我们得到了肯定后件律——一个公理模式。上文我们已经知道,根据这条公理,我们可以唯一确定蕴涵词的非平凡解释。
进一步的问答
这里似乎有点矛盾,因为「蕴涵词」正是以「如果……就」的直觉引入的。如果它不符合我们的直觉,岂不是说明我们的设计出了问题?
其实并非如此。我们发现蕴涵词和日常语言仅仅在前提为假的情况下有所不同,而推理的单调性对数学来说非常有用,所以我们容忍了这种不一致。
蕴涵词只是一种逻辑联结词,和 \(\land \quad \lor\) 没什么区别,并不表示 p 和 q 有什么本质上的关系。
没错,这不妨碍我们探究为什么它是这么设定的,也不影响我们对它的直觉就是「若-则」。
我还是看不懂?!
复述一遍核心思想:如果 P 真,那么 P 在任何情况下都真。
我能想到的最可能的一个原因是,把「若-则」当成了因果关系。自然语言中「如果天下雨,那么地面是湿的」。而蕴涵词的「若-则」则是一个静态的描述关系,前件和后件在逻辑上并没有先后之分(仅仅是从两个命题构造出一个新命题的过程)。
结语
原为作者为某知乎问题写的答案,后因注销知乎账号原因被删减,现在……(略)
好吧,是因为一个老同学在学逻辑,也产生了完全相同的困惑,所以把文章重写了一遍。
文中将实质蕴涵的解释归结到经典逻辑的单调性上。虽然起初是独立想到的(看了不少相关资料,从未有一个人从这个角度陈述),但是后来查阅资料发现这个结论已经是逻辑学常识了5。唯一让我困惑的是,为什么这种解释至今尚未推广开来……
蕴涵式指形如 \(p \rightarrow q\) 的命题。其中 \(p\) 称为前件,\(q\) 称为后件,\(\rightarrow\) 称为蕴涵词。
本文中的一切「真」均指标准解释。蕴涵词的标准解释称为实质蕴涵。
这个性质也被叫做「逻辑有效性」。
有更强的逻辑可以解决这种情况。
《非单调逻辑在科研中的两个例子》:「非单调逻辑则拒绝蕴涵的单调性」。