Je suppose que vous parlez du lambda-calcul simplement typé étendu avec les types de données int
et boolean
, les termes _≤_
, 1
et 2
, et les règles de dérivation de frappe
--------------------------------
Γ ⊢ _≤_ : int → int → boolean
------------
Γ ⊢ 1 : int
------------
Γ ⊢ 2 : int
utilisant, et la norme STLC règles de typage, le type de votre terme est pasint → boolean
, plutôt, il est boolean
comme nous le verrons ci-dessous. En outre, il β-réduit à 2 ≤ 1
, donc cela devrait vous montrer assez facilement que c'est un boolean
.
Mais maintenant, à la viande de celui-ci: l'arbre de dérivation de frappe:
{x : int} ⊢ _≤_ : int → int → boolean {x : int} ⊢ x : int
----------------------------------------------------------------
{x : int} ⊢ x ≤_ : int → boolean {x: int} ⊢ 1 : int
--------------------------------------------------------------------
{x: int} ⊢ x ≤ 1 : boolean
Pour économiser de l'espace horizontal, nous allons faire le reste dans un nouvel arbre:
{x: int} ⊢ x ≤ 1 : boolean
----------------------------------------
{} ⊢ (λx : int. (x ≤ 1) : int → boolean {} ⊢ 2 : int
-------------------------------------------------------------------
{} ⊢ ((λx : int. (x ≤ 1)) 2) : boolean ∎