函数式程序到命令式程序的自动精化实现
1. 精化规则基础
在程序精化的过程中,有一些重要的规则。例如,结果规则允许加强前置条件、弱化后置条件以及精化非确定性结果,其形式为:
[
[[\Gamma_1 \Rightarrow_A \Gamma’_1; \text{hnr } \Gamma’_1 c \Gamma_2 R m; \Gamma_2 \Rightarrow_A \Gamma’_2; m \leq m’]] \Rightarrow \text{hnr } \Gamma_1 c \Gamma’_2 R m’
]
对于递归,有如下规则:
assumes cf af ax px. [[
ax px. hnr (Rx ax px ∗Γ) (cf px) (Γ ′ ax px) Ry (af ax)]]
=⇒hnr (Rx ax px ∗Γ) (Fc cf px) (Γ ′ ax px) Ry (Fa af ax)
assumes (x. mono Heap (λf. Fc f x))
assumes precise Ry
shows hnr (Rx ax px ∗Γ) (heap.fixp fun Fc px) (Γ ′ ax px) Ry (rec Fa ax)
直观上,在假设具体递归函数 cf 精化抽象递归函数 af 的情况下,我们需要证明具体函子 Fc 精化抽象函子 Fa 。调用的参数通过精化断言 Rx
超级会员免费看
订阅专栏 解锁全文

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



