文章目录
章节2 结构归纳法
上一章定义的r关系是一个函数,但我们如何证明?这里有一个半正式的证明:
r关系由一对约束定义。第一个约束为以 f 开头的•表达式,结果由表达式的右侧部分唯一确定。第二个约束为以 f 开头的•表达式,结果被唯一确定为 t 。因为一个表达式仅可以以f或者t开头,所以只有一个约束会被应用,因此结果也是唯一的。
上述的论点是相当有说服力的,因为它以来于一个表达式直接可观察的性质:这个表达式由 f 还是 t 开头。其他关于 B 的关系可能不那么容易证明。例如,我们并不显而易见地发现 evalr 是一个函数。其根本原因是因为B是递归定义的,并没有能够直接列举所有有趣的案例的方法。所以,为了证明更加一般的论点,我们必须使用 归纳法 。
数学归纳法是以自然数为基础的。通常的证明过程为:
- 证明当 n = 0(1) 时成立。
- 假设 n = m 时成立,那么可以推导出在 n = m + 1 时论点也成立。
在大多数情况下,在我们将要考虑的证明中,并没有为集合元素提供肉眼可见的自然数 n,但是在论证一个表达式属于某个集合的过程中,可以基于论证的步骤数为表达式派生出我们所需要的自然数 n。
抛开为数学归纳法反复寻找合适的自然数的过程,我们将会使用 结构归纳法 ,它直接作用于语法定义的集合元素,其基本原理与数学归纳法一致。
2.1 结构归纳法的要素
结构归纳法应用在证明一个没有递归定义的