当我们谈论集合论时我们脑海中总是浮现出那种经典、"正常"、"标准"的集合论的形象。但事实上符合我们熟悉那几条集合论公理的对象并不是唯一的:是否承认不可构造集、是否承认无穷集都属于可选的内容。我们所想象的那个"标准"形象只是集合论的一个模型。
哥德尔完备性定理告诉我们,一个理论一致当且仅当存在一个满足它的模型。理论的一致只关乎形式推理,属于句法 (syntax);而它在模型中能否被满足则属于语义 (semantics)。由此,句法上的研究,例如考虑一个定理是否与集合论公理独立,可以通过句法上,也即对于模型的研究完成。
而力迫法的含义就在于人工构造一个模型强制使它满足我们的目标理论,进而证明目标理论一致。这些模型和我们想象的"标准"模型的区别在于它们多承认了一些集合(即所谓力迫扩张)。
可能你不明白承认某些集合与否和理论是否被满足有什么关系。假如我们根本不承认无穷集,那么所有的基数统统不存在;假如我们承认很多奇怪的无穷集,那么基数就会相对更加密集,连续统可能等于 甚至更多。
接下来我们具体介绍力迫法的细节。
布尔代数
这部分实际上是我们曾经谈论过的理论结构的细化。
布尔代数也可以称为有补分配格。我们快速过一下。
格是一个偏序集 。( 对应逻辑上的 )
格中每对元素都有上确界(最小的 两者的元素)(称为并,和逻辑上的含义相同)和下确界(称为交,和逻辑上的含义相同)
如果并和交互相有分配律,那么称这是一个分配格。
如果这个格有最大元素 和最小元素 ,且对于任意元素 都存在其补(否定) 使得 且 ,那么称这是一个有补格。
(一个非常简单的布尔代数。)
取一个一阶逻辑语言 和其上的任意理论 ,我们记 表示理论 下能够形式化推理出命题 。我们以 为命题划分等价类,以 建立偏序,可以证明我们得到的偏序集是一个布尔代数,我们称它是被 所确定的布尔代数。显然 中的逻辑算符都有布尔代数中的对应。
我们自然需要一个把 上的命题映射到其确定的布尔代数 上的等价类的函数,记作 。
集合论宇宙的布尔代数扩张
现在我们来考虑我们的 ZFC 集合宇宙 ,让我们为每一个集合 分配一个特征函数 , 包含于其定义域,值域为 且 。那么 自然可以被 所描述。 当然是良基的,所以我们可以直接归纳(递归?)重新把 描述一遍:从 归纳到 。这样得到的宇宙记为 。
有
这看起来没什么用(事实上可以证明 和 同构)。但是,如果我们把值域从 (最简单的布尔代数)替换为任意布尔代数 (其实也没有那么任意,应当至少还属于集合),得到的新宇宙 就有很多说法了,我们称它为 的 扩张。似乎在这个宇宙中"集合"间的从属关系不总是 而可能取 中的任意值。不过这也不一定就是说 的布尔值是 ……往下看就知道了。
为了谈论 上的命题,我们在 中加入 中所有集合的(形式化)名称,得到的新语言称为 。我们将把 上的命题区别开来,分别称为命题和 -命题。
显然对于所有 -命题 我们都可以依如下法得到其布尔值 (由于 Tarski's undefinability theorem,这并不是一个实际上的映射。读者应该从元数学的角度来理解它。):
比较棘手的是原子 -命题 。我们仍希望外延公理在 上成立,那么这两者只好这样互相递归定义:
良基性再次救命。
如果 ,那么我们称 -命题 为真,记 。
可以想象到(也相对比较好证明),考虑 的一个子代数 (子集且是布尔代数),我们可以得到 是 的一个子模型: 不会做出与 不同的判断。具体来说:
而 总是任何布尔代数的子代数,而我们已经知道 和 是同构的,所以 总是所有 的子模型。这很有用。事实上,ZFC 公理的 -版本在 中也为真,包括 AC。下面我们记 中元素的 版本为 ,具体来说
但是 某 些 东 西 的 -版本就不是这样了。 中的序数()都是 中的序数,但反之不然。基数也是。(不然就没意思了。)
(其实,如果 比较简单,更具体地说满足 countable chain condition:每条反链的长度都可数,那么上述性质是双向成立的。)
此外,为了埋下伏笔,有一个关键的关于 中的可构造集的性质需要我们证明:
定理.
,
证明.
后一个等号很不显然,这涉及到 中的序数的奇妙性质:。即, 中的序数都是正版序数 们的"混合"。这里我们不给出证明。
命题 由于是一个关于 和 的 公式,结构相对简单,可以比较容易地证明它可以推出它的 -版本,即
即
故原式等于
力迫偏序
现在我们来讲一个看似无关的主题:一种偏序关系,称为力迫偏序。
事情其实是这样的。我们想加进模型的集合其实是力迫偏序里的一个 generic filter(一般译为脱殊滤),力迫偏序和这个 generic filter 编码了一些关于我们目标命题的信息。但问题就出在这里,它们的定义关涉了太多语义上的内容导致这个 generic filter 干脆可被证明不存在。但是如果我们给这个力迫偏序制造一个对应的布尔代数 ,我们就可以把语义上的
转化为纯句法的
从而避免这一问题。
接下来我们介绍力迫偏序的含义和由它构造 的方法。
令 是一个偏序集。含义上, 代表了一系列条件, 代表 是 的细化( 强于 )。
称 相容,记为 ,当且仅当 。
满足以下条件的 被称为是细化的:
即,若 不是 的细化,那么必定存在一个它的细化与 不相容。
令 为 的所有元素。把 们视为拓扑基底,就得到一个 上的拓扑;称一个拓扑上等于其闭包的内部的集合为正则开集。记 是这一拓扑中的所有正则开集。
可以证明,任取一个拓扑,其正则开集(在 下)必定构成一个布尔代数。这里 就是我们所意欲的 。
下面给出一些 和 的关系。
是细化的当且仅当 。
如果 的一个子集 满足,,那么称 稠密。
如果 是细化的,那么 是一个保序同构,且像为一个 的稠密子集。(开集都是 的并能不稠密吗)
反之,如果存在一个保序、像稠密的同构, 一定是细化的。
满足"存在一个 到其的稠密子集的保序同构"的 是唯一(精确到同构)的。
接下来我们把 和那个同构 合起来,称 是 的一个布尔补完 (Boolean completion)。
现在令 是一个 (那个稠密子集)中的元素(接下来我们可能不区分 和 ),令 是一个 -命题。定义:
如果我们把 看作条件不断细化的分化树, 就表明在 处我们将被迫接受 。
的不可构造子集的存在性相容于 ZFC
令 为所有 的有限子集到 的映射。 上有自然的偏序: 是 的细化当且仅当 是 的一部分。 也就被理解为为自然数取值。
令 为:所有 到 的映射中是 的"细化"的。以 们为基底构造一个拓扑(),其中的正则开集作为 。可以证明,尽管 不是由之前的方法直接构造,但如今得到的 既然是 的一个布尔补完,而布尔补完又是唯一(精确到同构)的,所以就没有问题。
大功业如今就在眼前。
定理.
记 为 的幂集。
。
。
证明.
定义
显然
这很自然。
但是我们竟然要证明: 不属于 。
假设不然,那么必定存在 ,使得 。(因为 稠密)
那么总可以取 (因为 有限),构造一个细化 。如果 ,我们就令 为 ;如果 ,我们就令 为 。
我们有
这样在 下 和 总是只有一个成立。,但 又是 的一个细化,矛盾。
通俗地说,由于 中有着无限细分的路径稠密地包围了 中的 (你可以试试想象康托集;事实上康托集就是 ),一旦声称 就总会落到其中一点, 的性质又保证在极远处 仍在不停震荡,从而生出一条岔路将其否定。
也算是某种对角线论证吧……但是更为诡异。
接下来进入更诡异的第二部分。仍关注那个 。根据之前证过的那个定理,
我们把 分成 和 两部分。前者已经完蛋了。而对于后者()
这是不可能的,因为我们已经知道 。
最后再来总结一下:回顾 这一性质,我们可以把 看作是一个新加入的"待被我们给出的条件决定形态"的集合,它的外延"悬而未决"同时又有前述的震荡性质,但又在 里"实际存在",这样一个很神经的模型却又是一个合理的模型,最终导致了一系列……悲剧的发生。
连续统假设之独立性
刚好前述的 可以接着用。我们现在来证明(广义)连续统假设与 ZFC 相容。
定理.
假设广义连续统假设(GCH)成立,如果 满足 countable chain condition,且 (显然前述的 满足这两条),则
即
证明.
幂集在 是一致的。记 ,可以证明
现在令 。
由于 GCH,。而 ,即
由于 满足 ccc,基数性质也反向成立,综合即得到之前的结论。
可见连续统假设的成立与否被 的情况控制;如果 足够大, 的基数就会和 一起爆炸。
取 ,可以(通过一些恶心的基数不等式,还得考虑基数和它们的 -版本的关系,细节不表)证明
因此连续统可以等于 甚至 (蛤???这也太 broken 了)等等等等。
选择公理之独立性
……但是这可能吗?我们已经知道 中的原版命题在 中皆为真,但我们的 又是在 ZFC 中构建的,那 便不可能不满足 AC。
事实上如果我们取一个