递归程序的LTL模型检查与分布式系统中规则谓词检测
1. 递归程序的LTL模型检查
在递归程序的LTL模型检查方面,我们运用了后支配关系来优化算法。当处理控制流图时,会在特定节点停止分支扩展,并添加额外边以继续展开。具体来说,若有两个分支,会在节点n1处停止,然后添加边(ς0, n1),并从n1继续展开控制流图。
对于树节点σ = ⟨¯q, n, ¯g, ¯l⟩,当节点n有多个后继节点时,会为其直接后支配节点ipd(n)实例化一个半符号状态σipd = ⟨¯qipd, ipd(n), ¯gipd, ¯lipd⟩,并添加边(σ, σipd)。对于这条边,定义方程T (σ, bσσipd, σipd) = Σ(σ, bσσipd, σipd)。直观地说,如果存在从|[σ]|π到|[σipd]|π的匹配可达路径,赋值π应满足T (σ, bσσipd, σipd),这等价于Σ(σ, bσσipd, σipd)。对于分支中的每个节点σ′,会根据表4为Σ(σ′, bσ′σipd, σipd)定义方程。若存在函数项Σ(σ, bσσϵ, σϵ) ∈Undef(Φ),由于在ipd(n)处合并分支,会将Σ(σ, bσσϵ, σϵ)的方程改为Σ(σ, bσσϵ, σϵ) = T (σ, bσσipd, σipd) ∧ T (σipd, bσipdσϵ, σϵ)。
为了验证程序P = {p0, …, pk}是否满足LTL公式ϕ,我们实现了模型检查算法。具体操作步骤如下:
1. 使用LTL2BA构造ϕ的否定的Büchi自动机B¬ϕ。
2. 使用Zchaff求解器解决布尔可满足性实例。
3. 在1.6 GHz Intel机器(1Gb内存)上收集数据。
在对快
超级会员免费看
订阅专栏 解锁全文
42

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



