中文

通过 SAT 求解进行模型与程序修复

计算机科学中的逻辑 2008-04-15 v4

摘要

我们考虑以下\emph{模型修复问题}:给定一个有限 Kripke 结构 MM 和某个模态或时序逻辑中的规范公式 η\eta,确定 MM 是否包含一个满足 η\eta 的子结构 MM'(具有相同的初始状态)。因此,可以通过删除某些转换来“修复”MM 以满足规范 η\eta。我们将模型修复的一个实例 (M,η)(M, \eta) 映射为一个布尔公式 \repfor(M,η)\repfor(M,\eta),使得 (M,η)(M, \eta) 有解当且仅当 \repfor(M,η)\repfor(M,\eta) 是可满足的。此外,一个满足赋值决定了必须从 MM 中删除哪些转换以生成 η\eta 的模型 MM'。因此,我们可以使用任何 SAT 求解器来修复 Kripke 结构。此外,使用完备的 SAT 求解器可产生一种完备算法:如果存在修复方案,它总能找到。我们将该方法扩展至修复有限状态共享内存并发程序,求解离散事件监督控制问题 \cite{RW87,RW89},检查对称解的存在性 \cite{ES93},并适应关于修复模型中状态和转换存在性的任何布尔约束。最后,我们证明了对于 CTL 以及那些 CTL 可在多项式时间内归约到的具有多项式模型检测算法的逻辑,模型修复是 NP 完全的。此类逻辑的一个显著例子是交替时序逻辑 (ATL)。

关键词

引用

@article{arxiv.0710.3332,
  title  = {Model and Program Repair via SAT Solving},
  author = {Paul C. Attie and Jad Saklawi},
  journal= {arXiv preprint arXiv:0710.3332},
  year   = {2008}
}

评论

29 pages, new repair features

R2 v1 2026-06-29T04:52:49.153Z