具有联合类型的lambda项的特征


29

许多教科书都涵盖了lambda微积分中的交集类型。交集的键入规则可以定义如下(在带有子类型的简单键入的lambda演算的顶部):

ΓM:T1ΓM:T2ΓM:T1T2(I)ΓM:(I)

交叉点类型在归一化方面具有有趣的属性:

  • 一个lambda长期不使用键入的I治当且仅当它是强烈正火。
  • 一个lambda项接受一个不包含的类型,只要它具有正常形式。

如果不添加交集而是添加并集怎么办?

ΓM:T1ΓM:T1T2(I1)ΓM:T2ΓM:T1T2(I2)

具有简单类型,子类型和联合的lambda微积分是否具有任何有趣的相似性质?可以用工会打字的术语如何表征?


有趣的问题。您能否说来自OOP的接口与此相对应?
拉斐尔

Answers:


11

在第一个系统中,您所谓的子类型化是以下两个规则:

Γ,x:T1M:SΓ,x:T1T2M:S(E1)Γ,x:T2M:SΓ,x:T1T2M:S(E2)

它们对应于消除规则 ; 没有他们的结缔组织或多或少是无用的。

在第二个系统中(带有和,我们也可以向其中添加),上述子类型化规则无关紧要,我认为您想到的附带规则如下:

Γ,x:T1M:SΓ,x:T2M:SΓ,x:T1T2M:S(E)Γ,x:M:S(E)

就其价值而言,该系统允许键入(使用规则),不能仅使用具有规范形式但不进行强规范化的简单类型来键入。(λx.I)Ω:AAE


随机的想法:(也许这值得在TCS上提出)

这使我推测相关属性类似于:

  • 一个λ-术语承认不含有式当且仅当具有用于所有正常形式其具有正常的形态。(两项测试均未通过,但上述λ项通过了)MMNNδ
  • 一个λ-术语可以不使用被输入的规则当且仅当强烈标准化所有强烈正火。MEMNN

练习:证明我错了。

同样,这似乎是一个退化的案例,也许我们应该考虑将此人添加到图片中。据我所知,它将允许获得?A(A)


关于子类型化规则的要点是,它们表明并集类型不像交集(交集与箭头正交)一样自然。关于第二部分,我需要考虑更多。
吉尔(Gilles)“所以

如果您正在谈论联合类型,我认为回答了该练习。M=(λx.xx)(λy.y)
jmad 2012年

关于call / cc:它不仅需要lambda项(例如lambda-mu-terms或其他框架),而且类型系统更为复杂,逻辑系统,其中联合类型可能无关紧要。
jmad 2012年

@jmad:的确需要交集类型输入这个词:-(也许考虑工会和交叉在一起会很有意思?
斯特凡希门尼斯

我会对λ项可以与并集类型(具有交集类型的rs)进行键入而不是简单类型(具有交集类型的rs)的类型感兴趣。
jmad 2012年

16

我只想解释为什么相交类型非常适合用来描述归一化类(强,头或弱),而其他类型的系统则不能。(简单类型或系统F)。

关键区别在于您必须说:“如果我可以键入和那么我可以键入 ”。在非相交类型中,这通常是不正确的,因为一个术语可以重复:M2M1M2M1

(λx.Mxx)NMNN

然后键入意味着您可以键入两个出现,但不能键入相同的类型,例如 使用交集类型,您可以将其转换为: ,然后关键步骤现在真的很简单: 因此可以用交集类型键入。MNNN

M:T1T2T3N:T1N:T2
M:T1T2T1T2T3N:T1T2
(λx.Mxx):T1T2T3N:T1T2
(λx.Mxx)N

现在,关于联合类型:假设您可以使用某些联合类型键入,然后您也可以键入,然后获取某些类型但是您仍然必须证明,对于每个,似乎都是不可能的,即使是联合类型。(λx.xx)(λy.y)λx.xxS,T1,

x:T1T2Tnxx:S
ix:Tixx:SS

这就是为什么我认为对联合类型的规范化没有一个简单的特征。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.