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

LEAN 类型理论之注解(Annotations of LEAN Type Theory)—— 归纳类型(Inductive Type)的定义

        归纳类型(Inductive Type)是下图的类型等式(Type Equation)的解,那从下述等式出来,看看LEAN是如何定义归纳类型的。

一、归纳规格 K(Inductive Specification K)

        K 在《归纳类型(Inductive Type)浅析》中,指的是类型函数的函数体。这里,根据LEAN的定义,K 是归纳规格的类型(The type of inductive specification),是和类型(Sum Type),即代表了一些列的构建函数(a list of constructors),其中 (c : e)表示一个构建函数(constructor),其名字为 c,类型为 e。

        因此,有 K ≡ ∑ᵢ(cᵢ:αᵢ),其中 K 可以为 0,即该归纳类型没有构建函数(no constructor)。也就是,无构建函数的归纳类型,因不能构建其正规元素,即空集。

二、望远镜表示法(Telescope Notation,x :: α)

        1. x :: α ≡ x₁:α₁, x₂:α₂, ..., xₙ:αₙ

        2. Γ,x::α ⊢ e : β ≡ Γ, x₁:α₁, x₂:α₂, ..., xₙ:αₙ  ⊢ e : β

        3. Γ ⊢ x::α ≡ Γ ⊢ x₁:α₁ and Γ,x₁:α₁ ⊢ x₂:α₂ and ... Γ, x₁:α₁, x₂:α₂, ..., xₙ₋₁:αₙ₋₁ ⊢ xₙ:αₙ

        4. λx::α.β ≡ λx₁:α₁.λx₂:α₂....λxₙ:αₙ.β

        5. e::α, f:∀x::α.β ⊢ f e : β[e/x] ≡ f e₁ ... eₙ

三、归纳规格K的定义(Γ,t : F ⊢ K spec)

        基于上述的望远镜表示,定义了 K 作为一个归纳类型的合适的归纳规格。也就是说明,K是如何组织其归纳类型的构建函数。

四、构建函数的定义(Γ,t : F ⊢ α ctor)

1. 无参构建函数(Constructor without argmuent),如 zero: Nat。

2. 有无递归参数的构建函数(Constructor with non-recursive arguments)

3. 有递归参参数的构建函数(Constructor with recursive arguments)

        其中,类型变量 t 指向的是,正在定义的归纳类型。

五、归纳函数的定义

1. 语法表达结构,分别是,归纳类型定义(Definition),构建函数(Introduction),归纳类型的正规元素的使用函数(Elimination)。

2. 归纳类型赋型规则(Typing Rule),也叫类型构造规则(Type Formation Rule)。

3. 归纳类型的构建函数赋型规则(Typing Rule for constructors),同时也是该归纳类型的正规元素定义规则(Introduction Rule),因构建函数就是用来构建其正规元素(canonical element)的。

由于归纳类型的使用规则(Elimination Rule)比较复杂,通过下一篇文章进行阐述。


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

相关文章:

  • 回调函数的概念及其在异步编程中的应用
  • 西湖大学卢培龙团队突破:精确从头设计异手性蛋白复合物,开启镜像蛋白研究新篇章
  • 【c++】平常自己练习写代码的两个大方向
  • 设计模式-行为型模式-策略模式
  • 20240905软考架构-------软考116-120答案解析
  • 10天计划:每天5小时睡眠
  • 【计算机组成原理】你知道什么是8421码、什么是余3码什么又是2421码吗?今天这篇文章带你认识计算机中的BCD码
  • ARP、RARP与路由选择协议
  • Keil下载烧录程序到单片机提示flash outtime超时
  • 支持国产——使用mmdetection进行目标检测并保存推理结果图片
  • vscode任务配置之tasks.json
  • Python | Leetcode Python题解之第385题迷你语法分析器
  • 鸿蒙OS试题
  • ”wait”和“notify”为什么要在Synchronized代码块里面?
  • 用Python实现时间序列模型实战——Day 11: 指数平滑模型
  • matlab 计算3D点到三角面的距离
  • 【基础算法总结】BFS_拓扑排序问题
  • 模电-三极管2
  • 推荐一款开源、高效、灵活的Redis桌面管理工具:Tiny RDM!支持调试与分析功能!
  • 华为OD机试真题 - 停车场车辆统计 - 贪心算法(Java/Python/JS/C/C++ 2024 D卷 200分)