规范化性质

维基百科,自由的百科全书
跳转至: 导航搜索

数理逻辑理论计算机科学中,一个重写系统规范化性质,如果所有项都是强规范化的;就是说所有重写序列都最终终止于规范形式的项。

纯粹无类型 lambda 演算不是强规范化的。考虑项 \lambda x . x x x。它有如下重写规则: 对于任何项 t

(\mathbf{\lambda} x . x x x) t \rightarrow t t t

但是考虑在应用 \lambda x . x x x 于自身时所发生的:

(\mathbf{\lambda} x . x x x) (\lambda x . x x x)  \rightarrow (\mathbf{\lambda} x . x x x) (\lambda x . x x x) (\lambda x . x x x)
  \rightarrow (\mathbf{\lambda} x . x x x) (\lambda x . x x x) (\lambda x . x x x) (\lambda x . x x x)
  \rightarrow (\mathbf{\lambda} x . x x x) (\lambda x . x x x) (\lambda x . x x x) (\lambda x . x x x) (\lambda x . x x x)
\ldots\,

所以项 (\lambda x . x x x) (\lambda x . x x x) 不是规范化的。

各种有类型 lambda 演算系统包括简单类型 lambda 演算Jean-Yves Girard系统F,和 Thierry Coquand构造演算都有规范化性质。

带有规范化性质的 lambda 演算系统可以被看作带有所有程序都终止性质的编程语言。尽管这是一个非常有用的性质,它也有缺点: 带有规范化性质的编程语言不可能是图灵完全的。这意味着有可计算函数不能在简单类型的 lambda 演算中定义(类似的有可计算函数不能在构造演算或系统 F 中计算)。

参见[编辑]