当前位置: 首页 > news >正文

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。

 

 

 


http://www.mrgr.cn/news/64506.html

相关文章:

  • 【大数据学习 | kafka】producer之拦截器,序列化器与分区器
  • 网络编程入门
  • 面试题:JVM(二)
  • Ubuntu系统电脑没有WiFi适配器
  • Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者
  • Gradient Boosting Regressor(GBDT)--- 论文实战
  • 递归调用的其中之一的规则
  • LabVIEW离心泵性能优化测试系统
  • Unity性能优化5【物理篇】
  • 基于XSS的flash钓鱼上线Cobalt strike
  • 【Linux 从基础到进阶】灾备系统的监控与管理
  • Golang | Leetcode Golang题解之第530题二叉搜索树的最小绝对差
  • Spring的核心类: BeanFactory, ApplicationContext 笔记241103
  • Go 语言循环语句
  • Python酷库之旅-第三方库Pandas(191)
  • C++线程异步
  • 使用Vite构建现代化前端应用
  • 不同出版社的作者排版
  • C语言 | Leetcode C语言题解之第530题二叉搜索树的最小绝对差
  • 构建工具-webpack和vite笔记
  • 读数据工程之道:设计和构建健壮的数据系统26数据建模
  • 线程同步---条件变量
  • 整理 【 DBeaver 数据库管理工具 】的一些基础使用
  • 使用TypeORM进行数据库操作
  • 6.2、实验二:默认路由
  • SQLI LABS | Less-26 GET-Error Based-All Your SPACES And COMMENTS Belong To Us