有两种方法可以考虑 e:σ。一个是“表达式 e 具有类型 σ”,另一个是“表达式 e 和类型 σ 的有序对”。
将 Γ 视为关于表达式类型的知识,实现为一组表达式和类型对,e : σ。
旋转门⊢表示从左边的知识,我们可以推断出右边的内容。
因此可以阅读第一条规则 [Var]:
如果我们的知识 Γ 包含对 e : σ,那么我们可以从 Γ 推断出 e 具有类型 σ。
第二条规则 [App] 可以理解为:
如果我们从 Γ 可以推断出 e_0 具有类型 τ → τ',并且我们可以从 Γ 中推断出 e_1 具有类型 τ,那么我们可以从 Γ 中推断出 e_0 e_1 具有键入τ'。
通常写为 Γ, e : σ 而不是 Γ ∪ {e : σ}。
第三条规则 [Abs] 因此可以解读为:
如果我们从 Γ 扩展 x : τ 可以推断出 e 具有类型 τ',那么我们可以从 Γ 推断出 λx.e 具有类型 τ → τ'。
第四个规则 [Let] 留作练习。:-)
第五条规则 [Inst] 可以解读为:
如果我们从 Γ 可以推断出 e 具有类型 σ',并且 σ' 是 σ 的子类型,那么我们可以从 Γ 推断出 e 具有类型 σ。
第六条也是最后一条规则 [Gen] 可以解读为:
如果我们从 Γ 可以推断出 e 具有类型 σ,并且 α 在 Γ 中的任何类型中都不是自由类型变量,那么我们可以从 Γ 推断出 e 具有类型∀ασ。