# 第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|)$$
> * 一个语句在某个情形为真当且仅当其真值至少达到（由语境确定的）可接受性水平。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wxflogic.gitbook.io/logic/chapter10.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
