10、逻辑程序动态调度的目标无关挂起分析

逻辑程序动态调度的目标无关挂起分析

1. 引言

逻辑程序由逻辑组件和控制组件构成。选择合适的控制对于获得正确且高效的程序至关重要。近年来,延迟机制成为定义控制的流行方式之一,它能延迟子目标的选择,直到满足特定条件。延迟在处理否定、延迟非线性约束、确保终止、改进搜索和模拟并发等方面发挥着重要作用。然而,推理带有延迟的逻辑程序非常困难,程序员常面临的问题是,确定给定程序和目标是否会陷入某个子目标无限挂起的状态。

以往的抽象解释方案通过模拟操作语义,使用抽象状态集合跟踪程序执行,属于目标相关分析。本文提出一种目标无关的挂起分析方法,该方法不是验证特定目标是否会导致挂起,而是推断出不会导致挂起的一类目标。这种新方法的计算优势在于,程序员无需为不同的(抽象)查询重新运行分析。

此外,该分析还从新的视角处理挂起分析,即验证带有延迟的逻辑程序能否使用局部选择规则进行调度。在局部选择规则下,所选原子会被完全解析,其直接或间接引入的原子也会在选择其他原子之前被解析。最左选择就是局部选择的一个例子。了解局部选择下的挂起情况本身就很有用,而且它与反向推理配合得很好。任何在局部选择下被证明无挂起的程序,在更通用的选择规则下显然也是无挂起的。

本文的贡献总结如下:
- 进行目标无关的挂起分析。
- 该分析虽技术复杂,但可归结为两个简单的自底向上的不动点计算(lfp 和 gfp),这使得它易于实现。lfp 用于计算成功模式,这些模式在 gfp 计算中用于模拟复合目标的子目标绑定变量的方式。
- 该分析与 Debray 等人提出的简单而成功的挂起框架类似,能推断最左选择下的无挂起性。本文的分析还考虑了所有局部选择规则,在可处理性和精确性之间取得了良好的平衡。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值