逻辑程序确定性推理与指针程序自动验证
1. 逻辑程序确定性推理
在逻辑程序中,确定性推理是一个重要的研究方向。从输入参数集到输出参数集的基础依赖关系,如果在输入参数为基础时,谓词的执行将任何输出参数绑定到单个基础项,则该依赖关系是确定性的。不过,有些提议无法处理多次计算相同输出的谓词。
一些确定性检查分析具有丰富的功能,能够对切割、条件语句进行推理,甚至通过整数规划来检查互斥性。这些工作也引发了一些关于确定性推理的有趣问题,例如如何适应切割操作以及确定性推理的难度如何。
确定性推理受到终止推理模块化构建的启发,终止推理由参数大小分析和反向分析等组件组成。在终止推理中,使用大小关系来推导足够的接地条件,以观察连续递归调用中的大小减小,从而实现终止。而反向分析则用于为从左到右执行的复合目标推导终止的充分条件。
与终止推理不同,确定性推理中大小问题主要与不同子句生成的答案的相对大小有关,而不是与调用本身相关。并且,终止推理直接应用特定框架,而确定性推理则不然。本文中的 gfp 利用先于它的调用的成功模式的合取,在子句体中的每个调用上传播确定性要求,这种结构能够实现效率的提升。
以下是相关概念的对比表格:
| 推理类型 | 主要关联因素 | 框架应用情况 | gfp 传播方式 |
| ---- | ---- | ---- | ---- |
| 终止推理 | 连续递归调用大小减小 | 直接应用特定框架 | 从右到左跨子句体传播要求 |
| 确定性推理 | 不同子句生成答案相对大小 | 未直接应用特定框架 | 利用先于它的调用的成功模式合取传播要求 |
超级会员免费看
订阅专栏 解锁全文
36

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



