命题逻辑的第一个难点就是蕴涵词的解释。尽管逻辑教材提供了大量解释,但是很少有人提供一个更直接的理解方式。这里,我尝试从单调推理的角度直接推理出蕴涵词的真值表。

问题

本文假设读者具备基本的命题逻辑知识(知道命题演算的定义和基本性质),在此基础上进一步讨论以下问题:

为什么命题逻辑中的蕴涵词 \(\rightarrow\) 在前件1为假时蕴涵式为真2

或者说,

为什么蕴涵词 \(\rightarrow\) 的标准解释是:

pqp→q
001
011
100
111

非形式地做个比喻,

为什么:如果猫会飞,那么猪会飞?

(当然,非形式的讨论总是存在弱点,很快我们就会看到这弱点在哪里。)

由于讨论的是命题逻辑,所以本文不区分「真」与「可证」两个概念。

一些常见解释及其弱点

转换为等价命题

把 \(p \rightarrow q\) 等价为 \(\lnot p \lor q\) 之类的命题,或者等价为「“如果 p 则 q”找不到反例」。

这种方法有助于记忆真值表,但对理解定义没有任何帮助。

集合论解释

对熟悉集合论的读者来说,最自然的想法可能是这样的:

对每个原子 \(p\) ,当 \(p\) 为真时,存在一个集合 \(P\) ,其中的元素 \(x \in P\) 都可以使得 \(p\) 为真。

如果 \(p \rightarrow q\) ,也就是说 \(P\) 是 \(Q\) 的子集。

那么自然地,

如果 \(p\) 为假,那么其对应的集合 \(P=\emptyset\) ,而空集是任何集合的子集!

不难发现这个解释有重大缺陷:

  1. 敏锐的读者将注意到,我们已经脱离了命题逻辑(零阶逻辑),而进入了一阶逻辑。一阶逻辑和零阶逻辑有很大不同(比如,存在一个判定过程判定命题逻辑的语句是否可证)。我们不希望在解释零阶逻辑时引入一阶逻辑的概念。
  2. 命题与集合间的关系并不显然。很难说到底是“空集是任何集合的子集”导致了“假蕴涵任何命题”,还是“假蕴涵任何命题”导致了“空集是任何集合的子集”。

与接下来的两个更“直接”的解释相比,这种解释看上去好像技术含量很高,但反而对理解毫无助益。

命题逻辑公理模式

命题逻辑有公理模式

\(p \rightarrow (q \rightarrow p)\)

又称肯定前件律。逻辑的可靠性要求对任何命题 \(p\) 和 \(q\) 该公理模式都为真,枚举真值表,只有两个解:平凡解和蕴涵词的标准解释。换句话说,这个公理唯一确定了蕴涵词的非平凡解释。

同样,不难发现这种解释的缺点:

  1. 很难说到底是「蕴涵词的标准解释」导致了这个公理模式的设置,还是反过来。
  2. 就算这个公理模式在逻辑上更先,那为什么要设计这样的公理模式?

尽管有这样的缺点,但是我们沿着第二点这条路走下去,终将会发现本文提出的答案。

「若-则」解释

蕴涵 \(p \rightarrow q\) 最自然的「翻译」是:如果 p,那么 q。

面对这样的命题,

如果 0=1,那么猪会飞。

必须承认这个「如果-那么」命题本身没问题,因为根本找不出让条件成立的情况!而条件不可能成立,后果自然也不可能成立。所以这个命题表达了一个合理的推理。

如果你愿意超越人类(指不做人了),那么可能这是一个足够好的解释了。正常人类的语感仍然会让你觉得很奇怪。这也难怪,因为正常人类的语言从来不直接对应于「蕴涵」!硬要说的话,更像「推理规则」。对人类来说,一句有意义的「若-则」一定是前提条件在一定条件下可能成立的,或者就算不成立,也让人感到是有成立的希望的。

对比这两个说法:

  1. 如果能取得好成绩,那么【如果好好学习,那么能取得好成绩】。
  2. 如果有定理 \(P \rightarrow Q\),也有定理 \(P\),那么有定理 \(Q\)。

你觉得日常语言的「若-则」更像前者还是后者呢?(提示:正常人应该选择后者。)

当然,自然语言的「若-则」用途更广。它甚至可以表达这种例子:

如果我早几年买房子,现在负担也不会这么重。

这是一种完全合理的表达。

正是这种「若-则」解释让我们发现了蕴涵和日常语言在「前提不可能成立」时的不同。因此,这样的解释其实什么都没有解释,只是强行让我们修正我们对母语的语感罢了。但它也构成了一条重要线索,将在后文帮助我们走向最终的答案。

拼凑的碎片

Agenda:

  1. 命题逻辑是一种人造物(共识),设计它时我们是有目的和预期的;
  2. 我们对命题逻辑的期望导致了命题逻辑应该是单调的;
  3. 单调性导出了肯定前件律;
  4. 肯定前件律唯一确定了蕴涵词的非平凡解释(前文已述)。

对命题逻辑的预期

数理逻辑肇始于莱布尼茨的“妄想”:用数学把握人类思维,从而通过运算就可以确定任意命题的真与假。而我们对数学家的本性有足够的了解:他们特别喜欢简单的结构,尤为讨厌过多的公设。命题逻辑就是这样的简单系统,也就是取消了量化的一阶逻辑。而一阶逻辑可以用于描述一大批数学了。毕竟在描述人类全部思想之前,数学家“率先”担心起了自己的推理会不会出问题,或者说,数学家之间交换证明看上去好像达成了共识,那实际上有没有达成共识呢?推理过程是不是有致命的缺陷,导致所有数学家都犯错了呢?

数学家想到,既然证明和命题都是用语言文字写下的,那不妨设计一种更简单的语言,从而研究这种语言上的推理会不会出错。元系统中的操作应该尽可能少。

  1. 目标:仅使用一些特定符号及其演算,把握真理的一部分结构。
  2. 可靠性:通过符号演算得到的结论,不论如何解释,总是真的。3
  3. 完全性:所有真理都可以被这种演算确认。

不妨暂时认同我们设计出的语言具有这些性质,再讨论结果。

到这里,我们应该已经可以设计出 \(\land \quad \lor\) 等符号了。

  1. 如果有 \(p\) 和 \(q\) 那么有 \(p \land q\)。
  2. 如果有 \(p \land q\) 那么有 \(p\) 也有 \(q\)。
  3. 如果有 \(p\) 那么对任何命题 \(q\) 有 \(p \lor q\)。
  4. ……

(再次提醒,这里的「若-则」是元语言描述的推理规则而非系统内的蕴涵。)

单调逻辑

要在数学中获得应用,一个基本条件是,已经推出的、经过确认的结论,将永远是真的。对数学来说,这是非常自然的结论,否则随着我们添加条件,结论反而会越来越少!在自然语言中,这种例子比比皆是。比如:

我总是下课后跑去操场玩。

但是假设我们添加一个前提:

我昨天没做作业,下课后老师叫我到办公室补作业。

第一句话就失效了。4

而数学无论在什么时候都必须一致。比如有这样一个集合 \(S\) 满足 \(\forall x \in S, x > 100\),这个 \(S\) 就已经固定下来了。

从单调逻辑的要求,可以直接导出这样的结果:

(肯定后件律-非形式陈述)在 p 成立的前提下,任何命题 q 作为前提,总是有 p。

(这个结论无法表达成推理规则,因为它并不生成新的命题。)

如何把这个性质表达到形式语言中呢?如果不能表达这个性质,这个语言实际上就没有抓住我们感兴趣的「推理」的性质。

蕴涵也是命题

通过将推理从解释中解放出来,我们就可以更直接地把握了推理本身。但是,到目前为止,这个系统内部还无法进行推理。因为它无法描述命题的依赖关系。为此我们以「前提-结论」的直觉引入蕴涵:

  1. 引入逻辑联结词 \(\rightarrow\),构造形如 \(p \rightarrow q\) 的命题。
  2. 假言推理(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。唯一让我困惑的是,为什么这种解释至今尚未推广开来……


1

蕴涵式指形如 \(p \rightarrow q\) 的命题。其中 \(p\) 称为前件,\(q\) 称为后件,\(\rightarrow\) 称为蕴涵词。

2

本文中的一切「真」均指标准解释。蕴涵词的标准解释称为实质蕴涵。

3

这个性质也被叫做「逻辑有效性」。

4

有更强的逻辑可以解决这种情况。

5

非单调逻辑在科研中的两个例子》:「非单调逻辑则拒绝蕴涵的单调性」。