LEAN 类型理论之注解(Annotations of LEAN Type Theory)—— 赋型(Typing)

        LEAN类型理论(LEAN Type Thoery),由 Mario Carneiro 于 2019年发表。其中描述了,LEAN类型理论的所定义的所有推演规则(Inference Rules)、表达式(Expressions),及从而推导出的该类型理论的属性(Properties)。具体内容请查看Mario Carneiro的论文  《The Type Theory of LEAN》

              后续将通过多篇文章,就分部份地介绍并注解其中主要推演规则(Inference Rules),以帮助读者更好地理解相关内容,不足之处,请指教批评。

        这是第一篇,注解了   《The Type Theory of LEAN》 中的 2.1 Typing 部分。

        一、表达式语法(Syntax of Expressions)

𝑙 ::= 𝑢 | 0 | S𝑙 | max(𝑙, 𝑙) | imax(𝑙, 𝑙)
e ::= x | Uₗ| e e | λx:e.e | ∀x:e.e     
Γ ::= · | Γ, x:e                                  

        表达式语法,定义了推演规则中能使用哪些表达式,其种类有三,分别是

1. 𝑙(Level),用来指示类型宇宙(Type Universes)的层次。类型宇宙(Type Universes),简称宇宙(Unvierses),也可成为类型空间(Type Space)等。在LEAN编程语言中,类型宇宙(Universe)用 Sort u 来表示,其 u 的值可取任意一个的自然数,即这里的 𝑙(Level)。当 u = 0 时,即 Sort 0,是最底层的类型宇宙, 也称 Prop,命题类型宇宙。当 u = 1时, 即 Sort 1  ≡ Type 0 ≡ Type,也称零级类型。 另有,Sort u ≡ Type (u - 1), u ≥ 1。

        a.        𝑢 (universe variable)

        b.        0(zero leve)

        c.        S𝑙(next level of Level 𝑙, S for Successor as in definition of Nat)

        d.        max(𝑙, 𝑙) 和 imax(𝑙, 𝑙),定义在两个层次上的函数,输出另一个层次。

2.  e(Expression),主体表达式。其它两种表达式,   𝑙(Level)和  Γ (Gamma),可认为是辅助表达式,为主体表达式服务的。

        a.        x (expression varaible, representing one expression of e)

        b.        Uₗ(Universe of Level 𝑙,𝑙 representing one expression of Level )

        c.        e e(Application)

        d.        λx:e.e(Abstraction)

        e.        ∀x:e.e(Dependent Function/Arrow Type)

3.  Γ (Gamma),表示一系列的假设(a list of assumptions or hypotheses)也称为,假设列表。假设是指变量及其类型,x: α。

        a.        ·(Empty list of assumptions or hypotheses)

        b.        Γ, x:e(recursive definition of a list of assumptions or hypotheses in form of x: e)

        二、赋型规则(Typing Rules)(Γ ⊢ e : α)

        It's to define what type the expression is of.

        其中,定义了所用于给表达式 赋予 类型 的推演规则,即赋型规则(Typing Rules)。意思是,基于 Γ 的假设下,表达式 e 的类型为 α。

1.  Weakening 赋型规则

前提(Premises):

        a. 在 Γ 的假设下,α 是 类型宇宙 Uₗ 中的一个类型。

        b. 在 Γ 的假设下,表达式 e 的类型是 β 。

结论(Conclusion):

        在 Γ  的假设,及 类型为α 的 变量 x,下,表达式 e 的类型是 β。

注释:

        在已经充分的条件下,再增加额外的假设,并不会影响对应的结论。

2.  Identity

        

前提(Premises):

        a. 在 Γ 的假设下,α 是 类型宇宙 Uₗ 中的一个类型。

结果(Conclusion):

        在 Γ  的假设,及 类型为α 的 变量 x,下,表达式 x 的类型是 α。

3.  类型宇宙的类型(Typing the Universe)

前提(Premises):无,即该规则为公理(Axiom)

结果(Conclusion):

        类型宇宙 Uₗ 的类型是其下一层类型宇宙,Uₛₗ 。

4. Application (函数应用)

注释:

        a. 类型表达式 β 依赖于类型为α 的 变量 x。

        b. 将 e₁ 中的变量x,替换成 e₂,最终结果的类型为 β[e₂/x],即替换类型表达式 β 中的变量x同时替换成 e₂ 。

5. Abstaction(抽象化)

前提(Premises):

        a. 在 Γ  的假设,及 类型为α 的 变量 x,下,表达式 e 的类型是 β。

结论(Conclusion):

        在 Γ  的假设,表达式 λx:α.e 的类型为 ∀x:α.β。

注释:

        a. 类型表达式 β 依赖于类型为α 的 变量 x。

        b. 该规则定义了,类型为 ∀x:α.β的元素是依赖函数。

6. 类型宇宙

前提(Premises):

        a. 在 Γ 的假设下,α 是 类型宇宙 Uₗ₁中的一个类型。

        b. 在 Γ  的假设,及 类型为α 的 变量 x,下,β是 类型宇宙 Uₗ₂中的一个类型。

结论(Conclusion):

        在 Γ  的假设,∀x:α.β的类型为 imax(Uₗ₁, Uₗ₂)。

注释:

        该规则定义了类型所存在的类型宇宙。

7. 定义上相等的类型

前提(Premises):

        a. 在 Γ 的假设下,表达式 e 的类型是 α。

        b. 在 Γ  的假设,类型表达式 α 与类型表达式β是 定义上相等。

结论(Conclusion):

        在 Γ  的假设,表达式 e 的类型是 β。

注释:

        该规则定义了,两个定义上相等的类型可以进行替换。

        

        三、类型定义规则(Type Rules)(Γ ⊢ α type)

        It's to define what type can be used for typing expressions.

前提(Premises):

        a.  在 Γ 的假设下,α 是 类型宇宙 Uₗ 中的一个类型。

结论(Conclusion):

        在 Γ  的假设,α 是一个类型。

注释:

        该规则定义了,可以给表达式赋型的类型。

        四、可用的假设(Assumptions)(⊢ Γ ok)

        It's to define what is a ok/good list of assumptions/hypotheses.

1. 空假设

注释:

        假设列表可以为空,用 · 表示。

2. 假设串联(Assumption Concatenation)

前提(Premises):

        a.  在 Γ 的假设下,α 是一个类型。

结论(Conclusion):

        假设列表可以是 假设列表Γ 与 类型为α 的变量x 的串联。

注释:

        该规则定义了,如何给假设列表增加更多的假设,即类型为α 的变量x(x:α)。

       

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值