Theorem.
算法可靠性
Theorem. 算法可靠性
取
Rust 类型检查算法
type_of
type_of
, 类型关系采用
类型与类型判断
. 实现论证采用
算术语言形式化的未展开前提
的资源与基础操作假设; Rust 的
Bool
Bool
、
Nat
Nat
分别对应 、. 对任意项 和类型 :若
type_of(t) = Some(T)
type_of(t) = Some(T)
,则 .
Proof.
对 结构归纳(
归纳证明的写法
).
type_of
type_of
本身按项的形状分支,所以每个情形对应一个分支.
若 是常量,
True
True
、
False
False
分支返回
Bool
Bool
,
Zero
Zero
分支返回
Nat
Nat
,分别是 T-True、T-False、T-Zero 的结论. 若 ,返回
Some(Nat)
Some(Nat)
意味着
type_of(t1) = Some(Nat)
type_of(t1) = Some(Nat)
,由
归纳假设
得 ,再用 T-Succ 即得 ;、 同理,分别用 T-Pred、T-IsZero. 若 ,返回
Some(ta)
Some(ta)
说明
type_of(c) = Some(Bool)
type_of(c) = Some(Bool)
、
type_of(a) = Some(ta)
type_of(a) = Some(ta)
、
type_of(b) = Some(ta)
type_of(b) = Some(ta)
;三次使用
归纳假设
分别给出 、、( 即
ta
ta
),恰好满足 T-If 的三个前提.
∎