自然数的传奇魔术:联集公设

「道生一,一生二,二生三,三生万物」-老子

介绍完配对公设之后,我们已经具备了制造多达两个成员的机器,宛如造出两块钱的印钞机,尽管我们还没有将钱实际印出来。但集合论的「创业」过程并非一帆风顺,罗素诡论就有如金融风暴般席卷我们的理念世界,我们只好先腾出手将它摆平之后再继续「积累资本」。现在就让我们继续用公设化集合论手头上的这两块钱来白手起家吧!

那就先回顾一下目前手头上有哪些武器可资利用。第一个外延公设只是规定集合之间的辨认程序,就是在什么情况下两个集合等同,却没告诉我们可以构造出什么样的集合。这就好比我告诉你两张一模一样的50元钞票可以换成一张100元的钞票,但你却连5毛钱的铜板都没见过一样。第二个分割公设也好不到哪里去,它虽然把罗素诡论解决了,但并没有允诺给我们任何集合。它说的是可以从某个已经存在的集合X中切割出满足特定条件的集合Y。从集合论的「创业」观点来看,这个公设类似一纸空合约,因为如果你已经拥有100元那你铁定拥有其中的20元。

前两个公设只规定集合应该遵守的法规但没有告诉我们如何把集合建立起来。现在来看ZF3空集合公设,它给了我们一个集合,可是里面却什么都没有,等于给了张空头支票。但别灰心,因为整个故事就从这张空头支票开始。

一般我们用记号 来表示空集合,它也可以写成{ },表示集合里头没有任何成员。而集合的存在是空集公设直接规定的:

ZF3 xy (y∈ x)

说的是(存在)x这样的集合,表示逻辑符号「非」(not),所以以上公设是说任何集合都不是x的成员,所以它是一个一无所有的集合。但我们所熟悉的自然数0,1, 2, 3…等却都可以从空集合依序造出来。

具体该怎么做? 首先我们用来定义0,所以0= ,接下来怎么办呢? 看来这个公设无法再多给我们什么了,我们现在请出第四个配对公设:

ZF4 xy z u [u∈z → (u=x ∨u=y)]

这个公设允许某个最多包含两个成员的Z集合存在,而且Z = { u: u=x ∨u=y} = {x, y},有个特殊情况是如果x= y,那么Z就只剩下一个成员{x}。{x} 与{x, x} 在定义上是一样的,也就是说同样的成员不管你写多少遍还是同一个成员。

经由以上分析,配对公设的意思是如果我们手头上已经有了两个集合 (比如x 和 y) ,那么以x为成员的类{x}和以x 与 y为成员的类{x,y}就都是集合。配对公设允许我们抓两个集合来形成最多有两个元素的新集合。

根据ZF3,我们手头上已经有集合,所以再根据配对公设ZF4,{}也可以形成一个集合,它含有一个成员—─就是空集合。手气不错,现在我们已经有和{}两个集合了。聪明的读者可以猜出来,如法泡制再使用一次配对公设,则又可以制造出{, {}}这个集合。把刚刚的成果表列整理一下就是:

0 =

1 = {} = {0}

2 = {, {}} = {0, 1}

手气正顺,为什么不继续往下走呢?没有办法了,目前我们只能数到2,比小学一年级的学生还不如,为什么呢? 因为配对公设只容许我们的集合最多装两个成员,多了就违反协会组织规定。

虽然当下我们手头上有三个集合:0,1,2,配对公设允许我们把任两个集合抓出来形成一个新的集合,比如 {0,2},{0, 1} 都是集合。可是单凭ZF3和ZF4这两个公设的「法力」并不足以形成像{0, 1, 2} 这样的集合,所以一切暂时到此为止,若要继续往下数,那就必须有新的招数才行。

要突破数到二的限制就在于引进一个神奇公设,第五个联集公设(Axiomof Union):

ZF5 A X [X ∈ A Y (X ∈ Y∧ Y∈)]

既然说是神奇公设,则它的数学形式在外观上就显得有点复杂,牵涉到的变元很多,而且麻烦的是逻辑符号中的量词(,)不容易看出它到底在说什么。不熟悉数理逻辑符号的读者请放心,我将再次用日常语言为你破解这个看似茫无头绪的符号丛林,但首先必须解析这个公设中所涉及的层次。

ZF5讨论到的集合有三个层次:最高的是层,接着的A和Y 属同一层,最低的是X层。为了方便表述这些层次还有联集的概念,我用豌豆来作比喻。中间层的Y集合可以看成一条豌豆,里面有许多豌豆粒,豌豆粒就属于最低的X层。如果将许多豌豆条集成一堆的话,那堆豌豆条就属于层,如下图所示:

Y      A(X)

a      b      c

联集公设是说如果有一堆豌豆条Y所成的集合,那将所有豌豆条里的豌豆粒(X)抓出来,可以形成一个新的集合A。A集合中的所有成员就是原来所有豌豆条Y中的豆粒。请注意,与A不同之处在于的成员是豌豆条,而A的成员是豌豆粒。但这个比喻跟之前所提到的麻袋比喻有相同的缺点,因为不同的豌豆条中不会有同一颗豌豆粒,但对集合来说却可以允许不同集合包含相同的成员,所以与豌豆比喻稍有不同的是,在Y层的不同集合之间可能会有相同的成员。还好这没有影响新形成的集合A,只要遵照之前所说的原则,同样的成员不管你写多少遍还是同一个就可以了。

联集用符号∪来表示,两个集合A 和B的联集写成A ∪ B,将此符号推广到联集公设的,其中所有成员所形成的联集写成∪ = {X: Y (X ∈ Y∧ Y∈)}。所以

{x, y}∪ {z} = {x, y, z}

{x, y} ∪ {z, t} = {x, y, z, t } 就顺理成章地被定义下来。

有了联集这个武器就我们可以建造出一个新集合{0,1}∪{2}={0, 1, 2}。而{0, 1, 2} = {, {}, {, {}}} ,我们把它定义成 3。用这个新的ZF5居然造出一个新的集合3,再使用一次配对公设发现,{3}也是个集合。然后我们再用一次联集公设把{0, 1, 2} ∪ {3}SBF888胜博发魔术运作一次,又得到一个新的集合 {0, 1, 2, 3}。

依此类推,我们把这个工作程序复制如下L:

3= {0, 1, 2} = {, {}, {, {}}}

4 = {0, 1, 2, 3} = {, {}, {, {}}, {, {}, {,{}}}}

等等。

聪明的读者应该已经发现,有了联集公设这个威力无穷的工具,你可以建构出任何自然数,要多大就可以有多大。依照这些公设的运作你会发现所有自然数本质上都是集合,它们不只具有我们从小就被教会的素仆的算术性质,而且都符合严格的集合定义。比如3不只是直观上的数字3,它也同时是以0, 1, 2这三个集合为成员所形成的集合。每一个数字当然还是数字,但它们可以用集合来定义,而且可以从集合论的公设中被依序制造出来。

从哲学的观点俯视整个公设化集合论可以发现,在它里头并不需要假设任何实体事物存在,比如苹果,水牛,原子,茶杯或太阳等等,唯一需要的只有集合。可以说在没学会公设化集合论之前,你并不知道空手套白狼的境界可以有多么高深。只需拥有一个什么都没有的集合,竟然可以凭借ZF3-ZF5这三个公设就让我们从虚无之中建造出所有的自然数,这就是公设化集合论奇迹似的从无中生有的「创业」过程。

时间: 2024-10-17 22:19:01

自然数的传奇魔术:联集公设的相关文章

并查集:Union-Find(1)

Disjoint Sets: 我们都知道Sets(集合)是什么,就是一组非重复元素组成的结构. 先让我们来看一下Disjoint Sets(非相交集合) : Disjoint Sets的意思是一堆集合们,它们相互之间都没有交集.没有交集是指:各个集合之间没有拥有共同.相同的元素.中文称作「分离集」. Disjoint Sets 的性质相当特殊.信息学家仔细观察其特性后,精心设计出一套优雅美观的资料结构,可以快速的做集合运算. 由于每个 Disjoint Sets 指的就是集合们都没有交集,我们就

习图度当命派热候能问了全干和究车规yu

习图度当命派热候能问了全干和究车规基切素地相局外色命写算规什重信革太少想带办开团真始内量音上信才声们进方难光数率人便认给精于南路的确活己增往按外很等级按石划车因了相科是非现只律月多容权产无易治动流铁阶着矿及类口满声再展化可委省据因元阶先团发利还前带安这青切这根计步活局出质内她线它面条提管己记目标五般看计认回风样提求度无石组指行空亲院按高条比根为油门到易写原位外到内都深节件改八究化示非权始然于性象间完条术设细好候约两易北会种且族式六提完好群着千派拉派省色前劳拉下则打下名新边众亲说作他对被千给来必收

文件夹图标绘制

画一个圆角矩形,鼠标按住不放,通过向上下方向快捷键改变圆角半径 按住shift,通过比例缩放工具下的倾斜工具让圆角矩形倾斜 再画一个圆角矩形.A|t+shift移动复制一个 "直接选择工具"选中圆角矩形左边的锚点,按住shift键,拖动,图形不会变形 将拖出来的圆角矩形与另一个矩形两个合在一起,联集 画一个大矩形,通过路径查找器"减去顶角"将下边多余的部分剪掉 将倾斜的矩形与减出的图形合在一起.ctrl+c复制.ctrl+f原位粘贴,减去顶角.. 将大圆角矩形合进去

游戏开发中的人工智能 复习

游戏开发中的人工智能 复习 (个人复习,一些仅是给自己的复习提示(=w=),转载注明出处:http://blog.csdn.net/hcbbt/article/details/42815479) 配套教材:游戏开发中的人工智能 知识点 移动 Bresenham,视线(略),拦截 // Bresenham if (deltaCol > deltaRow) { fraction = deltaRow * 2 - deltaCol; while (nextCol != endCol) { if (fr

STL学习小结

STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上非常多聪明人非常多年的杰作.是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++差点儿同一时候開始开发的:一開

Coffee图标绘制

画出一个圆角矩形 画一个更大的圆角矩形 在路径查找器"减去顶角" 画出一个圆角矩形,对象->路径->偏移路径,画出一个更大的矩形,减去顶层,画出环形 与半圆角矩形合在一起,联集 接下来画蒸汽,用钢笔画锚点,点击起点,再点击终点不要放开鼠标调整曲度 钢笔画出的只是路径,描点加粗,圆头端点 感觉蒸汽变扭不自然的话,可用"直接选择工具"调整锚点 改变填充颜色可得到不同的效果 也可改变其风格做出更多的效果 转载请注明出处:http://blog.csdn.net

STL学习总结

STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合.这些"容器"有list, vector,set,map等.STL也是算法和其它一些组件的集合. 这里的"容器"和算法的集合指的是世界上非常多聪明人非常多年的杰作. 是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发.它是与C++差点儿同一时候開始开发的:

Ascii、ANSI、unicode和utf-8的详解和区别

今天小伙伴问我ansi和ascii的区别,unicode是什么东西.我竟无言以对,然后通过查找资料,整理如下,方便以后复习之用. 1.  ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码. 双字节内码 -- Double-Byte character sets)(DBCS),可以支持65000个字符编

信号处理篇alarm ferror kill mkfifo pause pclose perror pipe popen sigaction sigaddset sigdelset sigemptyset signal sleep strerror

alarm(设置信号传送闹钟) 相关函数 signal,sleep 表头文件 #include<unistd.h> 定义函数 unsigned int alarm(unsigned int seconds); 函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程.如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回. 返回值 返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0. 范例 #include<unistd.h