集合、命题逻辑和计算的重叠部分

chaos 2026-10-31 六 00:39

1. 概览:从划分能力到符号的反向塑造

把一只猫放到镜子前,用手在镜面上滑动以吸引它眼睛看向镜子,然后把手拿开,有些猫能识别到镜子里有另一只猫,对它哈气、攻击、绕到镜子后面找;而有些猫则无法识别出镜子里的对象,就像盯着空气一样发呆。

这个例子是想说明,猫能划分鸟和其他动物,并通过兴趣、追逐、进食等行为展现出这种区分的能力;

许多动物都有这种区分能力,甚至草履虫也能根据环境光强弱作出不同行为反应:趋光或避光。这说明它在行为层面能区分亮和暗。 动物在某些感官维度上的分辨力还远超人类,比如蝙蝠能借超声波区分前方是障碍物还是食物。

以上描述的其实是一种接近物理规律的机制性划分:刺激直接触发反应,中间基本没有表征(除了神经里的生物表征)和概念。

它接近非生物里的一些区分能力,比如水能通过结冰或蒸发等形态变化“区分”冷和热。

一些动物还可以用不同叫声来传达它们识别到的对象。比如猴子看到豹、鹰、蛇等不同捕食者时会发出不同叫声,同伴听到不同叫声会采取不同的躲避策略;看到食物、同类或无害对象时,也可能有不同信号。

这说明动物不仅能区分对象,还能把这种区分编码为声音信号,并传递给同类。这里比草履虫高一个层次:它把对象类别压缩成一个可传递的中间表征。

但这种声音编码还不是符号化的。人类还能进一步区分符号之间的排列关系,并主动构造稳定的外部符号。刻在石头上的图案或文字能持久保存区分结果,因为公共交流而催生出的约定好的句法组合又使这些符号可以脱离当下情境被反复摆弄、组合和推理。

符号操作的这种稳定和便捷性反过来改变了划分本身。

符号一旦可以排列、替换、推演,人就要求被符号指称的对象也有足够精确的边界;否则形式操作就无法稳定进行。

原本在感知和行动中够用的模糊划分,比如“大概像猫”“大概像狗”,一旦进入符号系统,就会被要求区分得更精确以便满足一些简单的可谈论的规律,比如交、并、补这类操作中的交换律、结合律等,它们预设了类或者集合有明确的边界;

如果允许模糊划分,就要引入模糊逻辑,这在某种程度也是可行的,但表达和符号操作都会复杂得多。

因此,划分规律、逻辑规律、算术规律或思维规律,并不完全是先于符号系统的纯粹思维结构;

它们在很大程度上是被符号操作的可操作性反向塑造的。

符号系统提供了一种便利:可摆弄、可组合、可传递、可持久保存。

人类贪恋这种便利,反过来把原本模糊的、情境绑定的感知划分改造成更精确、更形式化的范畴。逻辑的精确性,部分正是符号操作便利性“驯化”划分方式的结果。

2. 被语言包装后的划分的规律

这种规律我们一般称为思维规律。

2.1. 一些基本的思维规律

对于某个特定场景,比如一个房间,在符号组合的稳定性诱导下,人类对其划分成一个个独立的对象,比如具体的“床”、“杯子”,“电脑”等,房间所有物体组成的类则称为“全体”,然后我们可以对其中的对象进行分类,比如有两张桌子,那么它们划分到“桌子”这个类中,桌上的三只笔被划分到“笔”这个类中。

除了划分之外,人可以对分类进行组合,而语言上这种组合规则也是非常清晰明确的:比如“红色的”是一个类,“笔”是一个类,而“红色的笔”同时属于这两个类。

因此若用 x 和 y 表示两个类,那么“既属于 x 又属于 y 的东西的类”是一个思维能够自然讨论的对象,它创造一个新类,这个类可以有对象也可以没有。

把这种运算称为类的“交”,记为 \(x\cap y\)。

也就是说,人可以通过这种运算产生更精微和丰富的“分类”,这是对人的分类能力的“工具性”扩展。

既然有一种生成新类的方式,那么可以用“等于”关系来表达一些“显然”的规律:

  • 对任何类 x,都应该有 \(x\cap x=x\),即对同一个类合并,并不会产生新的类,这可以说是分类学的一个“公理”。这里其实没有太多约定的部分,它可能对应的是同一律,即一个分类概念不会在操作中变化。
  • 对任何类 x,y,\(x\cap y\) 和 \(y\cap x\) 是一样的,即我们不关注两个类合并时语言上的顺序。(注意这一条混合了关于语言使用的约定,因为语言使得我们可以对 x,y 左右排列,如果使用另外的语言,比如上下或者允许任意方向排列 x 和 y 以表示交,那么这种规律写法会很不同)

无论是关于类本身还是描述类的语言的规律,它们都是思维的规律,而非物理或自然规律,比如虽然可以说这只笔是自然存在的,但猫可能无法区分笔和虫子,也无法概念化,猫由于无法操作符号从而不能遵循分类学上的规律,但却还是要遵循物理规律。

另一种说明它们是思维而非物理规律的例子是,假设一份酸性液体和碱性液体,物理上合并,最终结果可能是另外一种物质,但对于概念划分,我们不是让它们进行化学反应,而是讨论所有酸性对象和碱性对象在划分下相交的部分,而这两种东西本身是人定义出的,如果没有即划分为酸性又划分为碱性的液体,那么二者交就是空,如果允许酸和碱同时定义一个对象,那么二者相交出就存在。

2.2. 更多思维的规律

除了 \(x\cap x=x\) 之外,人还可以定义另外两种分类操作。

若 x 和 y 表示两个类,那么“属于 x 或者属于 y 的东西的类”可以记作 \( x \cup y\),称为类的“并”;“不属于 x 的东西的类”可以记作 \(x^c\),称为类的“补”。

然后列出以下的规律:

  • \(x\cap x=x\),\(x\cup x=x\):重复合并或重复列举同一个类,不产生新类。
  • \(x\cap y=y\cap x\),\(x\cup y=y\cup x\):合并或列举的顺序不影响结果。
  • \((x\cap y)\cap z=x\cap(y\cap z)\),\((x\cup y)\cup z=x\cup(y\cup z)\):多次合并或列举可以任意分组。
  • \(x\cap(y\cup z)=(x\cap y)\cup(x\cap z)\):交对并可分配。
  • \((x^c)^c=x\):补两次回到原类。
  • \(x\cap x^c=\varnothing\),\(x\cup x^c=U\):一个对象不能既属于又不属于同一个类;它要么属于 x,要么属于 x 的补。这里 \(\varnothing\) 表示空类,U 表示全类。

这些等式主要来自于一些确实能明确划分的集合上的组合规律,人在这些相对明确的集合上发现并约定了稳定的操作模式之后,试图把它推广到一切类上。

所以如果要使用这套语言,那么类的概念应该是清晰的,之后出现应用上的问题时,不是这套规律出错,而是类的定义不符合这套规则,比如罗素悖论表明包含所有的对象的类,或者不包含自身的类其实是无法被清晰划分出来的。就像情感难以量化从而很难用数学来计算一样,这不是数学或逻辑的问题,而是情感无法满足数学规律所要求的对象的性质。

2.3. 类与集合的区别说明

到目前为止,我们谈论的类都可以先按集合来处理;对于个体,则把它等价于单元素集合。全类记作 \(U\),空类用空集 \(\varnothing\) 表示。

比如“闪电是一只白马”:其中“闪电”指代具体的马。在现代集合论中,通常说“闪电”属于白马集合;而“白马是马”表达的是白马集合是马集合的子集。若用类演算描述,则把“闪电”看作单元素类 x={闪电},白马类记作 y,马类记作 z。于是:

  • “闪电是白马”表示 \(x\subseteq y\),即 \(x\cap y=x\);
  • “白马是马”表示 \(y\subseteq z\),即 \(y\cap z=y\)。

这样,个体也被纳入类运算:单元素类可以和白马类、马类作交、并、补。

2.4. 对三段论的表达

对于上一节的例子设:

  • x={闪电};
  • y=白马类;
  • z=马类

前提是:

\[ x\cap y=x,\qquad y\cap z=y. \]

把第二个 y 的等式代入第一个式子:

\[ x=x\cap y=x\cap(y\cap z)=(x\cap y)\cap z=x\cap z. \]

所以 \(x\cap z=x\),即 \(x\subseteq z\),也就是“闪电是马”。我们用这套符号表达出了三段论的一个典型例子。

三段论中其他经典形式可写成:

  • “没有 \(X\) 是 \(Y\)”:\(X\cap Y=\varnothing\);
  • “有些 \(X\) 是 \(Y\)”:\(X\cap Y\neq\varnothing\);
  • “有些 \(X\) 不是 \(Y\)”:\(X\cap Y^c \neq\varnothing\)

因此,布尔代数可以编码传统三段论的形式,并对那些能写成等式的情况进行代数推理。

这里的翻译规则是:

  • 全称和否定句式直接翻译为等式,比如 \(X\cap Y=\varnothing\);
  • 存在句式则要写成“不等于空集”,它不是等式,不能像等式那样直接代入、消元,所以这部分推理更弱。 后来引入存在量词和全称量词,正是为了把“所有”“有些”“没有”以及关系和多重量化统一处理,使推理更精细。

3. “量化”能力和基础算术

到这里,我们已经有了一条关于“分类”的路线:人把对象划分为类,用符号表达类,用符合组合表示类概念的交、并、补,并发现了一些形式规律,如 \(x\cap x=x\)、\(x\cap y=y\cap x\)、\(x\cap(y\cup z)=(x\cap y)\cup(x\cup z)\),以及 \(x\cap x^c=\varnothing\)、\(x\cup x^c=U\)。

这些规律不是物体交互的物理规律,而是人“分类”后用语言表达并操作后的有效约定。

在另外一条路线上, “量化”经历和“划分”类似的符号化的过程,人不仅能把对象分成类形成概念,还对对象有多少个,并用自然数符号指代数量。

这发展出了加法、乘法、0 和 1 等操作,也得到如 \(0+a=a\),\(1\cdot a=a\),加法有交换律、结合律,乘法对加法有分配律,称为“数的代数规律”。

尽管分类路线是定性的,量化路线是定量的。但它们的形式结构有相似之处:

分类路线 量化路线
交 \(x\cap y\) 乘法 \(xy\)
并 \(x\cup y\) 加法 \(x+y\)
交对并可分配 乘法对加法可分配

受到这种类比启发,逻辑学家布尔把交写作乘法 xy,把并写作 x+y, 差则写做 x-y ,表示“在 x 中但不在 y 中”的对象。

注意这种做法仅仅使得我们可以用相同的一套语法来表述不同的规律,它可以看作是符号规律层面的区分并压缩,即把两种不同领域的规律用统一套语言来表达。

将类的交集类比到乘法后,xx 也可以记作 \(x^2\),于是有 \(x^2=x\),即 \(x-x^2=0\)。

按普通代数因式分解,得 x(1-x)=0。这里只要把 1 解释为全集, 1-x 是 x 的补集, 0 是空集,整个句子的解释就是:没有任何东西可以既属于又不属于一个给定类 x。

这正好表达了亚里士多德所说的矛盾律:“同一种性质既属于又不属于同一个东西,这是不可能的。”

于是得到一组新的对应:

空类 \(\varnothing\) 0
全类 \(U\) 1

而要特别注意的是,这里并没有说“类只能取 0 和 1”,而是说:如果把 0 解释为空类、1 解释为全类,那么它们的行为与代数中的 0、1 吻合,比如还有:

\[ 0x=0,\qquad 1x=x. \qquad x+(1-x)=1 \]

但它在另外一些规律上可以不相同,比如 x+x=x 只在 0 时成立,而在 1 时并不成立。

这种类比并没有增加新的语义和规律,但找到了“定量”和“定性”的思维规律在符号表达上的相同点,可以说是一种符号体系的复用。

4. 超越集合子集语义的命题逻辑

4.1. 关于类关系的命题 – 句子层级的划分

到目前我们实际还没有真正谈论到命题逻辑,甚至没有定义什么是命题和真假。

以三段论为例:“苏格拉底是人”,”人是会死的“,”苏格拉底会死” , 这三句话在现代会把它看作三个命题,然后讨论它们的真假关系。

然而在划分的规律层面,我们其实并不需要引入命题和真假的概念。

命题本身

但基本还是在对“划分”后出现的“类”或“集合”的包含关系上,比如三段的经典句式都是关于 X 是否是 Y 的子集或者是否集合相交上。

但在布尔代数的语境下,完全可以不谈论“命题”和“真假”,只谈论它们的“划分”语义,比如 x 表示{苏格拉底}单元素类,y 表示人类, z 表示“会死的对象”,那么有 xy=x, yz=y, 这和前文“白马是马”的推理一样,得到 xz=x 。

然后我们解释它的语义是,苏格拉底属于“会死”这个类中。

这里不需要引入命题和真假的概念,假的东西在代数规则中以“不出现”的方式隐含了。

实际上,命题和真假是人更高层级的分类,比如我们把一些句子分类为 "命题“,把其中的命题继续分类为“真类别”和“假类别”。

也就是说,逻辑在这里可以不是关于句子的,而是关于分类的。

当语言只能表达这种集合关系时,那么这些确实这就是逻辑的全部了,而亚里士多德时代,逻辑的定义似乎就是关于这些分类学的表达上。

4.2. 类关系命题之外

然而,现实中还有语义比属于或子集关系更广的描述,而人们发现其中也有一些稳定的性质,比如“如果下雨那么地会湿”,“地没有湿”,人们可以从中推理得出”没有下雨“。

这里下雨,地没有湿,如果 x 那么 y 看上去和概念分类并没有关系。

但布尔仍然可以用他发明的概念代数去建模,比如如果 x 那么 y 可以用 x(1-y)=0 表示,因为如果 x=1 ,y 必然也是 1, 因此它契合这种语义,没有下雨用 y=0 表示,这样代入方程得到 x=0, 即地没有湿。

此时布尔偷偷把 x 表示一种分类变成了 x 是一个具体命题的真假指代,但它仍然有效,而且非常简洁。

这是布尔逻辑超越三段论的“概念划分逻辑”的一点。

4.3. 集合交并补子集和逻辑联结词 and/or/not/imply 的同构

当重新把“苏格拉底是人”“人是会死的”“苏格拉底会死”看作“命题”,并对它们赋予真假分类,我们就进入了命题层:句子先被分类为命题,命题再被分类为真或假。

我们可以基于“概念划分”的语义定义出

设命题 X 为“p 属于苏格拉底类”,Y 为“p 属于人类”,Z 为“p 属于会死的对象类”。那么 \(X\land Y\) 的语义就等价于“p 属于苏格拉底类与人类的交集”。类似地:

  • \(X\land Y\) 对应 \([X]\cap[Y]\);
  • \(X\lor Y\) 对应 \([X]\cup[Y]\);
  • \(\neg X\) 对应 \([X]^c\);
  • \(X\to Y\) 对应 \([X]^c\cup[Y]\),也等价于 \([X]\subseteq[Y]\)。

于是我们有了另一种推理方式:不是把概念类写成方程再消元,而是把命题映射为集合,用交、并、补和包含关系来判定命题推理是否有效。比如“如果下雨则地湿,地没有湿,所以没有下雨”,在命题层就是:

\[ P\to Q,\quad \neg Q \;\vdash\; \neg P \]

在集合层则对应:

\[ [P]\subseteq[Q],\quad [\neg Q]\;\Rightarrow\;[\neg P] \]

也就是说,and/not/or/imply 可以在外延层面同构地对应到集合的交、补、并和包含。这时逻辑处理的不再只是概念类之间的约束,而是命题与命题之间的真值关系;布尔方程仍然可用,但已不是唯一的表达方式。

4.4. 引入可能世界后的集合论解释

但可能世界语义提供了一种方式,把命题的真假重新拉回到集合框架中。它不再把命题看作单纯的“真”或“假”,而是把每个命题 P 解释为“使 P 为真的那些可能世界组成的集合”,记作 \([P]\)。于是命题之间的运算又变成了集合运算:

  • 否定:\([\neg P]=W\setminus[P]\)
  • 合取:\([P\land Q]=[P]\cap[Q]\)
  • 析取:\([P\lor Q]=[P]\cup[Q]\)
  • 蕴含:\([P\to Q]=(W\setminus[P])\cup[Q]\)

推理的有效性也重新变成集合包含:\(P\models Q\) 当且仅当 \([P]\subseteq[Q]\)。于是“如果下雨那么地会湿”不再只是 \(x(1-y)=0\) 这样的代数方程,而是说“使‘下雨'为真的世界集合包含于使‘地湿'为真的世界集合”。

但这里的集合已不是亚里士多德式的概念外延集合,而是可能世界集合。层次变了:三段论处理的是“对象属于哪个类”,命题逻辑的可能世界语义处理的是“世界属于哪个命题的真值集合”。前者是概念分类,后者是命题真值条件的分类。

radioLinkPopups

如对本文有任何疑问,欢迎通过 github issue 或邮件 metaescape at foxmail dot com 进行反馈