简单类型lambda演算的证明树

时间:2016-11-02 23:18:14

标签: lambda-calculus typed-lambda-calculus

我需要说明术语的类型

var test = new Promise(function(resolve) {
  resolve("getMe");
});

并使用证明树证明它。我很确定这是{2}作为((λx : int. (x ≤ 1)) 2) 的输入,然后比较2到1并返回x。这意味着该术语的类型为boolean。我只是不确定如何为它编写证明树。如果有人可以指出我的一些例子或解释如何做一个很好的类似问题。

1 个答案:

答案 0 :(得分:1)

我假设您正在讨论使用数据类型intboolean,术语_≤_12扩展的简单类型lambda演算,和打字派生规则

--------------------------------
Γ ⊢ _≤_ : int → int → boolean

------------
Γ ⊢ 1 : int 

------------                
Γ ⊢ 2 : int                 

使用这些以及标准STLC类型规则,您的字词类型 int → boolean,而是boolean,我们将在下面看到。此外,它降低到2 ≤ 1,因此应该很容易向您显示它是boolean

但是现在要了解它:输入派生树:

{x : int} ⊢ _≤_ : int → int → boolean       {x : int} ⊢ x : int             
----------------------------------------------------------------
                     {x : int} ⊢ x ≤_ : int → boolean                 {x: int} ⊢ 1 : int
                     --------------------------------------------------------------------
                                      {x: int} ⊢ x ≤ 1 : boolean

为了节省水平空间,让我们在新树中完成剩下的工作:

{x: int} ⊢ x ≤ 1 : boolean
----------------------------------------
{} ⊢ (λx : int. (x ≤ 1) : int → boolean               {} ⊢ 2 : int
-------------------------------------------------------------------
                 {} ⊢ ((λx : int. (x ≤ 1)) 2) : boolean ∎