# 第10章：模糊性：如何在滑坡上停止下滑？

当我们讨论同一性这一主题时，这里有另一个相关的问题。所有东西都会随时间而损耗。有时，零件会被更换。摩托车和汽车会换新的离合器，房子会换新的屋顶；甚至人体内的单个细胞也会随着时间而更换。这样的变化并不会影响上述对象的同一性。当我更换摩托车的离合器时，它还是原来那辆车。现在假设经过几年时间后，我更换了我的摩托车黑霹雳的每一个零件。作为一个细心的人，我保留了所有旧的零件。当全部零件更换完后，我把旧零件重新组装回去造出原来那辆车。但我是从黑霹雳开始的，而更换摩托车的一个零件并不会影响其同一性：它还是原来那辆车。因此，每次更换之后，得到的机器仍然是黑霹雳；直到最后，它也还是黑霹雳。但我们知道这不可能是对的。黑霹雳现在正在车库里它的旁边放着呢。

下面是相同问题的另一个例子。一个 5 岁的人（在生物学上）是个小孩。如果某人是个小孩，一秒钟之后他（她）还是小孩。这样，再过一秒，他（她）还是小孩，再过一秒，再过一秒，……。因此，过了 630720000 秒后，他（她）还是小孩。但那时他（她）已经 25 岁了！

这样的论证被认为是由欧布里德（同样是他创造了第 5 章中的说谎者悖论）创造的。它们现在被称为**堆积悖论**（_sorites paradox_）。（它的一个标准形式大意是，每次增加一粒沙，永远也形成不了沙堆；“sorites”来自于希腊语“soros”，意思是“堆”。）这些是逻辑学中最让人头痛的一些悖论。当所使用的谓词（“是黑霹雳”，“是小孩”）在某种意义上是**模糊**（_vague_）的时候，悖论就会产生。模糊谓词是指，其适用性可以容忍非常小的变化：如果它适用于某个对象，那么该对象一个非常小的变化不会更改这一事实。我们日常对话中使用的几乎所有谓词在这个意义上都是模糊的：“是红的”、“是醒的”、“是高兴的”、“是醉的”，甚至“是死的”（死也需要时间）。因此，堆积悖论这类滑坡论证在我们的推理中可能极为普遍。

为了集中探讨关于它们的问题，让我们更仔细地考察其中一个论证。令杰克是那个 5 岁的小孩。令 $$a_0$$ 为语句“杰克 0 秒后是小孩”。令 $$a_1$$ 为语句“杰克 1 秒后是小孩”，如此等等。如果 $$n$$ 是任一自然数，$$a_n$$ 就是语句“杰克 $$n$$ 秒后是小孩”。令 $$k$$ 为某个巨大的自然数，至少不小于 630720000。我们知道 $$a_0$$ 为真。（0 秒过后，杰克仍然是 5 岁。）对每个自然数 $$n$$，我们知道 $$a_n\to a_{n+1}$$（在任何时刻如果杰克是个小孩，一秒后他还是小孩。）我们可以通过使用一系列分离规则把所有这些前提串连在一起，如下所示：

$$
\begin{array}{ccc}
\dfrac{a_{0}\quad a_{0}\to a_{1}\qquad\quad}{\qquad\qquad\dfrac{a_{1}\quad a_{1}\to a_{2}}{a_{2}}}\\
 & \ddots\\
 &  & \dfrac{a_{k-1}\quad a_{k-1}\to a_{k}}{a_{k}}
\end{array}
$$

最终结论是 $$a_k$$，而我们知道它不为真。一定是哪里出错了，而且似乎没有多少回旋的余地。那么我们有什么要说的呢？这里是一个解答，有时称为**模糊逻辑**（_fuzzy logic_）。是小孩似乎是逐渐消失的，正如（在生物学上）是成人也是逐渐显现的。假定“杰克是小孩”的真值也由真渐变为假似乎是自然的。于是，真是有程度的。假设我们用 0 和 1 之间的数字来衡量真的程度，1 表示完全为真，0 表示完全为假。那么，每个情形都对基本语句指派一个这样的数。

包含否定和合取这样算子的语句的真值如何呢？随着杰克长大，“杰克是小孩”的真值就变小。“杰克不是小孩”的真值似乎也相应变大。这提示 $$\neg a$$ 的真值为 1 减去 $$a$$ 的真值。假设我们把 $$a$$ 的真值记作 $$|a|$$，那么我们有：

$$
|\neg a|=1-|a|
$$

下表是一些真值样本：

| $$a$$ | $$\neg a$$ |
| :---: | :--------: |
|   1   |      0     |
|  0.75 |    0.25    |
|  0.5  |     0.5    |
|  0.25 |    0.75    |
|   0   |      1     |

合取式的真值呢？一个合取式最多只能和它最差的部分一样好。因此假设 $$a\land b$$ 的真值是 $$|a|$$ 和 $$|b|$$ 的**极小值**（_minimum_）（更小的）是自然的：

$$
|a\land b|=\min(|a|,|b|)
$$

下表是一些真值样本：

| $$a\land b$$ |    1   |  0.75  |    _0.5_   |  0.25  |  0  |
| :----------: | :----: | :----: | :--------: | :----: | :-: |
|       1      |    1   |  0.75  |    _0.5_   |  0.25  |  0  |
|     0.75     |  0.75  |  0.75  |    _0.5_   |  0.25  |  0  |
|      0.5     |   0.5  |   0.5  |    _0.5_   |  0.25  |  0  |
|    _0.25_    | _0.25_ | _0.25_ | _**0.25**_ | _0.25_ | _0_ |
|       0      |    0   |    0   |     _0_    |    0   |  0  |

$$a$$ 的真值在最左边一列，$$b$$ 的真值在最上一行。$$a\land b$$ 的对应真值在相应行和列相交的地方。比如，如果我们想找到 $$a=0.25$$ 和 $$b=0.5$$ 时 $$a\land b$$ 的真值，我们就看斜体的行和列相交的地方。结果是粗体显示的那个值。

类似的，析取式的值是析取项值的**极大值**（_maximum_）（更大的）：

$$
|a\lor b|=\max(|a|,|b|)
$$

读者可以自行构造一个它的真值样本表。注意，根据上面的假定，$$\neg$$，$$\land$$ 和 $$\lor$$ 仍然是真值函数。即，比如 $$a\land b$$ 的真值由 $$a$$ 和 $$b$$ 的真值确定。只是现在这些值不再是 $$T$$ 和 $$F$$，而是 0 和 1 之间的数。（不过，或许值得一提的是，如果我们把 $$1$$ 看作 $$T$$，把 $$0$$ 看做 $$F$$，在只涉及 $$1$$ 和 $$0$$ 时的结果和第 2 章中的真值函数是相同的。这一点读者可以自行验证。）

条件句的真值呢？我们在第 7 章中看到，有很好的理由认为 $$\to$$ 不是真值函数。但让我们把那些顾虑暂时放在一边。如果它是一个真值函数，当考虑真的程度时，它会是哪个函数？似乎没有很明显的答案。这里是一个（相当标准的）建议，至少看上去给出了**某种**正确的结果。

* 若 $$|a|\leq|b|$$，则 $$|a\to b|=1$$
* 若 $$|b| < |a|$$，则 $$|a\to b|=1-(|a|-|b|)$$

（$$<$$ 指“小于”；$$\leq$$ 指“小于或等于”。）

这样，如果前件没有后件真，该条件句就完全真。如果前件比后件更真，该条件句的真值就是最大真值减去二者真值之差。下表是一些真值样本：

| $$a\land b$$ |  1  | 0.75 |  0.5 | 0.25 |   0  |
| :----------: | :-: | :--: | :--: | :--: | :--: |
|       1      |  1  | 0.75 |  0.5 | 0.25 |   0  |
|     0.75     |  1  |   1  | 0.75 |  0.5 | 0.25 |
|      0.5     |  1  |   1  |   1  | 0.75 |  0.5 |
|     0.25     |  1  |   1  |   1  |   1  | 0.75 |
|       0      |  1  |   1  |   1  |   1  |   1  |

（回想一下，$$a$$ 的值在最左一列，$$b$$ 的值在最上一行。）

有效性如何呢？一个推断是有效的，若结论在前提成立的每个情形都成立。但现在什么是在某个情形成立呢？在足够真的时候。但多真是足够真呢？这要看语境。例如，“是一辆新自行车”是一个模糊谓词。如果你去买自行车，经销商告诉你某辆车是新的，你会期望它是从未用过的。即，你期望“这是一辆新自行车”具有真值 1。另一方面，假设你去参加自行车公路赛，被要求选新车，你会挑选那些不超过一年的车。换言之，你可接受的新车标准要更宽松。“这是一辆新自行车”只需要比方说 0.9 或更高的真值。

因此，我们假设存在某个由语境确定的可接受性水平。这是一个介于 0 和 1 之间的数字——在极端情况下也许就是 1 本身。让我们把这个数字记为 $$\varepsilon$$。于是一个推断对某个语境是有效的，当且仅当结论的真值在前提的真值都不小于 $$\varepsilon$$ 的每个情形也都不小于 $$\varepsilon$$。

那么，所有这些和堆积悖论有什么关系呢？假设我们有一个堆积的序列。像前面一样，令 $$a_n$$ 为语句“杰克 $$n$$ 秒后是小孩”；但为了让事情更容易处理，让我们假设杰克 4 秒后就长大了！那么一个真值记录表可以是：

| $$a_0$$ | $$a_1$$ | $$a_2$$ | $$a_3$$ | $$a_4$$ |
| :-----: | :-----: | :-----: | :-----: | :-----: |
|    1    |   0.75  |   0.5   |   0.25  |    0    |

$$a_0\to a_1$$ 具有真值 0.75（ = (1 - (1 - 0.75)）；$$a_1\to a_2$$ 的真值也是 0.75；事实上，每个形如 $$a_n\to a_{n+1}$$ 的条件句的真值都是 0.75。

关于堆积悖论这些告诉了我们什么，依赖于可接受性水平，而正是这一点在起作用。假设语境要求最高的可接受性水平，即 1。在这种情况下，分离规则是有效的。因为假设 $$|a|=1$$ 且 $$|a\to b|=1$$，由于 $$|a\to b|=1$$，我们必有 $$|a|\leq |b|$$。由此可得 $$|b|=1$$。这样，堆积论证是有效的。不过，在这种情况下，每个条件句前提具有真值 0.75，而这（在该语境下）是不可接受的。

另一方面，如果我们设定可接受性水平低于 1，那么分离规则就变得无效。为了解释方便，假设 $$\varepsilon$$ 为 0.75。正如我们已看到的，$$a_1$$ 和 $$a_\to a_2$$ 都具有真值 0.75，但 $$a_2$$ 的真值是 0.5，小于 0.75。

于是，无论你以哪种方式看，该论证都不成立。要么某个前提不可接受，要么如果它们是可接受的，结论却不能有效地推出。为什么我们这么容易就被堆积论证所欺骗呢？也许因为我们混淆了完全的真和近乎完全的真。不能对此作出区分通常不会造成什么差异。但如果你一而再、再而三如此，结果就不同了。

以上是对该问题的一种诊断。但对于模糊性问题，没有什么是简单明了的。说“杰克是个小孩”完全真，直到某个特定时间点，它变成了完全假，这有什么问题呢？问题在于，就没有这样的点。在任何地方划线都是完全任意的；它最多只能是一种约定。但现在，在杰克长大的哪个时间点他不再是 100% 的小孩呢；即在哪个时间点“杰克是个小孩”的值从完全为 1 变成低于 1 的值呢？在任何地方划线似乎都和前面一样是任意的。如果这是对的，我们就没有真正解决模糊性最根本的问题：我们只是转移了问题。

> 本章要点
>
> * 真值是介于 0 和 1（含）之间的数字。
> * $$|\neg a|=1-|a|$$
> * $$|a\lor b|=\max(|a|,|b|)$$
> * $$|a\land b|=\min(|a|,|b|)$$
> * $$|a\to b|=1$$，若$$|a|\leq |b|$$；否则，
> * $$|a\to b|=1-(|a|-|b|)$$
> * 一个语句在某个情形为真当且仅当其真值至少达到（由语境确定的）可接受性水平。
