形式陈述
设理论 T 1 , T 2 的非逻辑签名 Σ 1 , Σ 2 互不相交,只共享逻辑等号和相容的 sorts。理论 T i 在相关共享 sort 上称为稳定无限,若每个可满足的量词自由文字合取都有一个该 sort 论域无限的 T i -模型。Nelson–Oppen 方法判定组合理论 T 1 ∪ T 2 中的量词自由SMT 理路 可满足性模理论 Satisfiability modulo theories · SMT 判定一阶公式的布尔结构与指定背景理论是否具有同一个满足模型。 问题。
对一般布尔组合,先由布尔搜索选定一组带符号理论原子的合取;下面的组合判据应用于这一组候选,不把析取直接当成合取。随后做 purification:若一个 T 1 项内部含 Σ 2 的 alien subterm,就以新变量 v 替换,并把定义等式 v = t 放入 T 2 一侧;反向同理。得到纯文字合取 Γ 1 , Γ 2 ,它们只通过一组共享变量 V 相连。
V 上的 arrangement A 是一个完整一致的等式/不等式选择:对每个共享 sort,分别给该 sort 的共享变量选定等价类划分。同一 sort 的每对共享变量要么被 A 判等,要么判不等;不同 sort 的变量不组成等式原子。组合定理给出
在 中 可 满 足 Γ 1 ∧ Γ 2 在 T 1 ∪ T 2 中可满足 当且仅当存在 arrangement A ,使 Γ i ∧ A 分别在 T i 中可满足。签名不交使每个 solver 只解释自己的符号;稳定无限保证局部模型可扩张到相容基数,再沿共享变量等价类粘合。
直觉
两个 theory solvers 不交换内部公式,只协商“这些共同对象是否相等”。Purification 把跨理论嵌套拆成命名接口;arrangement 则像一份双方必须接受的共享对象身份证明。若某一方推出新等式,另一方把它当输入继续检查,直至冲突或达到共同一致。
稳定无限不是技术装饰。局部 solver 可能各自有模型,却分别被迫使用不同有限论域大小,导致无法粘合;允许把可满足模型扩成无限论域,便消除了这种纯基数冲突。签名互不相交同样关键:若两个 solver 同时给同一函数符号不同解释,仅交换等式不足以协调它们。
图片加载失败 共享等式暴露组合理论冲突
例子与边界
组合 EUF 与线性实数算术,考察
f ( x ) ≠ f ( y ) ∧ x ≤ y ∧ y ≤ x . 算术部分由LRA theory solver 理路 线性实数算术 SMT 的单纯形算法 LRA SMT simplex algorithm · Simplex for linear real arithmetic · SMT simplex 维护线性 tableau 与变量界以增量判定 LRA 文字合取可行性,并生成理论冲突解释。 推出共享等式 x = y 。把它交给 EUF 后,同余闭包 理路 同余闭包算法 Congruence closure algorithm · EUF congruence closure 计算地面项等式生成的最小函数同余,并以此判定 EUF 等式与不等式合取是否一致。 推出 f ( x ) = f ( y ) ,与输入 disequality 冲突。两侧原本各自可满足:LRA 可取 x = y = 0 ,EUF 在未获知 x = y 时可把 x , y 解释为不同元素;正是等式交换暴露了组合矛盾。
若组件理论是 convex 的,即
T ⊨ Γ → ( x 1 = y 1 ∨ ⋯ ∨ x k = y k ) 必然意味着其中某个单独等式已由 T ∪ Γ 蕴涵,那么反复传播必然等式即可。非 convex 理论可能只推出一个等式析取,却不推出任何单项;此时必须让 Boolean 层 case split 或枚举 arrangements,不能任意挑一个等式传播。
定宽位向量理论只有有限论域,通常不满足稳定无限;含共享非逻辑函数的理论也违反 signature-disjoint 假设。许多实用求解器有专门组合、bit-blasting 或 delayed theory combination 来处理这些情形,但它们不是原始定理的无条件实例。多 sort 场景还要逐个共享 sort 核对稳定无限性,不能只说“理论总体无限”。
推论与应用
Nelson–Oppen 为模块化 SMT 提供清晰边界:EUF、LRA、数组等组件可各自维护高效专用状态,只需通过共享等式协调。DPLL(T) 可把 arrangement 分支与 equality propagation 交给 Boolean 层,并把局部 theory conflicts 学成子句;组合方法决定哪些交换足以保证全局模型存在。
在单一共享 sort、共有 n 个变量的最坏情形中,完整 arrangement 对应它们的集合划分,数量是 Bell 数;其最坏增长为 2 Θ ( n log n ) 。上界可把每个变量映到至多 n 个块标号来估计;下界仅数偶数个变量的两两配对划分,就已有 n ! / ( 2 n / 2 ( n / 2 ) ! ) 种。逐对记录等式的接口虽只有 O ( n 2 ) 对,枚举全部相容划分仍可能成为主要开销。固定多 sort 时只枚举各 sort 内的划分,数量为对应 Bell 数的乘积,不超过同规模单 sort 的界。Convexity、equality propagation 和延迟分裂能减少枚举,却没有让任意组合自动高效。实现或教材在声称“可组合”时应同时列出签名、sort、稳定无限、convexity 与各组件判定完备性,而不是只列 solver 名称。
参考资料
Greg Nelson and Derek C. Oppen, “Simplification by Cooperating Decision Procedures,” ACM Transactions on Programming Languages and Systems 1(2), 1979, pp. 245–257。
Daniel Kroening and Ofer Strichman, Decision Procedures: An Algorithmic Point of View , 2nd ed., Springer, 2016, Chapter 10。
Clark Barrett, Roberto Sebastiani, Sanjit A. Seshia, and Cesare Tinelli, “Satisfiability Modulo Theories,” in Handbook of Satisfiability , 2nd ed., IOS Press, 2021。