Lemma.
规约使大小严格下降
Lemma. 规约使大小严格下降
采用 大小与深度 的大小函数与 一步规约 的十条规则. 若 ,则 . 因此,从 出发的任何规约链至多有 步,不存在无限规约链.
Proof.
对 作规则归纳( 规则归纳法 ), 按最后一步的规则分情形. 对 E-IfTrue 与 E-IfFalse,整项的大小是 ,结果只留下选中的一个分支,严格更小. 对 E-PredZero 与 E-IsZeroZero,,结果 或 的大小为 . 对 E-PredSucc, size(pred (succ nv)) = size(nv) + 2,结果是 nv. 对 E-IsZeroSucc, size(iszero (succ nv)) = size(nv) + 2 ≥ 3,结果 的大小为 . 对 E-Succ、E-Pred、E-IsZero,前提为 ,由 归纳假设 得 ;两边都只多包一层同一个一元节点,严格不等式仍成立. 对 E-If,前提为 ,由 归纳假设 条件部分变小,另两个分支与根节点不变,整项严格变小.
对步数:设 . 每一步大小至少减 ,所以 . 大小至少为 ,故 .
∎
这条引理说明规约链有限. 结合
求值器与一步规约一致
, 在
算术语言形式化的未展开前提
的资源与基础操作假设下, 反复调用
Rust 求值器
step
step
会在有限次返回后得到
None
None
. 测试实现时不能预先假定它恰好实现了规则,仍应检查每个返回后继是否更小. 这条引理不说明链的终点是值还是受阻的项;那个问题由类型安全回答.