ZFC in LEAN 之 前集(Pre-set)

        前集(Pre-set)的概念是相对于集合(Set),由数学家 Bishop 提出的。Bishop 认为定义一个集合需要三个步骤:

        1. 定义该集合的元素是如何构建的(Construction)。

        2. 定义集合中的两元素的相等关系(Equality)。

        3. 证明该相等关系是自反的(Reflexive)、对称的(Symmetric)、以及传递的(Transitive)。

        如果,在定义一个集合时,只满足了第一步,那么该集合称为前集(Pre-set),即,还未(not yet)称得上是集合(Set)。

        那么,对于前集(Pre-set),可以其基础上,像集合一样,定义关系(Relation)与函数(Function),称为 前关系(Pre-relation)与前函数(Pre-function)。其中,最大的区别在于,不保持(preserve)相等关系(Equality),即,a = b ∈ S,f(a) 与 f(b) 不要求相等(equals)。

        反过来说,也可以称函数(Function),是保持(preserve)相等关系的前函数。称保持相等关系的前函数满足外延性(Extensionality)。

        那么,看看 ZFC in Lean中,是如何定义前集(Pre-set)。

cb857101eb934aca97098136d245dbfd.png

        这里,需要抽象地理解上述的定义,就是,通过 PSet 的构建函数 PSet.mk,给定一个类型α,以及 索引函数 A: α → PSet,可以得到一个PSet元素,记 PSet α A。也可以,反过来理解,一个前集(PSet),它包含了一个基类型(underlying type),以及基于其基类(underlying type)的前集索引函数,其中,索引指向的所有前集是正被定义前集的元素(members)。

        还有一个注意的地方,就是 PSet: Type (u + 1),这里的 u+1 作用是以免 PSet 包含自身。

        那么,就会问,什么样的元素属于 PSet?类似,集合中,其最底层元素是空集,这里也有对于PSet,的空集,定义如下:

83758bfe687e44639d32e6e988b0606f.png

        然后,看看 PEmpty.elim 的定义:

2a29353738dd498393b84a691b89e2c5.png

        其中,PEmpty的定义如下:

09e3a2fe15f7428f8c5819bf93e20d1e.png

        这样,对照起来看,对于PSet,其 类型α 为 PEmpty,其前集索引函数为  PEmpty.elim。这就是 PSet的空集,也记 ∅。

        此时,就有了第一个 PSet 元素了,∅:PSet u,亦 empty: PSet u。

这里,有个有意思的知识点,因为,Lean里的类型宇宙并不累积的(Non-cumulative),因此,对于每层级类型宇宙 u,都会实例化其层级 u 为一个自然数,然后实例化其宇宙层次多态类型(universe-polymorphic type)。也就是,每层次的类型宇宙中,都存在一个实例化后的宇宙层次多态类型。对于 PSet来说,也是一样,即 PSet是宇宙层次多态类型,对于每层次的类型宇宙,都存在一个PSet类型,其中,∅是其元素。记,∅:PSet u。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KeithTsui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值