8-Typed Arithmetic Expressions

静态类型

Untyped Arithmetic Expressions 里有如下定义:

如果一个范式不是一个值,则称此项受阻

在这个小型语言里引入两个类型 Nat Bool,来区分布尔值项和数值项

断言“项 t 有类型 T”意味着 t 的运算结果的类型在运行之前就可以被确定,比如 succ 0;至于 if true then 0 else false 则不一定会指向任何一个类型

类型关系 / 类型规则

算术表达式的类型关系记为 t : T

pFuib0U.png

定义:算术表达式的类型关系是项和类型的最小二元关系;t 是可类型化的 typable / well-typed 指存在某个 T 使 t : T

引理:(类型关系的逆)pFuiXtJ.png

类型推导与无类型算术表达式的求值类似

安全性 = 进展 + 保持 Safety = Progress + Preservation

进展:一个良类型项 well-typed 项不会处于受阻 stuck 状态,即如果 t 是一个良类型的,那么 t 要么是一个值,要么是存在 t' 使得 t → t'

保持:一个良类型项经过一步求值得到的项仍然是良类型的,即如果 t : T → t' 那么 t' : T

这两个性质告诉我们一个良类型项在求值过程中不会受阻,进展和保持可以由归纳证明

posted @ 2024-01-28 11:34  sysss  阅读(5)  评论(0编辑  收藏  举报