HOL反射证明生成及其应用
1. 反射基础
在高阶逻辑(HOL)中,通常会使用 to inner 来反射外部HOL,不过对于依赖于 μ 的类型以及HOL的两个原始类型(布尔型和函数类型)除外。这是因为HOL的语义要求这两个原始类型分别由一个特定的双元素集合和集合论函数空间来解释。下面是专门用于映射这些类型的常量:
bool to inner b = if b then True else False
fun to inner ina inb f =
Abstract (range ina) (range inb) (λ x. inb (f (ina−1 x)))
接下来,我们要介绍一种算法,该算法可以为几乎任何HOL项生成一个证书定理,以断言该项的内部版本的语义与外部版本的反射相匹配。这个算法分两个阶段进行:首先忽略语义中常量的解释和变量的赋值,仅对它们进行假设;然后构建一个满足这些假设的解释和赋值。
2. 证明生成反射
以输入项 Suc x 为例,生成的证书定理如下:
⊢good context mem s i ∧wf to inner (to inner Num) ∧
lookup stm “Suc” = Some (Fun Num Num) ∧lookup sty “num” = Some 0 ∧
ity “num” [ ] = range (to inner Num)
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



