Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
• T-Var Variables are simply pulled from the context.<br />
• T-Lam lambdas introduce a typed variable into the environment when inferring the body.<br />
• T-App Applications of a lambda with type t1 -> t2 to a value of type t1 yields a value of type<br />
t2.<br />
x : σ ∈ Γ<br />
Γ ⊢ x : σ<br />
Γ, x : τ 1 ⊢ e : τ 2<br />
Γ ⊢ λx : τ 1 .e : τ 1 → τ 2<br />
Γ ⊢ e 1 : τ 1 → τ 2 Γ ⊢ e 2 : τ 1<br />
Γ ⊢ e 1 e 2 : τ 2<br />
Γ ⊢ c : Bool Γ ⊢ e 1 : τ Γ ⊢ e 2 : τ<br />
Γ ⊢ if c then e 1 else e 2 : τ<br />
Γ ⊢ n : Int<br />
Γ ⊢ True : Bool<br />
Γ ⊢ False : Bool<br />
(T-Var)<br />
(T-Lam)<br />
(T-App)<br />
(T-If)<br />
(T-Int)<br />
(T-True)<br />
(T-False)<br />
e evaluation rules describe the nature by which values transition between other values and determine<br />
the runtime behavior of the program.<br />
e 1 → e ′ 1<br />
e 1 e 2 → e ′ 1 e 2<br />
e 2 → e ′ 2<br />
v 1 e 2 → v 1 e ′ 2<br />
(λx : τ.e 1 )v 2 → [x/v 2 ]e 1<br />
if True then e 2 else e 3 → e 2<br />
if False then e 2 else e 3 → e 3<br />
e 1 → e ′ 1<br />
if e 1 then e 2 else e 3 → if e ′ 1 then e 2 else e 3<br />
(E-App1)<br />
(E-App2)<br />
(E-AppLam)<br />
(E-IfTrue)<br />
(E-IfFalse)<br />
(E-If)<br />
Since we now have the notion of scoped variables for lambda, we will implement a typing environment<br />
Env as manifest as Γ in our typing rules.<br />
63