“在 EUF 中,同余闭包算法可对已登记等式原子传播“参数相等蕴含函数值相等”,并为 disequality 冲突重建等式链。在 LRA 中,SMT 单纯形求解器可从 tableau 行和活动…”
形式陈述 ​
量词自由线性实数算术的 theory solver 接收线性等式、不等式及其否定。弱不等式的否定仍可写成一个严格反向界,例如
不能直接塞成一条 tableau 边界。DPLL(T) 可以让 Boolean 层分裂这个析取,或由 theory solver 暂存 disequality,并在候选赋值命中等号时产生分裂。以下单纯形核心处理完成这些必要分裂后的一组合取。它把每个线性项引入 slack variable,把输入规范化为 tableau 等式
以及变量界
若 basic variable
本页算法只判定LRA 可满足性。虽然 tableau 和 pivot 来自线性规划,这里没有目标函数、约化成本或最优性判据;输出是一个可行赋值或不可行解释。严格不等式可用符号无穷小
直觉
Tableau 把所有线性关系保持为一张恒真的代数账本,变量界则规定每个数允许落在哪个区间。算法不反复重解方程组,而是让当前赋值沿一条可行方向移动;pivot 改变谁由方程决定、谁可自由贴在边界上。当某个越界 basic variable 想向内移动,却发现行中每个可调变量都已经被相反边界挡住,这一整行就直接解释了矛盾。
与优化 simplex 沿目标改善方向找最优顶点不同,SMT 只想找到任意理论模型。可行区域即使无界也已经成功;求解器无须判断目标是否能无限改善。增量接口和冲突 explanation 往往比几何顶点路径更重要。
例子与边界
先看一次可行修复。设 tableau 为
初始取 nonbasic
再看不可行情形
令
和
Disequality 给出另一类边界。约束
可满足,但可行集是
退化会让 pivot 不改变数值,错误规则可能循环;终止陈述必须指定精确算术和防循环选择。浮点残差很小也不等于逻辑可行,尤其严格界和相差悬殊的系数会放大误判。整数线性算术还需分支、cut 或其他离散推理,不能把实数 simplex 的模型直接舍入成整数模型。
推论与应用
在 DPLL(T) 中,新增 theory literal 只加入或收紧一个界,旧 tableau 可暖启动;回溯则恢复相应边界。求解器可在 Boolean total assignment 之前发现冲突,也可从界组合推出已登记原子,作为理论传播。Explanation 必须记录原始 literals,而不是只引用会随 pivot 改写的内部行。
现有优化单纯形法讨论目标、极点、无界改善与最优证书;本算法借用 pivot 机制,却把状态、终止结果和证书接口改造成 feasibility checking。把 SMT 返回的 SAT 说成“找到了最优解”,或把无界可行域报告为 “unbounded” 失败,都会混淆两个问题。
参考资料
- Bruno Dutertre and Leonardo de Moura, “A Fast Linear-Arithmetic Solver for DPLL(T),” CAV, LNCS 4144, Springer, 2006, pp. 81–94。
- Robert Nieuwenhuis, Albert Oliveras, and Cesare Tinelli, “Solving SAT and SAT Modulo Theories,” Journal of the ACM 53(6), 2006, pp. 937–977。
- Daniel Kroening and Ofer Strichman, Decision Procedures: An Algorithmic Point of View, 2nd ed., Springer, 2016, Chapter 7。