8-Typed Arithmetic Expressions
静态类型
在 Untyped Arithmetic Expressions
里有如下定义:
如果一个范式不是一个值,则称此项受阻
在这个小型语言里引入两个类型 Nat
Bool
,来区分布尔值项和数值项
断言“项 t
有类型 T
”意味着 t
的运算结果的类型在运行之前就可以被确定,比如 succ 0
;至于 if true then 0 else false
则不一定会指向任何一个类型
类型关系 / 类型规则
算术表达式的类型关系记为 t : T
定义:算术表达式的类型关系是项和类型的最小二元关系;t
是可类型化的 typable / well-typed
指存在某个 T
使 t : T
类型推导与无类型算术表达式的求值类似
安全性 = 进展 + 保持 Safety = Progress + Preservation
进展:一个良类型项 well-typed
项不会处于受阻 stuck
状态,即如果 t
是一个良类型的,那么 t
要么是一个值,要么是存在 t'
使得 t → t'
保持:一个良类型项经过一步求值得到的项仍然是良类型的,即如果 t : T → t'
那么 t' : T
这两个性质告诉我们一个良类型项在求值过程中不会受阻,进展和保持可以由归纳证明