函数逻辑程序的纠错策略与实现
1. 示例集的生成
在对函数逻辑程序进行纠错时,首先要生成正例集和反例集。考虑缩减程序 $R^-$,由于它去除了错误规则,所以已经部分正确,但可能存在不完整的情况,即有些在规范 $I$ 中能覆盖的方程,在 $R^-$ 中无法覆盖。
通过应用特定的诊断方法,可以找出相对于预期语义抽象的未覆盖方程集 $E_1$ 和错误方程集 $E_2$。$E_1$ 中的方程可作为正例,代表程序 $R$ 应实现但缺失的证明;$E_2$ 中的方程则可作为反例,模拟错误行为。
由于 $E_1$ 和 $E_2$ 可能包含非基方程,为了进行基于项重写的标准优化,需要对它们进行实例化,得到基正例集 $E^+$ 和基反例集 $E^-$。同时,为了使归纳过程独立于规范 $I$ 中的额外辅助函数,只考虑形式为 $l = d$ 的基示例,其中 $l$ 是模式,$d$ 是构造项。为此,需要对实例化示例的右部项进行归一化处理,并忽略归一化后右部不是构造项的示例。
2. 特化算子
- 展开操作 :展开程序 $R$ 相对于规则 $r$,会得到一个新的特化版本,其中规则 $r$ 被通过对 $r$ 的右部或条件部分进行缩小步骤得到的新规则所替换。
- 定义 3(展开) :设 $R$ 是一个条件项重写系统(CTRS),$r \equiv (\lambda \to \rho \Leftarrow C) \in R$ 是一条规则。设 ${g_{\theta_i;\phi} (C’ i, \rho’_i = y)} {i = 1}^
超级会员免费看
订阅专栏 解锁全文

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



