Skip to content

DPLL(T) 框架

DPLL(T) framework · DPLL(T) · Lazy SMT solving

让布尔搜索引擎与背景理论求解器通过一致性检查、解释子句和理论传播协作的惰性 SMT 框架。

条目类型
方法

形式陈述

DPLL(T) 为SMT公式 φ 建立 Boolean abstraction φB,把每个理论原子 A 映为命题变量 pA。布尔引擎维护带符号原子 trail M;theory solver 接收其中属于理论 T 的文字,并至少提供两个接口:check(M) 判定当前集合是否 T-一致,explain 为冲突返回 EM,满足

T¬eEe.

布尔层据此学习 theory lemma

eE¬e.

若 Boolean assignment 已满足 φB,且对应全部理论文字 T-一致并可构造共同理论模型,就返回 SMT SAT。若 Boolean 层在原子句与有效 theory lemmas 下根层冲突,则返回 SMT UNSAT。现代实现通常用CDCL作布尔引擎,但抽象框架不把特定分支、restart 或子句数据库策略写进理论接口。

Theory solver 还可提前返回由 M 推出的未赋值原子及解释,这一理论传播缩短布尔搜索。无论冲突还是传播,解释都必须在 T 中有效;仅返回一个内部状态码无法成为可学习子句的依据。

直觉

Boolean 层善于处理大量析取选择,理论层善于处理一组合取原子之间的数学约束。DPLL(T) 不让任一方独自承担全部公式:SAT 引擎先提出候选组合,理论求解器发现其中不可实现的局部核心,再把这个核心翻译成 SAT 能记住的子句。后续所有 Boolean 搜索都会避开同一理论矛盾。

这种惰性分工避免预先枚举理论的全部公理实例。Theory solver 可以增量保留等价类、tableau 或数组约束,随 trail push/pop 更新;布尔引擎则把理论解释当作普通 reason。接口越小,越容易证明协作可靠,但模型构造、组合理论与证书仍不能被省略。

例子与边界

在线性实数算术中取

φ=(x0x2)(x=1).

a,b,c 分别代表 x0,x2,x=1,Boolean abstraction 为 (ab)c。根层先传播 c;若 SAT 引擎选择 a,theory solver 检查 x0,x=1 后返回解释 {a,c},学习 ¬a¬c。在 c 为真时它传播 ¬a,原子句遂传播 b。集合 {b,c} 又要求 x2x=1,理论返回 ¬b¬c。现在 a,b 均假,与 ab 根层冲突,故公式 UNSAT。

每条 theory lemma 都可独立核验;若第一次解释错误地只含 a,学习 ¬a 就声称 Tx>0,会排除合法模型。另一个边界是 partial checking:某些 solver 只在 Boolean total assignment 后检查理论一致性,仍可完整但会探索更多伪模型;提前 check 与 propagation 是效率增强,不应冒充可靠性来源。

量词、非凸理论和多理论组合会扩大接口责任。一个 solver 对自身文字集返回“consistent”,不必然保证几个 solver 的局部模型能合成共同模型;组合过程还要交换共享等式或安排。超时与不完整实例化应返回 unknown,不能伪装成 SAT 或 UNSAT。

推论与应用

DPLL(T) 允许复用成熟 CDCL 的 watched literals、学习和 assumptions,同时为 EUF、LRA、数组等理论插入专用状态。Theory lemma 一旦加入布尔数据库可跨 restart 复用;若它依赖临时 assumption,必须让条件文字留在子句中,以免下一次增量查询错误继承无条件结论。

Proof-producing SMT 会把 Boolean resolution 与理论证明拼接。检查器需要验证每个 theory lemma 的理论有效性,再验证布尔归结最终导出空子句。模型端则需把 Boolean 原子值、理论赋值和未解释函数解释合成一个结构;只打印部分数值而不验证所有原子,不能算完整 SAT 证书。

参考资料
  • Robert Nieuwenhuis, Albert Oliveras, and Cesare Tinelli, “Solving SAT and SAT Modulo Theories: From an Abstract DPLL Procedure to DPLL(T),” Journal of the ACM 53(6), 2006, pp. 937–977。
  • Harald Ganzinger, George Hagen, Robert Nieuwenhuis, Albert Oliveras, and Cesare Tinelli, “DPLL(T): Fast Decision Procedures,” CAV, LNCS 3114, Springer, 2004, pp. 175–188。
  • Clark Barrett, Roberto Sebastiani, Sanjit A. Seshia, and Cesare Tinelli, “Satisfiability Modulo Theories,” in Handbook of Satisfiability, 2nd ed., IOS Press, 2021。
关系图谱5 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系