函数逻辑程序的修正:混合方法与实践
1. 引言
在函数逻辑编程领域,开发先进的调试和修正工具至关重要。尽管当前已有辅助程序设计、开发和调试的现代环境,但缺乏将调试与程序综合集成到统一框架的理论基础。本文旨在提出一种新方法,用于自动合成正确的函数逻辑程序,将调试和合成有效结合,以提高编程效率。
此前已提出一种通用诊断方法,可对急切求值(按值调用)和惰性求值(按名调用)的集成语言进行诊断。该方法基于连续的直接后果运算符,通过与程序关联的单一步骤检查程序相对于预期规范的正确性。预期规范可以有多种表达方式,如另一个函数逻辑程序、断言语言或方程集。
本文提出的方法基于抽象解释,构建过近似和欠近似规范 (I^+) 和 (I^-),通过简单的静态测试确定程序子句是否有误。调试系统 Buggy 是该方法的实验性实现,允许用户通过函数逻辑程序指定具体语义。此外,还提出了一种基于示例引导展开的初步修正算法,但该纯演绎学习器在原错误程序过度特化时无法应用。因此,本文开发了一种新的程序修正器,结合了自上而下和自下而上的合成技术。
2. 预备知识
- 重写系统和函数逻辑编程 :为简化定义,考虑单排序情况,可轻松扩展到多排序签名。(V) 表示可数无限的变量集,(\Sigma) 表示具有固定元数的函数符号集。(\tau(\Sigma \cup V)) 和 (\tau(\Sigma)) 分别表示非基词(或项)代数和基于 (\Sigma \cup V) 和 (\Sigma) 构建的词代数。(\tau(\Sigma)) 通常称为 Herbrand 全域 (H_{\Sigma}),记为 (H),(B) 表示 Herbrand
超级会员免费看
订阅专栏 解锁全文
17万+

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



