LEAN 类型系统属性 之 赋型唯一性(Unique Typing)浅析

LEAN 类型系统属性 之 赋型唯一性(Unique Typing):

即,如同一表达式有两种类型,在LEAN定义的赋型规则(Typing Rules)下,那么那两类型定义上相等(Definitional Equality)

        在LEAN定义的赋型规则(Typing Rules)下,表达式 e 每个形态(Form)都有其对应的赋型规则(Typing Rule)。同时,有定义上相等类型可替的赋型规则。

        即,当 Γ ⊢ₙ α ≡ β 时,Γ ⊢ e:α ↔ Γ ⊢ e:β 。

        当表达式 e 进行规范化(Normalization) ,即计算(Computation),时,其类型也因此,根据定义上相等规则(Definitional Equality Rules),而变化。

        如:

def e₁: Nat → Nat := λ x:Nat => x
def e₂: Nat := 1
def e := e₁ e₂

        e :(Nat → Nat)Nat  := e₁ e₂ ,根据赋型规则及定义上相等规则,有

即 ,e : (Nat → Nat)Nat  ≡ Nat,有,e : Nat       

亦, e := e₁ e₂ ≡ ( λ x:Nat => x ) e₂ ≡  e₂ ≡  1  有  e := 1

由此,可以看到 e := e₁ e₂ 的类型 从 (Nat → Nat)Nat 转化成 Nat。即

        那么,回到赋型唯一性(Unique Typing)的证明上来,此时,要证明的是,当有 Γ ⊢ e:α 与 Γ ⊢ e:β 时,Γ ⊢ α ≡ β 。也就是说,要证明,在LEAN的类型理论中,β 只能由 α 通过定义上相等的转化而来的

        那么,可以从转化步骤来证明 β 只能由 α 通过定义上相等的转化而来的,即,在表达式 e的计算过程,使用了LEAN定义的转化规则(计算规则),其转化规则由定义上相等来定义,e的类型也随之变化。由于定义上相等的传递性(Transitivity),就有 当 Γ ⊢ e:α 与 Γ ⊢ e:β 时,Γ ⊢ α ≡ β 。

        给定任意的表达式 e,在其进行计算时,所有的转化规则都符合上面所说的,e的形态发生变化,其类型随之变化,同时 β 只能由 α 通过定义上相等的转化而来的,其实是,形态变化的赋型规则的约束,那么,就能证明,在整个系统里,当 Γ ⊢ e:α 与 Γ ⊢ e:β 时,Γ ⊢ α ≡ β。

        也就是,上述例子中,有 e : (Nat → Nat)Nat  := e₁ e₂,e: Nat := 1,那么 (Nat → Nat)Nat  ≡ Nat。

        这里,有些感觉是,因果倒置,其实这说明了,当 从  Γ ⊢ e:α 得到 Γ ⊢ e:β 时,这只有通过上面 Γ ⊢ α ≡ β 的规则,没有其它规则,由此,当你知道 从  Γ ⊢ e:α 得到 Γ ⊢ e:β 时,那么,肯定有 Γ ⊢ α ≡ β。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值